0x00 漏洞背景
Squid 是一款受欢迎的开源代理服务器和缓存应用,支持HTTP、HTTPS、FTP等多种网络协议,使用广泛。
2019年11月5日,Squid官方公开了一个缓冲区溢出漏洞信息,远程攻击者可通过向目标服务器发送精心构造的HTTP请求利用此漏洞,可能导致远程代码执行,漏洞编号为CVE-2019-12526。
360CERT建议使用Squid的用户及时安装最新补丁,以免遭受黑客攻击。
0x01 影响版本
Squid 2.x版本不受影响
影响Squid 3.x 至 3.5.28 版本(包括3.5.28)
影响Squid-4.x 至 4.8 版本(包括4.8)
0x02 漏洞描述
漏洞函数在于/src/urn.cc:urnHandleReply()
urnHandleReply() 函数在从缓冲区复制entry过程中可能被调用多次,所以每次使用的缓冲区长度应该是进行相应更新,修复漏洞前,tempBuffer.length始终赋值为URN_REQBUF_SZ。
显然此时传入的copyRequest.offset + copyRequest.length > URN_REQBUF_SZ,所以由于Squid在处理URN过程中不正确的缓冲区管理,可能造成缓冲区溢出。
因此修复补丁将tempBuffer.length赋值为URN_REQBUF_SZ – urnState->reqofs,为上一次调用剩余的缓冲区长度。
0x03 修复建议
(1)Squid官方已在Squid 4.9版本中修复此漏洞,用户可更新至该版本
(2)Squid 4.x版本可以更新漏洞修复补丁:
(3)禁用urn:
acl URN proto URN
http_access deny URN
0x04 时间线
2019-09-15 Squid官方发布相应补丁
2019-11-05 Squid官方公布漏洞信息
2019-11-07 360CERT发布预警通告
0x05 参考链接
- http://www.squid-cache.org/Versions/v4/changesets/squid-4-7aa0184a720fd216191474e079f4fe87de7c4f5a.patch
- http://www.squid-cache.org/Advisories/SQUID-2019_7.txt
欢迎加入360-CERT团队,请投递简历到 caiyuguang[a_t]360.cn