Language:Chinese VersionEnglish Version

Python 包索引托管了超过 50 万个软件包,每月提供数十亿次下载。这种规模使 PyPI 成为供应链攻击者极具吸引力的目标。在 2025-2026 年间,针对 Python 生态系统的供应链攻击变得更加复杂、频繁且破坏性更强——这些事件不仅影响个人开发者,还影响企业软件供应链和关键基础设施组件。

攻击向量概述

针对 Python 软件包的供应链攻击遵循几种不同的模式。Typosquatting(拼写混淆)注册与热门软件包名称略有拼写错误的软件包——例如用”requets”代替”requests”,用”boto”代替”boto3″——并发布恶意版本,在安装过程中执行恶意代码。这些攻击依赖于开发者在需求文件中的拼写错误和复制粘贴错误。

依赖混淆利用了当软件包同时存在于私有注册表和公共 PyPI 时,包管理器如何解析软件包名称的机制。攻击者在 PyPI 上发布一个与内部软件包同名但版本号更高的软件包。在检查私有注册表之前先检查 PyPI 的包管理器将安装攻击者的版本而不是内部版本。这种攻击已成功入侵多家大型企业,包括 2024-2025 年登上新闻的几家企业。

维护者账户接管代表了影响最大的攻击向量。如果攻击者入侵了受信任的软件包维护者的凭据,他们可以向合法且广泛使用的软件包发布恶意更新。对于拥有数万个依赖项的软件包,恶意更新在发布后几小时内就能达到数百万次安装。

2025-2026 年值得注意的事件

过去 18 个月中,Python 生态系统发生了几起重大的供应链事件。一系列 AI/ML 软件包被发现包含数据泄露代码,这些代码会静默地将环境变量(以及其中通常包含的 API 密钥和凭据)传输到攻击者控制的服务器。该攻击专门针对快速增长中的 ML 工具空间,那里的开发者安全审查较少且采用速度很快。

在另一起事件中,一个每周有 5 万次下载的合法数据处理软件包通过针对维护者 GitHub 账户的网络钓鱼攻击被入侵。攻击者发布了一个包含反向 shell 有效负载的小版本更新,该有效负载在满足特定条件的系统上激活——针对高价值环境,同时在开发环境中保持休眠状态以避免早期检测。

防御:依赖锁定

针对供应链攻击最有效的基线防御是严格的依赖锁定与哈希验证相结合。不要在 requirements.txt 中指定版本范围(如 requests>=2.28),而是使用 SHA256 哈希精确锁定版本(使用 pip 的 –hash 选项或 pip-tools 等工具)。这确保即使攻击者发布了恶意的新版本依赖项,您的构建也会失败,而不是静默安装被篡改的包。

锁定文件 — pip.lock、Pipfile.lock 或 poetry.lock — 使用版本锁定捕获完整的依赖树。将锁定文件视为安全工件:将它们提交到版本控制,在拉取请求中仔细审查变更,并要求安全意识审查人员对依赖更新进行批准。

防御:软件成分分析

软件成分分析(SCA)工具持续监控您的依赖树,查找已知漏洞、许可证合规问题和被标记为恶意行为的包。像 Snyk、FOSSA 和 GitHub Dependabot 这样的工具集成到 CI/CD 管道中,以阻止引入易受攻击或被标记的依赖项的部署。

PyPI 自身的恶意软件检测管道已显著改进,但它只是被动运行 — 在报告后删除包而不是防止发布。不要将 PyPI 的检测作为您的主要防御手段。假设恶意包在检测到之前偶尔会到达索引,并据此构建您的防御措施。

防御:私有包镜像

维护一个仅提供已审计包的私有包镜像,可以消除在您上次审计后发布到 PyPI 的包带来的风险。像 Artifactory、Nexus 和 Devpi 这样的工具支持带有包审批工作流的私有镜像。配置您的 Python 环境以使用您的私有镜像作为主要索引,仅将 PyPI 作为未在批准列表中的包的备用源。

对于高安全性环境,在包级别实施白名单 — 精确指定允许哪些包和版本 — 提供最强的供应链保证。维护白名单的运营成本很高,但对于供应链妥协将是灾难性环境,它通常是提供足够保证的唯一控制措施。

事件响应

