# GuardDog zip炸弹漏洞导致DoS
## 概述
GuardDog 是一个用于识别恶意 PyPI 包的命令行工具。在 2.7.1 版本之前,其 `safe_extract()` 函数在解压 ZIP 归档(如 wheel、egg 文件)时未验证解压后文件的大小,存在 ZIP 炸弹攻击风险。
## 影响版本
所有早于 2.7.1 的版本。
## 细节
`safe_extract()` 函数未对解压缩后的文件大小进行限制或验证,攻击者可构造恶意 ZIP 文件(如 zip bomb),使少量压缩数据解压后占用极大量的磁盘空间。
## 影响
攻击者可利用此漏洞导致磁盘空间耗尽,引发拒绝服务(DoS)。
是否为 Web 类漏洞: 未知
判断理由:
| # | POC 描述 | 源链接 | 神龙链接 |
|---|
标题: Zip Bomb Vulnerability in safe_extract() Allows DoS · Advisory · DataDog/guarddog · GitHub -- 🔗来源链接
标签:x_refsource_CONFIRM
神龙速读:
### 关键信息摘要
#### 漏洞概述
- **CVE ID**: CVE-2026-22870
- **严重性**: 高 (CVSS ~8)
- **受影响的版本**: 2.7.0及以下
- **已修复版本**: 2.7.1
#### 漏洞详情
- **受影响组件**: `guarddog/utils/archives.py` - `safe_extract()` 函数
- **漏洞类型**: CWE-409 - 对高度压缩数据(Zip炸弹)处理不当
- **攻击向量**: 网络(恶意软件包上传到PyPI/npm)或本地
#### 根因
`safe_extract()` 函数仅安全地处理了TAR文件,使用了`tarsafe`库,但在解压ZIP文件时未进行大小验证。
#### 缺失的保护措施
- ✗ 未设解压后文件大小限制
- ✗ 未验证压缩比率
- ✗ 未设文件数量限制
- ✗ 未设总解压大小限制
#### 影响
- **服务中断场景**
1. CI/CD管道受阻
2. 资源耗尽
3. 供应链攻击放大
#### 推荐修复
- 对ZIP文件增加大小验证,参考`tarsafe`对TAR文件的处理方式进行。
#### 时间线
- **发现**: 2025-01-04
- **上报**: 2025-01-04
- **建议披露**: 30天内
#### 引用及纪要
- **报告**: Charbel (dwbruijn)
标题: fixing bugs in archive · DataDog/guarddog@c3fb07b · GitHub -- 🔗来源链接
标签:x_refsource_MISC
神龙速读:
**项目信息:**
- 项目地址:DataDog / guarddog
- 代码仓库:GitHub
**提交信息:**
- 提交ID:c3fb07b
- 提交者:sobregosodd
- 提交时间:last week
**代码变更概述:**
- 文件名:guarddog/utils/archives.py
- 修改行数:+82 -100
**关键修改点:**
- 修复了`_is_unsafe_symlink`和`_is_unsafe_link`函数的逻辑,现在通过读取archive内容来检查符号链接和硬链接,而不是通过文件属性。
- 更新了`_check_compression_bomb`函数,移除了对 Hard links 的检查。并添加了对符号链接target的检查。
- 移除了`_is_unsafe_link`、`_is_device`这几个函数。
暂无评论