关键信息 漏洞概述 描述: GuardDog的safe_extract()函数存在路径遍历漏洞,允许恶意PyPI包在GuardDog运行的系统上触发任意文件覆盖和远程代码执行。 CVE-ID: CVE-2026-22871 分类: CWE-22 (路径名到受限目录的不当限制) 等级: 高 影响版本和修复版本 受影响版本: 2.7.0及以下 修复版本: 2.7.1 漏洞代码 文件: guarddog/utils/archives.py 根因 评论关于 zip.extract() 在最初时误导了我;然后我注意到了 os.path.join() 的调用。 漏洞源于Python的 zipfile.ZipFile.extract() API的不正确使用: - path参数应该是目标目录,而不是完整的文件路径 - extract() 自动将成员名附加到路径 - 通过传递 os.path.join(target_directory, file),GuardDog导致成员名被附加两次 - 这破坏了Zipfile内置的路径遍历清理 攻击载体 1. 攻击者创建路径遍历文件名的恶意wheel 2. 上传到PyPI或直接分发: 3. 包扫描:guarddog pypi scan malicious-pkg 4. GuardDog下载解压包 5. 恶意文件写入任意位置 6. 可以实现代码执行 影响 影响取决于GuardDog的运行方式和环境。 关键场景 1. 即时代码执行 - 写入 ~/.bashrc → 在下次shell中执行 - 写入 ~/.profile → 登录时执行 2. 持久后门 - 写入 ~/.ssh/authorized_keys → SSH访问 - 写入 /etc/cron.d/malicious → 定时执行(如果root) - 写入systemd用户服务 → 持续执行 时间线 2026-01-05: 发现 2026-01-05: 报告 建议披露: 30天 记录 已报告: Charbel (dwbruijn)