当检测到供应链妥协时,快速的范围评估至关重要。识别安装了被篡改包的所有环境,确定安装时间线,并评估恶意代码可能访问的内容 — 凭证、API 密钥、内部网络访问。假设最坏的情况,在调查是否实际被访问之前,轮换所有从被篡改环境中可访问的凭证。

Python 生态系统的开放性是一个特性,而非缺陷——它促成了协作创新,使 Python 具有价值。但开放性要求安全责任分布在所有参与者之间:包作者、注册表操作者和包使用者。2026 年的威胁环境要求包使用者将依赖管理视为一项安全关键实践,而非行政事后的考虑。

Leo Bernardini
Leo Bernardini📍 Milan, Italy

Cloud Infrastructure Writer covering multi-cloud resilience, disaster recovery architecture, and the EU Data Act's impact on cloud sovereignty. Regular speaker at CloudConf and ItaliaSec.

More by Leo Bernardini →

By Leo Bernardini

Cloud Infrastructure Writer covering multi-cloud resilience, disaster recovery architecture, and the EU Data Act's impact on cloud sovereignty. Regular speaker at CloudConf and ItaliaSec.

33 thoughts on “针对Python包的供应链攻击:2026年威胁态势”
  1. N|这个标题真是让人心惊肉跳,我们公司对Python依赖挺重的,这文章得看看了。

  2. N|2026年供应链攻击?感觉现在这问题就挺严重的,这篇文章得深入研究一下。

  3. N|作为初级工程师,得时刻警惕这种攻击,这篇文章对我是有启发意义的。

  4. N|这篇文章太及时了,我最近也在做Python包管理,这威胁态势得好好研究研究。

  5. N|高级开发者来说,了解供应链攻击的态势很有必要,这篇文章必须看看。

  6. N|说实话,我以前没想过Python包也会有供应链攻击,这篇文章让我长知识了。

  7. N|我们公司现在大量使用Python,这篇文章提到的威胁态势,我得反馈给团队。

  8. N|作为一名产品经理,确保我们的Python包安全至关重要,这篇文章让我更有信心了。

  9. N|这文章提到的供应链攻击手段,我在一些其他技术栈上见过,有点触类旁通的感觉。

  10. N|技术爱好者来说,这文章挺有意思的,让我对这个领域有了更深入的了解。

  11. N|学生时代做Python项目时,得注意这个问题,这篇文章对我有很大帮助。

  12. N|我的技术栈是Java,但Python我也经常用到,这篇文章让我对其他技术栈的安全问题也有了个大致了解。

  13. N|这篇文章让我对供应链攻击有了更深入的认识,感觉我之前的想法太简单了。

  14. N|我们公司在金融行业,Python应用广泛,这篇文章对提升我们的安全防护很有帮助。

  15. N|作为一名开发者,我得时刻提醒自己,不能只关注代码本身,还要关注背后的安全风险。

  16. N|感觉现在很多安全问题,都是因为供应链出了问题,这篇文章提到的态势值得注意。

  17. N|这篇文章提到的供应链攻击手段,我在一些其他技术栈上见过,有点触类旁通的感觉。

  18. N|作为一名产品经理,确保我们的Python包安全至关重要,这篇文章让我更有信心了。

  19. N|这篇文章让我对供应链攻击有了更深入的认识,感觉我之前的想法太简单了。

  20. N|我们公司在金融行业,Python应用广泛,这篇文章对提升我们的安全防护很有帮助。

  21. N|作为一名开发者,我得时刻提醒自己,不能只关注代码本身,还要关注背后的安全风险。

  22. N|感觉现在很多安全问题,都是因为供应链出了问题,这篇文章提到的态势值得注意。

  23. N|这文章提到的供应链攻击手段,我在一些其他技术栈上见过,有点触类旁通的感觉。

  24. N|作为一名产品经理,确保我们的Python包安全至关重要,这篇文章让我更有信心了。

  25. N|这篇文章让我对供应链攻击有了更深入的认识,感觉我之前的想法太简单了。

  26. N|我们公司在金融行业,Python应用广泛,这篇文章对提升我们的安全防护很有帮助。

  27. N|作为一名开发者,我得时刻提醒自己,不能只关注代码本身,还要关注背后的安全风险。

  28. N|感觉现在很多安全问题,都是因为供应链出了问题,这篇文章提到的态势值得注意。

  29. N|这文章提到的供应链攻击手段,我在一些其他技术栈上见过,有点触类旁通的感觉。

Leave a Reply

Your email address will not be published. Required fields are marked *

You missed