首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >PyPI安全审计深度解析:代码库漏洞与供应链防护

PyPI安全审计深度解析:代码库漏洞与供应链防护

原创
作者头像
qife122
发布2025-08-21 14:29:03
发布2025-08-21 14:29:03
830
举报

我们对PyPI的审计 - Trail of Bits博客

William Woodruff

2023年11月14日

开源, 供应链, 生态系统安全, 审计

本文与PyPI维护者联合发布;请在此阅读他们的公告!

本次审计由开放技术基金赞助,是其保护互联网关键基础设施使命的一部分。完整报告可在我们的出版物仓库中查阅。

PyPI

PyPI(Python包索引)是Python生态系统的官方主要包索引仓库。它托管了75万用户上传的50万个独特Python包,每月服务超过260亿次下载(相当于每月为地球上每个人提供超过三次下载!)。因此,PyPI托发的分发版几乎成为所有Python程序的权威来源。此外,PyPI在全球广泛镜像,包括网络受限或受监控的国家。

2018年之前,PyPI是一个独立的大型遗留应用,积累了近二十年功能增长带来的技术债务。2016年至2018年进行了全面重写,最终推出Warehouse——当前支撑PyPI的代码库。此后陆续增加了重要功能,包括作用域API令牌、基于TOTP和WebAuthn的MFA、组织账户、密钥扫描和可信发布。

审计与发现

PyPI由多个组件构建而成,包括自身托管于PyPI的第三方依赖。审计聚焦两个核心组件:

  • Warehouse:PyPI的"核心"前后端,包括pypi.org上多数公开可见视图、PEP 503索引、公共REST/XML-RPC API和管理员界面
  • cabotage:PyPI的持续部署基础设施,支持管理员通过GitOps风格部署

Warehouse

我们对Warehouse代码库进行了全面审计,包括少量服务给浏览器的JavaScript。重点审查区域包括:

  • 当前包提交主要机制"传统"上传端点
  • 允许特权管理员在生产环境执行敏感破坏性操作的管理员界面
  • 用户和项目管理视图
  • 认证授权方案及不同凭证(密码、API令牌、OIDC凭证)的权限处理
  • 第三方服务集成(GitHub密钥扫描、PyPA咨询数据库、AWS SNS邮件传递、外部对象存储)

发现虽非高危但可能影响Warehouse可用性、完整性或托管分发版完整性的问题,包括一个可泄露私有账户信息的漏洞。经修复复核,所有问题已充分缓解或不对运营构成直接风险。

重点发现

  • TOB-PYPI-2:弱签名验证可能允许攻击者操纵PyPI的AWS SNS集成
  • TOB-PYPI-5:攻击者可利用上传端点信息泄露进行账户有效性侦察
  • TOB-PYPI-14:弱加密哈希可能导致对象存储服务的缓存污染

评估显示Warehouse符合行业最佳实践,包括100%分支覆盖率、自动化质量安全检查和依赖更新。

cabotage

审计同样全面覆盖:

  • GitHub webhook事件处理及容器构建调度逻辑
  • 容器镜像构建与编排
  • 密钥处理和日志过滤
  • 用户界面表单和路由逻辑

发现可能影响cabotage及其构建容器可用性/完整性的问题,包括两个可绕过访问控制或日志过滤的漏洞。经复核已充分缓解。

重点发现

  • TOB-PYPI-17:通过命令注入可能获取cabotage背板控制权
  • TOB-PYPI-19:通过特制Procfile可能获取背板控制权
  • TOB-PYPI-20:因GitHub提交冒充可能部署看似合法但非认证的镜像

评估显示cabotage代码库成熟度低于Warehouse,存在单维护者、文档有限、缺少完整单元测试套件和CI/CD自动化等运营缺陷。

核心启示

单元测试、自动化扫描和代码检查是安全开发生命周期的必要组成,但如报告所示,它们无法完全保证系统安全:人工代码审查对于捕捉跨流程和系统级缺陷仍然不可替代。

我们感谢PyPI维护者在审计过程中的紧密合作,特别感谢安全工程师Mike Fiedler在 engagement 期间的全周期文档和分类工作。

分享至:Twitter | LinkedIn | GitHub | Mastodon | Hacker News

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 我们对PyPI的审计 - Trail of Bits博客
    • PyPI
    • 审计与发现
      • Warehouse
      • cabotage
    • 核心启示
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档