作为 Python 的正式第三方软件套件的软件存储库,用户可以通过 PyPI 下载超过数十万个 Python 软件包。 

但是近日以来,有不少开发者发现,PyPI 中多个软件包被发现含有后门,如“keep”、“pyanxdns”、“api-res-py”等常用的软件包赫然在列,其中主要原因可能是因为依赖包名字拼写错误而导致了后门的存在。

多个软件包包含后门

这一情况最早可追溯到上个月,有 GitHub 用户 duxinglin1 发现,易受攻击的软件包版本中包含拼写错误的“request”依赖项,而非合法的“requests”。

以 keep 软件包举例,虽然其大多数版本都包含合法的 Python 模块 requests 用于 HTTP 请求,但是 keep v1.2 中包含的模块 request(没有 s)是一个恶意程序,该程序可以从 Chrome 和 Firefox 等浏览器中窃取 cookies 和个人信息,并尝试窃取浏览器保存的登陆凭证。

duxinglin1 在 GitHub 上写道,“我们在这个项目的 1.2 版本中发现了一个恶意后门,其恶意后门就是请求包。即使请求包被 PyPI 删除了,很多镜像站点并没有完全删除这个包,所以还是可以安装的。当使用 pip3 时,输入“ install keep==1.2 -i http://pypi.doubanio.com/simple -- trusted-host pypi.doubanio.com”,仍然可以成功安装请求恶意插件。”

来源:https://github.com/OrkoHunter/keep/issues/85#issue-1232453532=

在使用率上,keep 每周平均下载次数超过了 8000 次。因此使用 keep v1.2 的用户均受到影响,不止于此,较为小众的“pyanxdns”和“api-res-py”也被使用恶意依赖项“request”捕获。

据外媒 BleepingComputer 报道,受影响的主要软件包如下:

  • CVE-2022-30877:'keep' v1.2 包含后门'request';

  • CVE-2022-30882: 'pyanxdns' v0.2 受影响

  • CVE-2022-31313:'api-res-py' v0.1 受影响

别自己写 Bug!

在经过外媒的确认,其中“pyanxdns”软件包的开发者 Mark Egebeck 证实,这种情况是由于“粗心”的拼写错误导致的后门,而不是因为账户泄露和维护者的自我破坏。

有些巧合的是,“keep”和“api-res-py”包的作者也在输入的时候写成了“request”而不是正确的“requests”,从而导致了恶意依赖的存在。

对此,GitHub 用户 duxinglin1 给出的修复建议是在 PyPI 上删除 keep v1.2 版本。

不过,BleepingComputer 称,开发者也将新版本重新上传到 PyPI,并删除了引用“request”恶意依赖的版本。

接下来,开发者需要注意的就是,别自己写 Bug。在职业生涯中,你写过什么样的 Bug,欢迎留言分享~~

参考:https://www.bleepingcomputer.com/news/security/pypi-package-keep-mistakenly-included-a-password-stealer/

Logo

20年前,《新程序员》创刊时,我们的心愿是全面关注程序员成长,中国将拥有新一代世界级的程序员。20年后的今天,我们有了新的使命:助力中国IT技术人成长,成就一亿技术人!

更多推荐