
包管理器: pip
受影响包: guarddog (pip)
受影响版本: < 2.7.1
已修复版本: 2.7.1
摘要
GuardDog 的 safe_extract() 函数在提取 ZIP 档案(如 wheels、eggs)时未验证解压缩后文件的大小,允许攻击者通过 zip 炸弹造成拒绝服务。一个恶意包可以用几兆字节的压缩数据消耗数吉字节的磁盘空间。
漏洞详情
guarddog/utils/archives.py 中的 safe_extract() 函数根本原因
safe_extract() 函数使用 tarsafe 库安全地处理 TAR 文件,但 ZIP 文件提取没有大小验证:
elif zipfile.is_zipfile(source_archive):
with zipfile.ZipFile(source_archive, "r") as zip:
for file in zip.namelist():
zip.extract(file, path=os.path.join(target_directory, file))缺少的保护措施:
影响
拒绝服务场景
建议修复
为 ZIP 文件添加类似于 tarsafe 为 TAR 文件提供的大小验证。
配置选项
通过环境变量或配置文件使限制可配置。
其他改进建议
致谢
报告者: Charbel (dwbruijn)
参考链接
严重等级: 高
CVSS 总体评分: 7.1 / 10
CVSS v4 基础指标
Exploitability 指标
脆弱系统影响指标
后续系统影响指标
EPSS 评分: 0.055% (第17百分位)
弱点: CWE-409
描述: 不当处理高压缩率数据(数据放大)
产品未处理或错误处理了具有极高压缩比、会产生巨大输出的压缩输入。
CVE ID: CVE-2026-22870
GHSA ID: GHSA-ffj4-jq7m-9g6v
源代码: DataDog/guarddog
贡献者: dwBruijn (报告者)FINISHED
glyoVzOLZA9nMhz/bDHDAWzfRfZ0dSZtQUalpUyOmxd2cHGL5ZCm1H+5D3UA9pwOPoSOsE38becOq2cExVjc4w==
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。