据 ZDNet 报道,PyPi 删除了两个恶意 Python 库,发现它们从中招的开发者的项目中窃取 SSH 和 GPG 密钥。
这 2 个恶意库出自同一个开发者 olgired2017,此人从名字模仿了知名 Python 库。12 月 1 日,德国开发者 Lukas Martini 发现后并报告给 dateutil 库的作者和 PyPi 团队,随后被删除。
> 第一个恶意库是 python3 dateutil ,它模仿了流行的 dateutil 库;
(该库是在 11 月 29 日创建,只存活几天。)
> 第二个是 jeIlyfish (第一个不是小写的 L,而是大写的 i),它则模仿了 “jellyfish” 库。
(该库是在 2018 年 12 月 11 日创建,存活时间将近 1 年。)
Martini 研究后发现,恶意代码只存在于 jeIlyfish 库中。python3 dateutil 包本身不包含恶意代码,但它确实导入了 jeIlyfish 库。
ZDNet 请 dateutil 开发团队的成员 Paul Ganssle 仔细研究恶意代码。
Ganssle 表示:“恶意库 jeIlyfish 在 Gitlab,其中有一个名为 hashsum 的文件,这个文件名不起眼,但它试图从中招开发者的计算机中筛选出 SSH 和 GPG 密钥,然后发送到这个 IP地址:68.183.212.246:32258。”
此外,它还会获取受害者电脑中的目录、主目录、PyCharm 项目目录。这应该是用来分析受害者哪些项目值得攻击/偷窃。
除去恶意代码部分(偷密钥之外),这 2 个仿冒的恶意库,均包括了正主库的代码。这也就是说,恶意库是可以完成正主库的功能。
鉴于恶意库 jeIlyfish 存活将近一年了,建议大家检查一下。如果你中招了,修改最近一年所有的 SSH 和 GPG 密钥。