CVE-2020-11945 Squid未授权整数溢出分析

 聚焦源代码安全,网罗国内外最新资讯!

Squid cache(简称为Squid)是一个流行的自由软件(GNU通用公共许可证)的代理服务器和Web缓存服务器。Squid 的用途很多,可以作为网页服务器的前置cache服务器缓存相关请求来提高Web服务器的速度,也可以为一组人共享网络资源而缓存万维网、域名系统和其他网络搜索,以及通过过滤流量提高网络安全,在局域网通过代理上网等。



1

漏洞简介

Squid的HTTP Digest 认证在未授权的并且高并发的情况下存在整数溢出漏洞风险,随后导致UAF。Squid 的 HTTPDigest 认证是非默认开启。

漏洞基本信息

  • 公告:

    https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-11945

  • 作者:synacktiv

  • 影响版本:

    Squid 5.x -> 5.0.1

    Squid 2.x -> 2.7.STABLE9

    Squid 3.x -> 3.5.28

    Squid 4.x -> 4.10

  • 修复版本

    Squid 4.11 and 5.0.2

**注:本篇文章仅在上述条件下调试分析

2

漏洞分析

通过 patch 分析得出,溢出的是 references 字段:

CVE-2020-11945 Squid未授权整数溢出分析_第1张图片

CVE-2020-11945 Squid未授权整数溢出分析_第2张图片

references 溢出后会导致 _digest_nonce_h 数据结构提前释放,导致UAF:

CVE-2020-11945 Squid未授权整数溢出分析_第3张图片

创建_digest_nonce_h(会生成一个固定随机字符串凭证发送给用户)实例时references1,每个request 请求references字段会加一。request结束后references会减一。因为request请求到结束的时间较短,需要大量的并发数量的累加references导致触发漏洞。

Squid digest 认证配置:

auth_param digest program /usr/local/squid/bin/digest_file_auth -c  /usr/local/squid/digest.passwd
auth_param digest children 5
auth_param digest realm testrealm
auth_param digest nonce_garbage_interval 5 minutes
auth_param digest nonce_max_duration 30 minutes
auth_param digest nonce_max_count 50
acl test proxy_auth REQUIRED
http_access allow  test

1.首先获取一个服务器的 nonce 字段值:

CVE-2020-11945 Squid未授权整数溢出分析_第4张图片

 

2.通过nonce字段值,短时间高并发的发送报文

CONNECTtest.com:443 HTTP/1.1
Host:test.com:443
Proxy-Connection:keep-alive
User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100Safari/537.36
Proxy-Authorization:Digest username="11111", realm="33333",nonce="dcea472040e3be38250541e9a1f6b768",uri="browser.gwdang.com:443", response="b12b53054f24f91c4b15cf873f22e298",qop=auth, nc=00000001, cnonce="70c18c47cce02533"

在实验中,单台虚拟机中访问可达700多次,而需要累计超过32767次后触发漏洞,效果如下:

 

3

危害

使用该Digest验证的Squid服务器,理论上容易遭受远程DOS攻击,配合其它漏洞可能导致信息泄露和远程代码执行,但是在实际验证中,触发整数溢出不太容易,实际危害不大。

4

参考引用

https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-11945

https://github.com/squid-cache/squid/commit/eeebf0f37a72a2de08348e85ae34b02c34e9a811?diff=unified

https://www.openwall.com/lists/oss-security/2020/04/23/2

 

推荐阅读

【漏洞预警】Squid缓冲区溢出及拒绝服务漏洞安全预警通告

CVE-2020-0688 Exchange 远程代码执行分析

CVE-2020-0601漏洞详细分析

题图:Pixabay License

转载请注明“转自奇安信代码卫士 www.codesafe.cn”。

奇安信代码卫士 (codesafe)

国内首个专注于软件开发安全的

产品线。

    点个 “在看” ,加油鸭~

你可能感兴趣的:(CVE-2020-11945 Squid未授权整数溢出分析)