近期,Python包管理平台PyPI(Python Package Index)的安全团队隔离了名为“aiocpa”的库,该库被发现包含恶意代码,利用Telegram机器人窃取用户的加密密钥。这一事件再度敲响了软件供应链攻击的警钟。
事件背景
“aiocpa”是一款同步与异步的Crypto Pay API客户端库,自2024年9月上线以来已被下载12,100次。然而,最近的更新中出现恶意代码,被安全公司Phylum发现后曝光。为了防止进一步的传播,PyPI已将该库隔离,用户无法再安装,同时开发者也无法修改包内容。
目前尚不清楚恶意更新是否由原开发者发布,或者其账号被攻击者劫持。
恶意代码的细节
恶意代码首次出现在版本0.1.13中。攻击者修改了库中的“sync.py”脚本,加入了一个被多次压缩和编码的代码块。该代码块在库安装后会被解码并执行,其作用是捕获用户的Crypto Pay API密钥并通过Telegram机器人发送给攻击者。
Phylum团队指出,这段代码被递归编码和压缩了50次,以增加检测难度。
“Crypto Pay”简介
Crypto Pay是基于Crypto Bot (@CryptoBot)的支付系统,允许用户通过API接收加密货币支付并将加密货币转账给其他用户。攻击者显然瞄准了这一支付系统中的API密钥,通过其窃取受害者的敏感数据。
攻击特点与警示
这一事件暴露了一个值得警惕的安全问题:攻击者可以保持GitHub等开源仓库的代码干净,但在发布到PyPI等生态系统时嵌入恶意代码。很多开发者在选择库时仅检查其GitHub源码,而忽视了PyPI版本,给攻击者提供了可乘之机。
Phylum强调,软件包过去的安全记录并不能保证其未来的安全性。这次事件提醒开发者,下载前应对软件包的源码进行仔细检查,而不仅仅依赖其声誉或历史版本的安全性。
应对措施与建议
- 加强代码审查:在安装第三方库前,仔细检查其PyPI版本中的代码,尤其是涉及加密和支付的库。
- 启用包隔离工具:使用虚拟环境或容器技术隔离第三方库,避免直接影响生产环境。
- 监控异常行为:在开发和运行时,设置监控机制以发现未经授权的网络通信,例如连接Telegram API的行为。
- 及时更新依赖:一旦发现已安装的库存在恶意代码,应尽快移除并替换为可靠的替代方案。
总结
“aiocpa”事件再次提醒我们,软件供应链安全不容忽视。开发者在使用开源软件时应保持警惕,不仅要关注其GitHub仓库,还要对实际分发的包进行严格审查。只有不断提升安全意识,才能有效应对日益复杂的供应链攻击威胁。