黑客利用以太坊智能合约在npm包中隐藏恶意代码
安全研究人员发现,黑客正通过以太坊智能合约将恶意软件载荷隐藏在看似无害的npm包中。这种新型攻击手法将区块链转变为高抗性的指令传输通道,大大增加了安全人员清除威胁的难度。
攻击技术分析
ReversingLabs实验室详细披露了两个恶意npm包——colortoolsv2和mimelib2的运行机制。这些包会读取以太坊上的智能合约获取第二阶段下载器的URL,而非在包内硬编码基础设施地址。这种做法减少了静态特征指标,使得源代码审查更难发现蛛丝马迹。
这两个包于今年7月被发现并下架。调查显示,攻击者通过伪造的GitHub仓库网络进行推广,其中包括名为solana-trading-bot-v2的交易机器人项目。这些仓库采用虚假星标、伪造提交历史和使用傀儡账号维护等手段,诱导开发者落入恶意依赖链陷阱。
攻击规模与演变
虽然这两个包的下载量较低(colortoolsv2下载7次,mimelib2下载1次),但攻击手法值得警惕。这与安全团队在2024年末发现的数百个npm仿冒包攻击活动一脉相承。当时的攻击包会执行安装脚本,查询以太坊合约获取基础URL,然后下载名为node-win.exe、node-linux或node-macos的系统特定载荷。
Checkmarx公司记录到核心合约地址为0xa1b...56c6b,配合钱包参数0x522...0A84使用,并观察到攻击基础设施包括45.125.67.172:1337等多个地址。Phylum团队的解密分析显示,攻击者通过ethers.js调用合约的getString(address)方法,并随时间轮换C2服务器地址,这使得合约状态成为恶意软件获取指令的动态指针。
防御建议
安全专家建议采取以下防护措施:
1. 在安装和持续集成过程中阻止生命周期脚本执行,可使用npm的--ignore-scripts参数
2. 在.npmrc中全局设置脚本禁用,然后通过独立步骤选择性允许必要构建
3. 阻断与已知IOC的外联通信,监控构建日志中出现的ethers.js合约查询行为
4. 严格审核依赖包的维护者身份和元数据信息
目前Snyk和OSV等平台已将这两个包标记为恶意,方便开发团队审查历史构建。尽管具体攻击包已被清除,但基于区块链的间接攻击手法仍将持续存在,成为攻击开发者设备的新型威胁。