据Jfrog科技博客报道,在PyPI存储库中发现几个恶意代码,攻击者试图植入后门、窃取信用卡信息、窃取浏览器敏感数据、截屏并上传到指定地址。相关恶意代码在从PyPI网站删除之前已被下载3万次,腾讯安全专家发现国内部分镜像库尚存在这些恶意代码,腾讯安全专家建议软件开发人员从PyPI代码库下载资源时,注意进行安全审核,避免将恶意代码安装到自己的开发环境中。
事件背景
近年来,PyPI、GitHub等软件存储库多次曝出软件供应链攻击事件:攻击者将内置后门的代码上传到公共存储库,其他开发人员如果不注意对代码进行安全审核,就可能将有害代码应用到自己的开发环境,继而在分发自己开发的软件时,将恶意程序传播给最终用户。
有问题的Python包,被发现使用Base64编码进行了混淆:
·pytagora(uploadedbyleonora)
·pytagora2(uploadedbyleonora)
·noblesse(uploadedbyxin)
·genesisbot(uploadedbyxin)
·are(uploadedbyxin)
·suffer(uploadedbysuffer)
·noblesse2(uploadedbysuffer)
·noblessev2(uploadedbysuffer)
PyPI是PythonPackageIndex的缩写,是Python的官方第三方软件存储库,诸如pip之类的包管理器实用程序依赖它作为包及其依赖项的默认源。将恶意代码上传到官方存储库,会导致依赖这些源(或镜像源)部署开发环境的软件开发者在无意中将恶意代码传播出去。从而构成典型的软件供应链攻击。
据了解,PyPI、Github及其他公共代码存储库本身并不对代码内容进行审核,任何开发人员均可注册,并上传代码。这种机制类似于其他社交媒体平台,平台方并不对内容安全性负责。
腾讯安全专家建议软件开发人员在使用PyPI、Github等公共代码库分享的代码之前,对代码内容进行审阅,避免安装恶意代码。腾讯安全已将上述存在恶意代码的文件拉黑,帮助软件开发人员检测风险。
恶意样本分析:
恶意代码使用base64方式进行编码保存,主要为隐藏恶意后门相应功能。
下图中的后门代码,试图连接.16.60.80:,然后执行从socket中读取的Python代码。
恶意代码通过查询sqlite数据库窃取Chrome保存的敏感信息,进一步获取浏览器中保存的所有账号和登录密码。
对电脑屏幕截屏窃取敏感信息。
将盗窃的上述敏感数据上传到如下接口