近年来,PyPI、GitHub等软件存储库多次曝出软件供应链攻击事件:攻击者将内置后门的代码上传到公共存储库,其他开发人员如果不注意对代码进行安全审核,就可能将有害代码应用到自己的开发环境,继而在分发自己开发的软件时,将恶意程序传播给更多用户。
有问题的 Python 包,被发现使用 Base64 编码进行了混淆:
· pytagora (uploadedby leonora123)
· pytagora2 (uploadedby leonora123)
· noblesse (uploadedby xin1111)
· genesisbot(uploaded by xin1111)
· are (uploaded byxin1111)
· suffer (uploaded bysuffer)
· noblesse2 (uploadedby suffer)
· noblessev2(uploaded by suffer)
PyPI 是 Python Package Index 的缩写,是 Python 的官方第三方软件存储库,诸如pip 之类的包管理器实用程序依赖它作为包及其依赖项的默认源。若将恶意代码上传到官方存储库,会导致依赖这些源(或镜像源)部署开发环境的软件开发者在无意中将恶意代码传播出去。从而构成典型的软件供应链攻击。
据管家了解,PyPI、Github及其他公共代码存储库本身并不对代码内容进行审核,任何开发人员均可注册,并上传代码。这种机制类似于某些社交媒体平台,平台方并不对内容安全性负责。
腾讯电脑管家建议软件开发人员在使用PyPI、Github等公共代码库分享的代码之前,对代码内容进行审阅,避免安装恶意代码。目前管家已将上述存在恶意代码的文件拉黑,帮助软件开发人员检测风险。
恶意代码使用base64方式进行编码保存,主要为隐藏恶意后门相应功能。
下图中的后门代码,试图连接172.16.60.80:9009,然后执行从socket中读取的Python代码。
恶意代码通过查询sqlite数据库窃取Chrome保存的敏感信息,进一步获取浏览器中保存的所有账号和登录密码。
对电脑屏幕截屏窃取敏感信息。
将盗窃的上述敏感数据上传到如下接口地址:
hxxps://discordapp.com/api/webhooks/725066562536472720/dj6bPPENAE5SxFzMRB6m7FEPwIbrWkH_5PlSR6RG99pY73wjJ9dVoZTkOrvOQ04cZybR
PyPI恶意代码包威胁数据已加入腾讯安全威胁情报数据库,赋能给腾讯全系列安全产品。腾讯电脑管家已支持查杀拦截相关恶意软件包下载。
IOCs
MD5
453ddb774d66e75c9b65b68306957ef8
253325d92666c6bb1160780ed85705a5
a61b6c3551d91b1e08a6daf843bcc3ab
5274c20eda8a905784a85d898a038dde
参考资料:
https://jfrog.com/blog/malicious-pypi-packages-stealing-credit-cards-injecting-code/
https://www.theregister.com/2021/07/28/python_pypi_security
https://thehackernews.com/2021/07/several-malicious-typosquatted-python.html