PyPI(Python Package Index)是Python生态的核心仓库,但最近一个趋势正在让安全研究者担忧:AI生成的代码正在以前所未有的速度涌入这个平台。
根据开发者Artem Golubin的监测数据,自2025年以来,PyPI每周新发布的软件包数量增长了30%。这个增长曲线在近几个月尤为陡峭,几乎呈指数级上升。背后的主要驱动力,正是AI辅助编程工具的普及——任何人只需要几分钟就能生成并发布一个"可用"的Python包。

这种爆发式增长正在给PyPI的维护者带来巨大压力。存储需求持续攀升,每周下载量也在增长,而支撑PyPI运营的Python软件基金会(PSF)是一个依赖捐赠的非营利组织。当垃圾包的增长速度远超资源增长时,系统的可持续性就成为一个严肃的问题。
AI包的质量之忧
Golubin同时开发了一款名为Hexora的恶意Python代码检测工具,用于实时监控PyPI上新发布的包并进行分析。他的发现揭示了一个令人不安的现象:大量新发布的包完全是"vibecoded"(凭感觉写代码)的产物,它们会触发大量误报。
这些包有一个共同特点:滥用eval、exec和subprocess调用——而这些操作在Python中完全可以避免。Eval和exec用于动态执行代码,是恶意软件常用的隐藏载荷手段。虽然单独使用eval的信号强度较低,但当敏感数据被传递其中,或者代码呈现混淆特征时,就构成了明确的红色警报。
形似恶意软件的"正常"代码
Golubin举例说明了问题的严重性。某包会读取Python代码、以字符串形式修改它、将所有环境变量和本地变量传递给eval然后执行——这几乎没有任何合理的使用场景。如果真的需要修改Python代码,AST(抽象语法树)永远是更安全的选择。
另一个项目则将Python代码以base64编码字符串的形式存入数据库,读取时再解码并用exec执行。这种做法除了让代码看起来像恶意软件之外毫无意义——base64操作既不压缩代码,也不提供任何真正的保护,代码完全可以直接存储为普通字符串。
这些模式有一个共同的技术根源:许多包与LLM相关——agentic框架、循环调用等——这就是它们需要通过exec/eval动态操作代码的原因。
高频发布与滥用行为
在监测过程中,Golubin还发现了一个更加离谱的现象:某些包的发布频率高得令人咋舌。有人在单一天内发布了392个包版本——这已经不是正常软件开发的范畴,而是明显的滥用行为。

这种趋势如果持续下去,PyPI生态系统的稳定性和安全性将面临严峻挑战。供应链攻击监控项目需要人工干预来过滤误报,而包越多,人工工作量就越大。安全研究者们的负担正在以肉眼可见的速度增长。
来源:Artem Golubin, "PyPI packages are increasing rapidly", (https://rushter.com/blog/pypi-packages/)