蛇咬伤:小心恶意的Python库


蛇咬伤:小心恶意的Python库

本周早些时候,两个含有恶意代码的 Python 库被从 Python 包索引(PyPI)--Python 的官方第三方包库--中删除。

这是许多现代软件开发社区所面临的问题的最新化身,为所有依赖开源软件的开发者提出了一个重要问题:你如何能够让人们将自己的代码贡献给一个共同的库,以便重新使用,而这些库又不会成为攻击的载体?

[ Also on InfoWorld: 10 software development cults to join ]

总的来说,作为开源项目运行的语言(如 Python)的官方第三方库是安全的。但是,如果不加以检查,恶意版本的库可以迅速传播。

本周从PyPI上删除的两个恶意软件包使用了一种被称为 "打字蹲 "的技巧,即选择与常用软件包足够相似的名称,以避免被发现,如果有人打错预定的名称,就会导致意外的安装。试图伪装成dateutil和jellyfish软件包--分别用于操作Python日期时间对象和对字符串进行近似匹配--的恶意软件包被命名为python-dateutil和jeIlyfish(用一个大写的I代替第一个小写的L)。

安装后,python-dateutil和jeIlyfish的行为与原版完全一样--除了试图从开发者那里窃取个人数据。dateutil团队的开发者Paul Ganssle告诉ZDNet,这次攻击的原因可能是为了弄清受害者所从事的项目,以便以后对这些项目发起攻击。

[ Also on InfoWorld: 24 Python libraries for every Python developer ]

Python库通常分为两个阵营--构成Python运行时的标准库的模块,以及PyPI上托管的第三方包。标准库中的模块是经过严格检查和审核的,而PyPI的设计则更加开放,允许Python用户社区自由贡献软件包供重新使用。

恶意项目曾经在PyPI上被发现。在一个案例中,恶意软件包错位了Django框架,这是Python中网络开发的一个主要部分。但是,这个问题似乎越来越紧迫了。

"作为Python安全团队(PSRT)的成员,我每周都会收到关于打字蹲守或恶意包的报告。"Python核心开发者Christian Heimes在Python的官方开发讨论区说。"(有趣的是:这个月有四封关于PyPI上恶意内容的邮件,而今天只是12月4日)。"

Python软件基金会已经制定了保护PyPI免受滥用的计划,但这些计划需要时间来全面展开。今年早些时候,Python团队推出了双因素认证,作为PyPI用户上传软件包的一个选项。这为上传到PyPI的开发者提供了一层保护,使得劫持他们的账户并以他们的名义上传恶意软件更加困难。但它并不能解决打字员或其他滥用公共资源的问题。

其他举措包括研究如何通过自动化来抵消这些问题。在Python软件基金会中负责打包的工作组已经获得了Facebook Research的资助,以创建更先进的PyPI安全功能,例如PyPI软件包的加密签名,以及对恶意上传的自动检测(而不是劳动密集型的人工筛选)。

[ 通过InfoWorld的App Dev Report通讯了解软件开发的热点话题 ]

第三方也提供一些保护。独立安全公司 Reversing Labs 在对整个软件库进行了可疑文件格式的扫描后,发现了基于 PyPI 的攻击。但该公司承认,这种扫描并不能替代内部审查。该公司写道:"为了大大减少托管恶意软件的可能性,""这种资源库都将受益于连续的处理和更好的审查过程。"

正如Python自己的开发者所知道的,最好的解决方案必须来自内部。


本文标签

热门标签

会员评论