返回论坛

NPM 大规模投毒事件深度分析:加密钱包劫持与地址替换攻击

查找币 漏洞披露 安全研究 Web3安全 区块链安全

查找币安全研究院

钱包恢复评估 | 链上取证分析 | Web3 事件响应
以合法授权、证据保全、隐私保护和可复核流程为前提,不要求用户在线提交完整私钥或助记词。

查看研究院 研究报告中心
## 事件概述 2025年9月9日凌晨,NPM生态系统爆发了一场针对加密行业的定向投毒攻击。攻击者通过社工手段获取了知名开发者`qix`的账号权限,利用其发布的热门组件包传播恶意代码。查找币(CZB)自研的Web3威胁情报系统——**查找币监控系统**第一时间捕获并推送了相关威胁情报,为社区用户提供了关键预警。 ## 攻击链分析 ### 社工入口:精准钓鱼攻击 本次攻击的初始入口是**社会工程学攻击**。开发者`qix`在社交媒体上披露,其收到了一封伪装成NPM官方团队的钓鱼邮件: - **发件人地址**:`support[@]npmjs[.]help`(伪造域名) - **邮件主题**:“更新双因素认证信息” - **恶意链接**:`https[://]www[.]npmjs[.]help/settings/qix/tfa/manageTfa?action=setup-totp` 受害者点击“Update 2FA Now”按钮后,被引导至伪造的NPM登录页面。目前该域名已被标记为恶意,并在VirusTotal上确认存在恶意行为。 > 值得注意的是,多位NPM开发者表示收到了相同模式的钓鱼邮件,说明这是一次**有组织的定向攻击**。 ### 攻击流程 1. 攻击者冒充NPM官方发送2FA更新邮件 2. 受害者输入凭证后,攻击者接管账号 3. 攻击者利用已接管账号更新NPM包,植入恶意代码 4. 用户安装更新后的包时,恶意代码自动执行 ## 恶意代码深度分析 分析发现,被投毒的NPM包中`index.js`包含高度混淆的恶意代码。经过解混淆,其核心功能分为两大模块:**地址替换**和**交易劫持**。 ### 地址替换机制 恶意代码通过`newdlocal()`方法实现地址替换,其核心逻辑包含三个关键函数: #### f():相似度计算 采用**Levenshtein距离算法**计算两个字符串的相似度。攻击者预设了一个包含多个加密货币地址的池子,f()函数用于评估原始地址与池中地址的相似程度。 #### f2():地址匹配 遍历攻击者地址池,调用f()方法找出与用户原始地址最相似的恶意地址。此过程确保替换后的地址在视觉上与原始地址高度相似,难以被用户察觉。 #### f4():执行替换 实际执行替换操作。代码流程如下: - 调用`Object.entries()`将正则对象`vO`转换为键值对数组 - 遍历数组,匹配所有加密货币地址格式 - 对匹配到的地址,调用f2()从攻击者地址池中选取最相似的地址 - 用恶意地址替换原始地址 **攻击者地址池示例(部分)**: ``` bitcoincash:qq35fzg00mzcmwtag9grmwljvpuy5jm8kuzfs24jhu bitcoincash:qra5zfn74m7l85rl4r6wptzpnt2p22h7552swkpa7l bitcoincash:qzqllr0fsh9fgfvdhmafx32a0ddtkt52evnqd7w7h7 ... ``` ### 交易劫持机制 恶意代码通过`runmask()`方法实现交易劫持,其核心逻辑如下: #### f8():钱包状态监控 持续检测用户是否连接了浏览器钱包(如MetaMask)。一旦检测到钱包连接,立即触发f7()方法。 #### f7():代理劫持 利用`Object.defineProperty()`修改`window.ethereum`对象的核心方法(`request`、`send`、`sendAsync`),将其替换为由`f6()`生成的恶意代理函数。同时备份原始方法,以维持基本功能正常运作。 **劫持流程**: 1. 用户发起交易请求(如转账) 2. 恶意代理拦截请求,解析交易参数 3. 将交易中的目标地址替换为攻击者地址 4. 将修改后的交易提交给用户签名 5. 用户签名后,资金被转移至攻击者控制的地址 ## 威胁影响评估 | 影响维度 | 具体表现 | |---------|---------| | **目标资产** | 比特币现金(BCH)及所有支持浏览器钱包的加密货币 | | **攻击范围** | 所有安装受影响NPM包的项目及用户 | | **攻击成功率** | 极高(地址视觉相似 + 交易自动劫持) | | **隐蔽性** | 极高(仅替换地址,不干扰正常交易流程) | ## 安全防护建议 ### 开发者防护措施 1. **双因素认证(2FA)安全**: - 仅在官方域名(`npmjs.com`)进行2FA操作 - 对任何要求更新2FA的邮件保持警惕,核实发件人真实性 - 使用硬件安全密钥(如YubiKey)替代TOTP 2. **账号安全**: - 启用NPM账号的“强制2FA”功能 - 定期审查账号授权和第三方应用权限 - 使用密码管理器生成并管理强密码 ### 用户防护措施 1. **交易验证**: - 每次转账前,手动核对目标地址的每个字符 - 使用硬件钱包的屏幕确认交易详情 - 小额测试交易后再进行大额转账 2. **浏览器安全**: - 安装广告拦截器和反钓鱼扩展 - 定期清理浏览器缓存和扩展 - 避免在非官方页面连接钱包 3. **监控工具**: - 使用查找币监控系统等威胁情报工具,实时获取安全预警 - 启用交易监控服务,及时发现异常转账 ## 总结 本次NPM投毒事件再次证明,**社会工程学攻击**仍是Web3生态面临的最大威胁之一。攻击者通过精心设计的钓鱼邮件获取开发者权限,再利用受信任的组件包传播恶意代码,最终实现加密货币盗窃。作为安全从业者,我们建议所有Web3用户和开发者: - **永远不要**点击邮件中的“更新2FA”链接 - **始终**通过官方渠道验证任何安全通知 - **定期**审计项目依赖包的安全性 查找币安全团队将持续监控Web3生态安全态势,为社区提供及时、准确的威胁情报。 --- *本文由查找币安全团队整理发布*
在论坛中查看和回复