William Woodruff
2023年11月14日
开源, 供应链, 生态系统安全, 审计
本文与PyPI维护者联合发布;请在此阅读他们的公告!
本次审计由开放技术基金赞助,是其保护互联网关键基础设施使命的一部分。完整报告可在我们的出版物仓库中查阅。
PyPI(Python包索引)是Python生态系统的官方主要包索引仓库。它托管了75万用户上传的50万个独特Python包,每月服务超过260亿次下载(相当于每月为地球上每个人提供超过三次下载!)。因此,PyPI托发的分发版几乎成为所有Python程序的权威来源。此外,PyPI在全球广泛镜像,包括网络受限或受监控的国家。
2018年之前,PyPI是一个独立的大型遗留应用,积累了近二十年功能增长带来的技术债务。2016年至2018年进行了全面重写,最终推出Warehouse——当前支撑PyPI的代码库。此后陆续增加了重要功能,包括作用域API令牌、基于TOTP和WebAuthn的MFA、组织账户、密钥扫描和可信发布。
PyPI由多个组件构建而成,包括自身托管于PyPI的第三方依赖。审计聚焦两个核心组件:
我们对Warehouse代码库进行了全面审计,包括少量服务给浏览器的JavaScript。重点审查区域包括:
发现虽非高危但可能影响Warehouse可用性、完整性或托管分发版完整性的问题,包括一个可泄露私有账户信息的漏洞。经修复复核,所有问题已充分缓解或不对运营构成直接风险。
重点发现:
评估显示Warehouse符合行业最佳实践,包括100%分支覆盖率、自动化质量安全检查和依赖更新。
审计同样全面覆盖:
发现可能影响cabotage及其构建容器可用性/完整性的问题,包括两个可绕过访问控制或日志过滤的漏洞。经复核已充分缓解。
重点发现:
评估显示cabotage代码库成熟度低于Warehouse,存在单维护者、文档有限、缺少完整单元测试套件和CI/CD自动化等运营缺陷。
单元测试、自动化扫描和代码检查是安全开发生命周期的必要组成,但如报告所示,它们无法完全保证系统安全:人工代码审查对于捕捉跨流程和系统级缺陷仍然不可替代。
我们感谢PyPI维护者在审计过程中的紧密合作,特别感谢安全工程师Mike Fiedler在 engagement 期间的全周期文档和分类工作。
分享至:Twitter | LinkedIn | GitHub | Mastodon | Hacker News
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。