内容提要
PyPI 项目页面改版上线,新增安全标签页,集中展示发布文件的来源证明与证明状态:完整来源证明表示所有文件均有证明,无来源证明仅表示无法加密验证来源,不代表恶意。页面会提示来源证明不完整、不一致、变更或丢失等警告,帮助识别账号或发布流程被劫持的风险。项目详情页、发布文件与历史标签页同步改版,突出警告、文件来源状态及延迟上传文件,并扩充了包安全使用文档。
延伸解读
“无来源证明”不等于恶意,但需换用其他信任信号
文章明确区分了“无来源证明”与“恶意”:前者仅表示发布文件无法通过加密方式验证来源,常见于旧版本或尚未配置 Trusted Publishing 的项目。遇到这种状态时,文章建议转而参考维护者历史、发布模式和仓库活跃度等周边信任信号。对普通用户而言,这意味着安全标签页给出的是“可验证性”信息,而非直接的安全评级,不能把缺少证明简单等同于风险。
四类来源证明警告指向不同的排查方向
PyPI 将来源证明异常细分为四类:不完整(部分文件有证明)、不一致(同一版本文件来自不同构建系统或仓库)、变更(与上一版本来源不同)、丢失(此前有证明、本次改为无证明)。文章指出这些警告多数有合理解释,例如组织更名、仓库迁移或改用 API 令牌发布,但也可能是账号或发布流程被劫持的信号。读者应据此分别查看发布说明、证明元数据或官方渠道,而不是一概视为恶意。
延迟上传标记只适用于 2026 年 7 月前的版本
改版后的发布文件标签页会用橙色警告图标标出“延迟文件”,即在上传初始版本时间戳超过 14 天后才上传的文件。文章说明,这类警告只出现在 2026 年 7 月之前的版本上,因为此后 PyPI 已引入策略,拒绝在 14 天后上传新文件。理解这一时间边界,可以避免读者把旧版本上的延迟标记误读为当前仍存在的发布漏洞。
隔离状态优先于其他所有横幅提示
项目详情页改版后,来源证明警告会与撤回、归档、预发布等状态横幅一起显示在页面顶部。但文章特别指出,如果项目或版本处于隔离状态,页面只显示隔离横幅,因为它优先于其他所有警告和横幅。这意味着读者在看到隔离提示时,不应期待同时看到来源证明等细节;此时应优先按隔离状态处理,而非依赖其他安全信号做判断。
Q&A
PyPI 项目页面改版后新增了哪个标签页?主要功能是什么?
新增了安全标签页,专门展示发布文件的来源证明状态和每个文件的证明信息,帮助用户验证文件来源。
PyPI 上的“完整来源证明”是什么意思?
完整来源证明表示发布中的所有文件都有证明,证明类型可以是 PyPI Publish 证明或 SLSA Build Provenance 证明,或两者兼有。
如果 PyPI 显示“无来源证明”,是否意味着包是恶意的?
不是。无来源证明仅表示无法通过加密方式验证文件来源,并不一定代表恶意。用户应参考维护者历史、发布模式等信任信号来评估安全性。
PyPI 的来源证明警告有哪些类型?分别代表什么风险?
有四种警告:不完整来源证明(部分文件有证明)、不一致来源证明(文件来自不同构建系统或仓库)、来源证明变更(与之前发布来源不同)、来源证明丢失(之前有证明现在没有)。这些警告可能表明账号或发布流程被劫持。
改版后的项目详情页在布局和元数据展示上有什么变化?
来源证明警告显示在页面顶部,与撤回、归档、预发布等状态横幅并列;元数据按实用性排序,并标注为“PyPI 数据”或“经 PyPI 验证的数据”,取代了按验证状态分组的设计。
发布文件标签页和历史标签页有哪些改进?
发布文件标签页支持搜索和过滤,显示每个文件的来源证明状态,并用橙色警告图标标记延迟上传的文件(初始发布后超过14天上传)。历史标签页显示文件数量、来源证明状态和发布状态(隔离、撤回、归档或预发布)。