2024年Ledger Connect Kit漏洞事件复盘:一个恶意npm包如何导致数百万美元DeFi资产被盗

安全与风控中心 / 浏览:14

2024年12月14日,整个DeFi世界经历了一场堪称“供应链攻击教科书”的噩梦。攻击者没有直接攻破任何一条区块链的共识机制,也没有利用某个DeFi协议的智能合约漏洞,而是通过一个被篡改的npm包——@ledgerhq/connect-kit——将恶意代码注入了数十个主流DeFi前端。短短数小时内,数百万美元的加密资产从用户钱包中被盗走。这场事件不仅暴露了Web3前端供应链的极端脆弱性,更让整个行业重新审视“钱包连接器”这一看似不起眼的组件所承载的信任重量。

事件时间线:从异常提现到紧急修复

攻击的起点:一个被劫持的npm发布权限

事件的根源可以追溯到Ledger前员工遭遇的钓鱼攻击。攻击者通过冒充Ledger内部人员的钓鱼邮件,获取了一名前员工在npm registry上的发布凭证。该凭证虽然属于离职员工,但并未被及时吊销,仍然拥有对@ledgerhq/connect-kit包的发布权限。12月14日,攻击者利用这一权限发布了多个恶意版本(1.1.5、1.1.6、1.1.7),在包中植入了一段经过精心混淆的恶意代码。

这段代码的核心逻辑并不复杂:它会拦截并替换页面上的WalletConnect相关模块,将用户签名请求中的收款地址替换为攻击者控制的地址。更隐蔽的是,恶意代码还针对不同的钱包类型做了适配——无论是MetaMask、Coinbase Wallet还是其他通过WalletConnect连接的移动端钱包,只要用户在前端发起交易或签名,资金就会被重定向。

扩散窗口:约5小时的黄金攻击期

从恶意版本发布到被安全研究人员发现并下架,大约经过了5个小时。但在这5小时内,任何在前端使用了该版本connect-kit的DeFi协议都成为了攻击载体。由于许多DeFi前端采用CDN缓存和自动构建部署,恶意代码的传播速度极快。链上数据显示,攻击者地址在短时间内收到了大量来自不同用户的钱包授权和转账,涉及ETH、USDC、USDT以及多种ERC-20代币。

应急响应:前端下线与版本回滚

Ledger官方在发现异常后迅速发布了安全公告,要求所有集成方立即升级到安全版本(1.1.8),并建议用户暂时避免与任何使用Ledger Connect Kit的dApp交互。多个受影响的前端(包括SushiSwap、Revoke.cash等)紧急下线或替换了连接器脚本。然而,对于已经签名的用户而言,损失已经不可逆转。

恶意npm包的技术解剖:攻击者到底做了什么

供应链攻击的典型路径

这起事件是典型的软件供应链攻击:攻击者不直接攻击目标应用,而是攻击目标所依赖的上游组件。npm生态的开放性使得这种攻击具有极高的杠杆效应——一个被污染的包可以同时影响成百上千个下游项目。@ledgerhq/connect-kit作为Ledger官方提供的钱包连接SDK,被大量DeFi前端集成,其信任等级极高,几乎没有项目会对它的每次版本更新做深度代码审计。

恶意代码的注入手法

根据事后安全分析,攻击者在恶意版本中引入了名为@ledgerhq/connect-kit-loader的依赖,并在其中植入了经过webpack混淆的payload。该payload会在运行时动态加载一个远程脚本,该脚本进一步替换window.ethereum相关的请求处理逻辑。具体而言,它劫持了eth_sendTransaction和personal_sign等RPC方法,在用户确认交易前将目标地址篡改。由于许多钱包在签名弹窗中展示的地址与前端展示的地址存在UI差异,普通用户极难在签名瞬间察觉异常。

为什么钱包本身没有拦住

一个常见的误解是“硬件钱包应该能防住”。事实上,Ledger硬件设备在签名时会展示交易详情,但问题在于:恶意代码篡改的是前端构造的交易内容,用户如果在设备上仔细核对收款地址,理论上可以发现异常。然而现实是,大量用户使用的是软件钱包或移动端钱包,签名弹窗中的地址展示并不总是足够醒目;加之攻击发生在用户信任的DeFi前端上,心理防线被大幅降低。这也解释了为何损失规模如此之大。

受影响范围与资金损失

哪些协议被波及

公开信息显示,至少数十个DeFi前端在攻击窗口内加载了恶意脚本,包括DEX聚合器、借贷协议前端、NFT市场以及链上工具类应用。SushiSwap的首席技术官公开确认其前端受到了影响;Revoke.cash也发布警告称其连接器被污染。由于许多项目共用同一套钱包连接方案,攻击面呈现出“一对多”的放射状结构。

链上资金的流向

