验证 PyPI Python 包的完整性

aba*_*sta 7 python security pypi python-2.7 python-3.x

最近有消息称一些恶意库被上传到Python Package Index(PyPI),请参阅:

  1. PyPI 上的恶意库
  2. 官方 Python 存储库中发现恶意模块(此链接包含恶意软件包列表)
  3. 开发人员使用恶意 Python 模块

我并不是想转发这些消息,而是试图阻止自己和其他队友识别来自 PyPI 的包是否未被外部方更改。

问题:

  1. 从 PyPI 下载软件包后,我应该使用什么安全检查?MD5 或任何额外的步骤?
  2. MD5签名足以验证Python包的完整性吗?

Tat*_*shi 3

首先,文章描述了拼写错误的危险,这是由于开发人员盲目地按名称安装包而不检查它是否是正确的上游包而导致的。您可以通过访问作者的 GitHub 存储库并正确复制安装说明来避免这种情况。

除此之外,包裹可能会被篡改,但可能性不大。由于 PyPI 文件是通过 HTTPS 传输的,因此从服务器获取哈希并验证它没有多大意义。(如果作者的帐户或 PyPI 服务器被黑客攻击,哈希并不能阻止您安装恶意软件包。)

如果您需要额外的安全措施来防止服务器受到损害,请使用固定版本/哈希值。有关详细信息,请参阅文档。