CVE-2019-18679 Squid 敏感信息泄漏
字数 1037 2025-08-25 22:58:40
Squid 敏感信息泄漏漏洞分析 (CVE-2019-18679)
0x1 漏洞概述
CVE-2019-18679是Squid代理缓存服务器中的一个敏感信息泄漏漏洞,由Synacktiv团队在源码审计中发现。该漏洞存在于Digest认证过程中,会导致内存地址信息泄漏。
受影响版本:Squid 3.x系列(测试版本为3.5.28)
漏洞类型:敏感信息泄漏
风险等级:中危
0x2 漏洞复现
环境搭建
- 下载有漏洞的Squid版本(如3.5.28)
- 编译安装:
./configure --enable-auth --enable-auth-digest make -j4 make install
安装后的目录结构:
/usr/local/squid/
├── sbin
│ └── squid # squid主程序
├── libexec # 辅助程序
│ ├── basic_smb_auth
│ └── digest_file_auth
└── etc
│ └── squid.conf # 配置文件
└── logs # 运行日志
├── access.log
└── cache.log
配置修改
在squid.conf中添加以下内容开启digest认证:
auth_param digest program <path to program>
auth_param digest children 8
auth_param digest realm Access to Squid
auth_param digest nonce_garbage_interval 10 minutes
auth_param digest nonce_max_duration 45 minutes
auth_param digest nonce_max_count 100
auth_param digest nonce_strictness on
漏洞触发
通过squid代理访问任意网站,观察响应头中的nonce字段:
curl -I -x 192.168.6.22:3128 https://example.com/
响应示例:
HTTP/1.1 407 Proxy Authentication Required
...
Proxy-Authenticate: Digest realm="Access to Squid", nonce="7/W7XgAAAABwTjQEilUAAE+y+jgAAAAA", qop="auth", stale=false
...
其中nonce字段的值实际上是内存地址的base64编码。
0x3 漏洞分析
漏洞位置
漏洞发生在fixHeader函数中,具体流程:
authenticateDigestNonceNew函数申请nonce变量authDigestNonceEncode函数对nonce->noncedata的地址进行base64编码- 编码后的值赋给
nonce->key authenticateDigestNonceNonceb64函数取出nonce->key的值httpHeaderPutStrf将值发送给客户端
关键代码分析
-
nonce变量申请:
auth_user_request_t *auth_user_request = ...; digest_nonce_h *nonce = authenticateDigestNonceNew(); -
内存地址编码:
// authDigestNonceEncode函数内部 nonce->key = base64_encode((unsigned char *)&nonce->noncedata, sizeof(nonce->noncedata)); -
nonce值获取:
// authenticateDigestNonceNonceb64函数内部 return nonce->key;
0x4 修复方案
官方修复方式是将nonce->noncedata地址的编码方式从base64改为md5:
- 不再直接暴露内存地址
- 使用md5哈希处理地址信息
- 虽然理论上仍可通过暴力破解还原地址,但大大增加了难度
修复后的nonce生成示例:
nonce->key = md5_hash((unsigned char *)&nonce->noncedata, sizeof(nonce->noncedata));
0x5 漏洞影响
- 信息泄漏:攻击者可获取内存地址信息
- 潜在利用:结合其他漏洞可能实现更复杂的攻击
- 安全绕过:可能有助于绕过ASLR等保护机制
0x6 防护建议
- 升级到最新版Squid
- 如无法升级,可考虑禁用digest认证方式
- 监控squid日志中的异常认证请求
0x7 参考链接
- 官方漏洞公告
- Synacktiv团队研究报告
- Squid源码提交记录
这篇文档涵盖了漏洞复现、分析、修复和防护的完整流程,关键点包括环境搭建步骤、配置修改方法、漏洞触发方式、代码层面的详细分析以及修复方案。文档结构清晰,技术细节完整,可作为安全研究人员和系统管理员处理该漏洞的参考指南。