针对 pip 包 pantheon-agents 的一则 严重警示于 8 月 26 日 UTC 时间 14:36 发布到 GitHub Advisory Database。相关事件发生在 2026 年 6 月。这两个日期之间相隔 72 天,而这还只是这条记录问题中最轻的一个。
攻击者做了什么
维护者的 PyPI 账户在一次供应链攻击中被入侵,版本 0.6.1 和 0.6.2 被直接上传到 PyPI。这些发布包含一个 .pth 文件——Python 会在解释器启动时自动执行这一机制,早于任何代码运行——它会下载一个 JavaScript 运行时,并搜集环境变量、API 密钥、SSH 密钥和云凭据。导入该包从来都不是必要条件。只要把它安装到一个之后会启动 Python 的环境中,就已经足够。
干净的部分
这则警示对影响范围的说明非常明确:“只有 PyPI 工件受影响。GitHub 源代码仓库、其 git 标签以及所有其他分发渠道都是干净的。”任何从源代码引入,或固定到某个 git 标签的人,从未暴露。这里是分发被攻破,而不是代码被攻破;这正是带哈希锁定的 lockfile 本应发现、而宽松版本范围则不会发现的情形。
常见表述错在哪里
一则“已修复版本”字段写着 0.6.4 的警示,会向所有扫描器和依赖机器人传达同一信息:升级到 0.6.4 就安全了。但同一警示的正文却写明,PyPI 分发已暂停,并且“将在账户恢复并迁移至 PyPI Trusted Publishing(OIDC)后恢复”,并指引用户改为从 GitHub 源代码安装。也就是说,可供机器读取的修复指向了一个注册表并不提供的版本,而给人看的修复建议则是停止使用该注册表。自动化工具只会读取第一项,而不会读第二项。让机器人据此采取行动的团队,将会发起一条无法解析的拉取请求。
而且没有 CVE
这条记录没有 CVE 编号。那些以 CVE 为核心进行漏洞管理的机构——而这类机构在正式流程中占多数——根本不会看到它。因此,对一个 AI agent 框架的、严重的凭据窃取型入侵,只能被直接摄取 GitHub advisory 的工具看见,而且还是在事发 72 天后,且修复字段指向了一个包无法获取的地方。
应当审计的是暴露窗口
恶意工件已经从 PyPI 移除,所以实际问题不是你现在还能不能安装它们,而是你是否在 6 月到它们被移除之间安装过它们。任何在那段时间解析到 pantheon-agents 0.6.1 或 0.6.2 的 CI 运行器或开发者机器,都应被视为其环境变量和云凭据已被读取。需要的是轮换,而不是升级。
