近日,斯洛伐克国家安全局(NBU)在 Python 官方的第三方软件存储库——PyPI 上发现10个恶意库。
我们对于 typosquatting 其实并不陌生,上一次类似的攻击是出现在 NPM 平台,而这一次攻击者又使用了类似的方法将目标对准了 PyPI。
NBU 专家表示,攻击者使用 typosquatting 的方法来上传这些恶意库到 PyPI 平台上,他们上传的恶意库的名字和那些正常的库的名字非常相似,很容易让人混淆,比如将”urlib” 写成 “urllib”。
当开发者上传一个新库到 PyPi上时,平台本身并不会对库做任何的安全检查,所以攻击者很容易就可以将库上线。
那些手误打错名字的开发人员会无意间下载这些恶意库,并将其加载到软件的安装脚本中。
NBU解释道,这些恶意库和那些正常名字的库代码相同,所以它们的功能是相同的,但是在其安装脚本 setup.py 中包含恶意代码。
这些恶意代码只会收集被感染主机的信息,比如这些恶意库的版本和名字,那些安装了恶意库的用户的名字,还有计算机的主机名。
这些被收集的数据,格式就像 “Y:urllib-1.21.1 admin testmachine”,被上传到一个中国的 IP 地址“121.42.217.44:8080”。
NBU 的官员上周联系了 PyPi 管理员,管理员在周六之前就已经从 PyPi 平台移除了这些恶意库,这些恶意库名字如下:
– acqusition (uploaded 2017-06-03 01:58:01, impersonates acquisition) – apidev-coop (uploaded 2017-06-03 05:16:08, impersonates apidev-coop_cms) – bzip (uploaded 2017-06-04 07:08:05, impersonates bz2file) – crypt (uploaded 2017-06-03 08:03:14, impersonates crypto) – django-server (uploaded 2017-06-02 08:22:23, impersonates django-server-guardian-api) – pwd (uploaded 2017-06-02 13:12:33, impersonates pwdhash) – setup-tools (uploaded 2017-06-02 08:54:44, impersonates setuptools) – telnet (uploaded 2017-06-02 15:35:05, impersonates telnetsrvlib) – urlib3 (uploaded 2017-06-02 07:09:29, impersonates urllib3) – urllib (uploaded 2017-06-02 07:03:37, impersonates urllib3)
这些恶意代码使用 Python 2.x 版本编写的,它们会在 Python 3.x 版本中报错。用户在调试应用程序时发现了它们。
专家建议 Python 开发人员检查他们的软件,看是否也使用了被感染的库,并使用最初安全的库重新编译软件包。
并且,专家建议 Python 开发人员不要使用 pip(一个Python 包安装程序)来安装第三方库,因为 pip 在下载第三方库时不会进行加密签名的验证。