攻击者地址在事件发生后被链上分析师标记,资金通过多个中间地址进行分散,部分被兑换为ETH并通过混币器转移。据不完全统计,损失金额在数十万至数百万美元区间,具体数字因统计口径不同而有所差异。更值得关注的是,这类攻击的“长尾效应”——部分用户可能在数日后才发现自己钱包中的资产被转走,追溯和追回难度极大。

事件暴露的深层问题

npm生态的信任模型缺陷

npm包的发布权限管理长期存在隐患:离职员工的token未吊销、2FA未强制、包所有权转移缺乏审计。此次事件中,一个前员工的凭证就足以撼动整个DeFi前端生态,说明“官方包”这一信任标签在工程实践中被过度依赖。Web3项目在集成第三方SDK时,往往缺乏对依赖树的持续监控和版本锁定策略。

前端供应链是Web3最薄弱的环节

智能合约审计、多重签名、时间锁——这些链上安全措施已经相对成熟。但前端作为用户与链交互的入口,其安全性长期被低估。一个被篡改的JavaScript文件可以在用户毫无感知的情况下改变交易意图。Web3的“去信任”叙事在前端这一层出现了巨大的裂缝:用户信任的是前端代码,而前端代码的信任链却延伸到了npm这样的中心化基础设施。

钱包连接器的权限过大

Connect Kit这类组件的设计初衷是简化钱包接入,但它同时获得了对页面RPC请求的完全控制权。一旦被恶意篡改,它就能在用户与链之间充当“中间人”。这提示行业需要重新思考连接器的权限边界——是否应该引入更严格的沙箱机制、请求白名单或前端完整性校验。

行业应对与后续改进

Ledger的补救措施

Ledger在事件后发布了详细的事后分析报告,吊销了相关npm token,加强了发布流程的2FA和权限审计,并对connect-kit的构建与发布链路进行了重构。同时,Ledger呼吁集成方使用Subresource Integrity(SRI)和版本锁定来防止类似篡改。

DeFi项目的防御升级

多个DeFi协议开始采用更严格的前端依赖管理策略:锁定依赖版本、使用私有npm镜像、在CI中加入依赖完整性校验、部署前端监控以检测异常脚本注入。部分项目开始探索将钱包连接逻辑自托管,减少对第三方CDN和npm包的运行时依赖。

社区与监管层面的讨论

这起事件再次引发了关于“谁应为供应链攻击负责”的讨论。npm官方被呼吁加强对高影响力包的发布监控;安全公司推出了针对前端供应链的扫描工具;而监管层面,针对加密资产盗窃的执法与追赃机制仍然滞后。对于普通用户而言,“仔细核对签名内容”这一老生常谈的建议,在本次事件中被赋予了更沉重的现实意义。

给开发者和用户的实操启示

对开发者:把依赖当成攻击面来管理

第一,对所有前端依赖实施版本锁定和完整性校验,避免使用浮动版本号。第二,在CI/CD流程中加入依赖变更审计,任何来自上游的版本更新都应触发人工复核。第三,为关键前端部署SRI和CSP策略,限制运行时动态加载远程脚本。第四,建立前端异常监控,对钱包请求的地址变更做二次校验。第五,重新评估钱包连接器的权限设计,尽可能缩小其可触及的RPC方法范围。

对用户:签名前的三秒核对不是形式主义

在DeFi前端发起交易时,务必在钱包弹窗中核对收款地址与预期是否一致,尤其是涉及授权(approve)和转账操作时。对于大额资产,优先使用硬件钱包并在设备屏幕上确认地址。定期使用Revoke.cash等工具清理不必要的代币授权。更重要的是,建立“前端可能被攻破”的心理预期——即使是你熟悉的协议官网,也不能无条件信任其页面展示的内容。

对行业:供应链安全需要集体行动

单一项目的防御无法解决系统性风险。npm registry、CDN服务商、钱包厂商和DeFi协议需要建立更紧密的威胁情报共享机制。例如,当某个高影响力包出现异常发布时,能够快速触发下游项目的自动告警。同时,行业应推动钱包连接标准的演进,在协议层引入请求来源验证和地址绑定校验,从架构上降低“中间人篡改”的成功率。

这起由一枚恶意npm包引发的连环盗币事件,最终以数百万美元的代价为整个Web3行业上了一课:在去中心化的世界里,最中心化的那一环——前端依赖链——恰恰是最容易被忽视的命门。当信任被压缩进一行行未经审计的第三方代码时,安全就不再是某个团队的责任,而是整条供应链的共同课题。

版权申明:

作者: 虚拟币知识网

链接: https://virtualcurrency.cc/safety-risk-control/ledger-connect-kit-exploit-2024-malicious-npm-package-defi-loss.htm

来源: 虚拟币知识网

文章版权归作者所有,未经允许请勿转载。

关于我们

 Ethan Carter avatar
Ethan Carter
Welcome to my blog!

最新博客

标签