使用 pip、easy_install 或 conda 等 Python 包管理器是否安全?

信息安全 中间人 Python 包管理器 安装
2021-08-21 18:13:49

我知道从不受信任或受损的来源安装软件(包括 Python 包)是不安全的。

但是,我想知道当我从 Python 包索引或 Anaconda 存储库(我也认为是受信任的)安装受信任的包时,我有多安全。

PyPI 中的包可能是 PGP 签名的,这让我相信手动安装/更新它们是相当安全的。

但是,没有自动签名验证,pip似乎不会有

我想知道当我使用 或 连接到 PyPI(或Anaconda)存储库时pip我能确定没有 MITM 攻击easy_installconda

我猜想pip连接至少使用 SSL 和证书验证(已知它会因 SSL 错误而失败),但鉴于pip 在 2013 年默认使用纯 HTTP 作为默认值,我非常怀疑它的严格程度,例如在受信任的根 CA 的情况下(对于例如它是否信任 StartCOM 和 WoSign)。

当我决定使用 Python 包管理器时,有谁知道我的安全级别是多少?

更新

我的问题是关于 PyPI(和类似)客户端的安全性及其与服务器的连接,而PyPI 和类似的第三方软件存储库采取哪些安全措施?是关于是否可以信任 PyPI 的包。在我的问题中,假定服务器站点上的 PyPI 和包是可信的。

1个回答

我为 pip 设置了 MITM 到 pypi.python.org,看来 pip 确实验证了证书。它失败并显示 SSLError: [SSL: CERTIFICATE_VERIFY_FAILED]。也许我会对其他存储库有更多的运气......

Pip 可能没有检查 gpg 签名,但它不像您从不受信任的来源下载。例如,Linux 软件包分布在世界各地的镜像中,如果没有 gpg,这些软件包中的一些很可能会受到损害。在 pip 情况下,唯一的下载源是 pypi.python.org,它使用 Fastly CDN 进行分发,而不是不受信任的镜像。

我不知道conda,没用过。