返回论坛

供应链暗影:Copay 定向攻击事件深度技术剖析

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

查找币安全研究院

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

查看研究院 研究报告中心
> 查找币安全团队 | 漏洞披露与威胁分析 ## 事件概述 2018年底,Bitpay旗下知名钱包应用**Copay**遭受了一次精心策划的供应链攻击。攻击者通过污染广泛使用的`event-stream` npm模块,在长达两个多月的时间里潜伏在依赖链中,最终对Copay用户构成严重威胁。本文将还原攻击路径、解密后门机制,并提供针对此类攻击的防护思路。 ## 攻击全貌:从模块污染到定向打击 ### 攻击链 1. **上游污染**:攻击者向npm生态中流行的`event-stream`模块注入恶意代码。该模块被约**3900个项目**直接或间接依赖,涵盖大量知名开源项目。 2. **定向触发**:恶意代码并非对所有依赖者生效,而是通过特定条件判断,仅对**Copay**环境激活。 3. **数据窃取**:激活后,后门会检测用户设备类型(Mobile/Cordova/Electron),读取Copay账户的比特币(BTC)和比特币现金(BCH)余额,若余额超过阈值(BTC>100或BCH>1000),则窃取完整账户数据与私钥,发送至远程服务器`111.90.151.134`。 ### 为什么只针对Copay? 后门核心代码采用**AES256对称加密**,解密密钥来自环境变量`npm_package_description`。该变量仅在Copay的`package.json`中定义为特定值,其他项目即便包含恶意代码,也无法正确解密,从而无法触发攻击逻辑。这种“定向加密”手法极为隐蔽,使得攻击在两个月内未被广泛发现。 ## 后门代码深度解析 ### 加密与解密机制 - **加密算法**:AES-256-CBC - **密钥来源**:`process.env.npm_package_description` - **触发条件**:解密后得到的代码片段仅当环境变量匹配Copay时,才能正确执行窃取逻辑。 ### 攻击行为(根据NPM官方分析) ``` 1. 检测运行环境:Mobile / Cordova / Electron 2. 读取Copay钱包的BTC和BCH余额 3. 若余额 > 100 BTC 或 > 1000 BCH: - 完整提取账户数据(地址、交易历史等) - 提取私钥 - 通过HTTP POST发送至111.90.151.134 ``` ### 隐蔽性分析 攻击者选择`event-stream`作为载体,该模块在npm生态中属于“基础设施级别”,被大量项目间接依赖。攻击者利用了开发者对上游依赖的默认信任,以及npm版本锁定机制的漏洞——当`event-stream`发布恶意版本后,依赖它的项目会自动升级,无需开发者手动操作。 ## 威胁评估:供应链攻击为何致命? 供应链攻击的可怕之处在于其**放大效应**: - **攻击面广**:一个模块被污染,可影响数千个项目 - **检测困难**:恶意代码深藏于依赖树中,常规代码审查难以覆盖 - **信任滥用**:开发者普遍信任npm、PyPI等包管理器,很少逐行检查第三方代码 - **持久潜伏**:攻击者可通过加密、条件触发等手段,使后门长期不被发现 本次Copay事件中,攻击者甚至未对高价值目标(余额>100 BTC)立即下手,而是持续收集数据,表明其具备高度组织化与耐心。 ## 防护建议:构建供应链安全防线 ### 针对开发团队 1. **强制依赖审计**:所有数字货币相关项目(交易所、钱包、DApp等),必须由至少一名核心技术成员完整审查所有第三方模块的源代码,重点关注: - 加密/解密逻辑 - 网络请求(可疑域名/IP) - 环境变量读取 - 文件系统写入 2. **依赖锁定**:使用`package-lock.json`或`yarn.lock`锁定依赖版本,避免自动升级引入恶意代码。 3. **运行时监控**:在测试环境中启用网络抓包(如Wireshark、Charles),检查是否有异常外联请求。 4. **最小权限原则**:限制应用对私钥、余额等敏感数据的访问权限,仅授权给必要模块。 ### 针对个人用户 - **及时更新**:保持钱包应用为最新版本,官方通常会在发现漏洞后紧急修复(Copay事件后Bitpay已发布更新)。 - **警惕异常**:若钱包出现非预期行为(如余额显示错误、频繁请求网络),立即停止使用并联系官方。 ## 查找币安全团队的总结 供应链攻击是Web3生态中最危险的威胁之一。Copay事件证明,即使拥有顶级安全团队的Bitpay,也无法完全避免依赖链中的漏洞。防御的关键在于**打破信任惯性**——对每一个第三方模块保持怀疑,并建立可重复的审计流程。 我们正在持续研究供应链攻击的自动化检测方案,包括: - 依赖图静态分析 - 运行时行为异常检测 - 社区驱动的恶意包黑名单 欢迎安全同行与我们交流合作,共同加固Web3的供应链安全基础。 --- *本文由查找币安全团队整理发布*
在论坛中查看和回复