PIP 包是否经过精心策划?安装它们安全吗?

Are PIP packages curated? Is it safe to install them?

提问人:MWB 提问时间:7/7/2016 最后编辑:MWB 更新时间:9/18/2021 访问量:20732

问:

使用 Debian 或 Ubuntu 软件包,有一些质量控制。PIP 是相似的,还是完全免费的?任何人都可以以他们想要的任何名称上传他们想要的任何代码吗?

例如,似乎有一些垃圾包,例如 https://pypi.python.org/pypi/opencv/0.0.1,它与非常流行的计算机视觉框架同名。

Python 安全 pip

评论


答:

42赞 David Z 7/7/2016 #1

不,没有第三方检查上传到 PyPI(Python 包索引,除非另有明确指示,否则 pip 下载包的位置)。唯一的限制是,一旦软件包名称存在,只有维护者才能上传具有该名称的软件包(即您不能使用相同的名称提交对其他人软件包的恶意升级)。维护者有责任确保他们在 PyPI 上提供的任何内容都不包含恶意软件,除非他们打算将其视为恶意软件,并且每个开发人员都应该了解他们正在使用 pip 下载的内容。

这已被一个调查“域名抢注”的研究项目所利用。研究人员将一些“模拟恶意软件”(大部分是无害的)上传到 PyPI,其名称是流行软件包名称的拼写错误版本,以收集有关这些拼写错误的软件包安装频率的数据。如果黑帽黑客做了同样的事情,他们可能会使用更多的恶意代码。

另请参阅有关同一主题的 Security Stack Exchange 问题

评论

0赞 TomTerrific 12/17/2021
总而言之,是的,已经检测到库中存在的一些恶意软件实例。更重要的是,除了用户自己的勤奋之外,没有针对恶意软件的保护措施。恕我直言,这意味着用户无法绝对保证他们正在使用的软件的安全性。墨菲说,如果能做到,那已经做过一千次了。不幸的是,Python 最大的优势之一也被证明是它的致命弱点。
0赞 Andrew 5/13/2023
Python 社区没有以任何方式解决这个问题吗?所以你用的每一件东西都应该扫描每一行代码吗?pip
1赞 David Z 5/15/2023
@Andrew (1/2) PyPI 管理员有时会在发现恶意包时将其删除,尤其是当恶意包似乎利用了名称相似性时。Python 社区的其他部分可能会提供更严格的验证形式,例如 MWB 评论中提到的 Anaconda 频道,还有一些第三方安全产品(声称)扫描包并标记看似可疑的包。不过,我个人并不熟悉这些措施。
1赞 David Z 5/15/2023
(2/2) 一般来说,开发人员有责任确定他们正在使用的代码是否在做他们希望它做的事情,让他们满意。如果对你来说,对代码正在做你想做的事情感到满意意味着检查每一行代码,那么是的,你应该扫描每一行代码。但是,如果像大多数开发人员一样,你愿意对社区给予一些信任,那么你可以依靠它来避免审计所有代码,如果一个包非常受欢迎,或者已经以某种方式进行了审查和验证。
5赞 MWB 8/19/2021 #2

5 年后,在现有答案的基础上再补充一下:

从 PyPI 下载了 30,000 次的软件实际上是恶意软件:它窃取了信用卡号和登录凭据,并在受感染的机器上注入了恶意代码。

评论

0赞 Andrew 5/13/2023
Python 社区没有以任何方式解决这个问题吗?所以你用的每一件东西都应该扫描每一行代码吗?pip
1赞 MWB 5/13/2023
@Andrew据我所知。我尝试使用 Anaconda 的默认“频道”,而不是个人。我认为它是精心策划的,在某种程度上。
0赞 Andrew 5/15/2023
请参阅上面 David Z 的评论。