摘要:
当libcurl在编译时禁用libpsl(公共后缀列表)支持后,其对Cookie的Domain属性验证存在缺陷。该缺陷允许恶意服务器为公共后缀(如.co.uk)设置Cookie,并使其能够被共享同一Cookie Jar的其他无关同级域名发送,从而构成安全风险。
复现步骤:
- 构建无libpsl支持的curl:例如使用命令
./configure --disable-shared --without-libpsl && make -j,并确认curl --version输出中未列出PSL功能。 - 运行恶意HTTP服务器:该服务器在请求的Host头以
attacker.co.uk开头时,会设置Cookie:Set-Cookie: sess=attack; Domain=.co.uk; Path=/。 - 存储Cookie:执行命令
/tmp/curl/src/curl -v --resolve attacker.co.uk:8000:127.0.0.1 http://attacker.co.uk:8000/ -c /tmp/cjar2。 - 在其他主机上重用Cookie Jar:执行命令
/tmp/curl/src/curl -v --resolve victim.co.uk:8000:127.0.0.1 http://victim.co.uk:8000/ -b /tmp/cjar2。 - 观察结果:可以看到Cookie
sess=attack被发送到了victim.co.uk,且.co.uk被存储在了Cookie Jar中。
影响:
恶意服务器可以向公共后缀域注入Cookie,并使其被发送到其他无关的域名。这对于在多个域名间共享同一个Cookie Jar的应用程序而言,可能导致会话固定或请求中毒攻击。
开发者评论与状态:
- jimfuller2024 (curl staff):确认收到报告并开始调查。
- bagder (curl staff):
- 指出如果curl在编译时禁用PSL支持,则其无法阻止此类“超级Cookie”。curl的
-b选项文档已明确说明了此行为。 - 将报告状态改为 Not Applicable(不适用),认为这不属于安全问题。
- 随后根据项目的透明度政策,请求并公开披露了此报告。
- 指出如果curl在编译时禁用PSL支持,则其无法阻止此类“超级Cookie”。curl的
报告元数据:
- 报告ID:#3475472
- 报告者:pwnie
- 报告时间:2025年12月22日 UTC 16:34
- 披露时间:2025年12月25日 UTC 16:54
- 严重性:无评级(—)
- CVE ID:无
- 赏金:隐藏