执行供应链攻击模拟
概述
软件供应链攻击通过以下方式利用对包注册表的信任:域名抢注(注册与流行包相似的名称)、依赖混淆(发布与私有名称匹配的高版本公共包),以及被入侵的包分发。本技能通过以下方式检测这些攻击向量:计算包名与流行 PyPI 包之间的 Levenshtein 距离、通过 SHA-256 哈希比较验证包完整性、使用 pip-audit 扫描已知 CVE,以及测试依赖解析顺序的混淆漏洞。
前置条件
- Python 3.9+ 及
pip-audit、Levenshtein、requests - 访问 PyPI JSON API(https://pypi.org/pypi/{package}/json)
- 用于获取包元数据的网络访问
关键检测领域
- 域名抢注(Typosquatting) — 使用编辑距离阈值将包名与顶级 PyPI 包进行比较
- 依赖混淆(Dependency Confusion) — 检查内部包名是否以更高版本号存在于公共 PyPI 上
- 哈希验证 — 下载包并验证 SHA-256 摘要是否与已发布哈希匹配
- 漏洞扫描 — 对照 OSV 和 PyPA 咨询数据库审计已安装的包
- 元数据异常 — 标记具有可疑作者邮件、缺少主页或首次上传日期非常近的包
输出
JSON 报告,包含每个包的风险评分、检测到的攻击向量、哈希验证结果和 CVE 发现。