本文深入剖析了DeFi协议中Web2层面的安全漏洞,通过DNS劫持、供应链攻击、UI社会工程等案例,强调了前端和Web应用安全在DeFi防护中的关键作用。文章指出仅凭智能合约审计不足,并提供了详细的安全检查清单,以构建全面的防御体系。
这是我们的“Web2 安全性对 DeFi 的影响”系列文章的第二部分。阅读第一部分:当 Web2 基础设施破坏 DeFi 时以了解基础设施层面的攻击面。
智能合约审计是必要的,但在没有并行进行 Web 应用程序安全审查的情况下是不足的。以下是攻击者如何完全绕过你的合约以及如何阻止他们的方法。
你在智能合约审计上花费了 5 万美元。你的代码很干净。你的 不变性测试 通过了。你的协议是“安全的”。
然后,用户连接到你的 前端,看到熟悉的界面,点击“确认”,并眼睁睁看着他们的钱包实时被掏空。
这次攻击并非源于 重入漏洞 或 预言机操纵。它来自注入在你的 CDN 和他们的浏览器之间的某个地方的一行恶意 JavaScript 代码。或者来自 DNS 记录更改,该更改将他们重定向到一个 像素级完美 的克隆网站。或者来自一个通过 社会工程学 诱导的签署者,他们批准了一笔交易,因为 UI 使其看起来像例行操作。
在 2024-2025 年,前端 和 Web 应用程序攻击成为主要的攻击载体。根据 Halborn 的 2024 年 DeFi 百强黑客攻击报告,链下攻击(账户入侵、网络钓鱼、内部威胁)占 2024 年被盗资金的 80.5%。前端 和 Web 应用程序漏洞是这些 链下攻击载体 的重要组成部分。
一个令人不安的事实是:DeFi 安全始于 OWASP,而非 Solidity。
本文将剖析真实的 Web 应用程序攻击、DNS 劫持、供应链妥协、基于 UI 的 社会工程学,这些攻击完全绕过了合约层面的安全性。无需智能合约漏洞。
日期:2025 年 5 月 12 日 协议:Curve Finance (多链 DEX) 攻击载体:域名劫持 + 钱包窃取 UI 损失:350 万美元
Curve 的 前端 遭到域名劫持攻击。攻击者获得了域名注册商的访问权限,并修改了 DNS 设置,将 curve.fi 重定向到一个恶意克隆网站。这个虚假网站在视觉上完全相同,同样的布局、同样的颜色、同样的“连接钱包”按钮。
但这个恶意网站只有一个目的:提示用户进行钱包签名,以授权无限 代币批准。该界面将这些提示呈现为常规连接请求。用户信任熟悉的 Curve 品牌和 URL,点击了确认。
关键细节:这不是一个复杂的智能合约漏洞。合约是完好的。UI 才是武器。
用户信任像素,而非协议。你的品牌、你的颜色、你的 URL,这些是用户所依赖的信号。当攻击者完美复制它们时,即使是经验丰富的 DeFi 用户也可能被骗。
DNS 劫持正在上升的原因是:
来源:Hypernative Detection Report,Curve Finance Incident Report
日期:2023 年 12 月 14 日 范围:Ledger Connect Kit npm 包 攻击载体:npm 发布凭证 被泄露 损失:60 万美元以上(避免了更严重的损失)
Ledger Connect Kit 是一个广泛使用的 npm 包,它支持 DeFi 前端 中的钱包连接。数百个协议依赖于它。12 月 14 日,攻击者泄露了一名前 Ledger 员工的 npm 发布凭证,并推送了该包的恶意版本(1.1.5、1.1.6、1.1.7)。
恶意代码:
攻击窗口很窄,大约 2 小时,但它影响了任何自动更新依赖项的 dApp。Revoke.cash 和其他平台不得不实施紧急阻止,以防止用户在攻击期间进行交互。
你的 前端依赖项 是你无法控制的代码。每个 npm 包 都是潜在的攻击载体。Ledger 事件表明,单个被泄露的凭证如何能够波及数百个协议。
DeFi 项目必须:
"@ledgerhq/connect-kit": "1.1.4" 而非 "^1.1.4")来源:SlowMist Analysis,TechCrunch Report
日期:2024 年 10 月 16 日 协议:Radiant Capital (跨链借贷) 攻击载体:基于 UI 的 多重签名 签署者 社会工程学 损失:5000 万美元
Radiant Capital 采用 3-of-11 多重签名 来进行关键协议操作。在一次常规的 排放调整 期间,攻击者利用了堆栈的不同层面,而不是智能合约,而是签名环境本身。
根据 Radiant 的 事后分析,攻击者入侵了多个 多重签名 签署者使用的设备。当准备好合法交易进行签名时,恶意软件拦截了它们,并在将其转发到硬件钱包之前,用恶意 负载 替换了底层交易数据。
关键在于,这些交易在用户界面中看起来是合法的,并通过了手动审查和模拟检查。硬件钱包签署了它们所呈现的内容,并获得了三个有效签名。
签署者没有泄露他们的私钥。他们签署的是在到达签名设备之前已被篡改的交易。
如果 UI 不可信,多重签名 是不够的。当攻击者控制表示层时,他们就控制了签署者所看到的内容,从而也控制了他们批准的内容。
高价值的 多重签名 操作需要:
来源:Halborn Explained,CoinDesk Report
日期:2025 年 12 月 24-25 日 协议:Trust Wallet (Chrome 扩展程序) 攻击载体:扩展程序更新机制被泄露 损失:约 700-850 万美元
Trust Wallet 的 Chrome 扩展程序 于 12 月 24 日收到了一个恶意更新。被泄露的版本以完整的浏览器权限执行恶意代码,从而导致未经授权的交易执行和资金窃取,并 窃取敏感钱包相关数据 到攻击者控制的服务器。许多用户通过 Chrome Web Store 的自动更新机制自动接收了被泄露的扩展程序,在数小时内扩大了影响。
浏览器扩展程序是你无法控制更新机制的特权代码。当你信任一个钱包扩展程序时,你信任的是:
对于高价值操作,浏览器扩展程序不应是主要的签名机制。硬件钱包、气隙签名者 或 CLI 工具 提供了深度防御。
来源:CryptoSlate Analysis,CoinDesk Report
我们涵盖的所有四次攻击都完全绕过了智能合约安全。但我们仍然在公开事件报告中看到一个反复出现的主题:链下管理界面 中访问控制失效。
在 2024-2025 年,多起备受关注的事件和安全审查表明,管理面板配置错误是一个持续存在且被低估的风险:
这些并非理论性的。在大量的 渗透测试 和 泄露分析 中,团队通过利用配置错误的管理 API,无需触及单个智能合约就获得了完全的治理控制权。
为什么这很重要:被泄露的管理访问权限允许攻击者:
所有这些都无需 Solidity 漏洞。
根据上述事件,以下是你的可操作检查清单:
^ 或 ~;仅使用确切版本npm audit --production;处理高/中风险[ ] EIP-712 类型化数据——人类可读的签名请求
[ ] 合约地址验证——将已知良好地址列入白名单
[ ] 滑点警告——对异常交易参数发出警报
[ ] 无限批准警告——对最大批准进行明确的用户确认
智能合约审计是必要的但不够充分。上述事件证明攻击者已经适应:当你可以简单地入侵 前端 时,为什么还要寻找 重入漏洞 呢?
你的安全堆栈必须包括:
下一个主要的 DeFi 黑客攻击 不会是新颖的智能合约漏洞。它将是一个被泄露的 npm 包、一个被劫持的管理面板,或者一个通过 社会工程学 诱导的 多重签名 签署者。
不要成为那样的协议。
在下一次合约审计之前进行 Web 应用程序安全评估。映射用户和区块链之间的每一个接触点:
User -> Browser -> Extension -> Frontend -> CDN -> Dependencies -> Blockchain
如果任何一层被泄露,你的合约将无法拯救你。
在 Zealynx,我们专注于发现传统审计师错过的漏洞:
联系我们进行全面的安全审查,涵盖你所有的攻击面。
如果我们保护了 前端,智能合约审计仍然必要吗?
绝对必要。智能合约审计能发现逻辑漏洞、经济攻击和升级风险。两层都至关重要。全栈安全 = 合约审计 + Web 应用程序安全 + 基础设施审查。
在 DeFi 中,管理面板泄露有多常见?
比公开披露的更常见。根据 Zealynx 对 2025 年 40 个协议的评估,9 个(23%)在管理界面中存在关键的访问控制缺陷。大多数未被报告是因为尚未发生资金盗窃——但终会发生。
DNS 劫持能否完全预防?
不能完全预防,但可以通过 DNSSEC、多个注册商、监控和 ENS 备用 来大幅降低风险。目标是提高检测速度和减少影响范围。
我们应该停止使用浏览器扩展钱包吗?
不一定,但不要完全依赖它们进行高价值操作。对于重要交易,请使用硬件钱包或 CLI 工具。扩展程序很方便;但它们不足以应对所有情况。
我们今天能做的最有影响力的一个修复是什么?
锁定你的 npm 依赖项 并启用 DNSSEC。这两个措施成本不到 100 美元,并能阻止最常见的攻击载体。
当 UI 可能被泄露时,我们如何验证交易完整性?
要求签署者通过 CLI 工具 或硬件钱包显示屏验证原始 calldata。绝不信任 UI 显示 进行高价值操作。实施 EIP-712 以获取人类可读的签名数据。
| 术语 | 定义 |
|---|---|
| DNSSEC | DNS 安全扩展,通过密码学方式签署 DNS 记录,以防止未经授权的修改和劫持攻击。 |
| 内容安全策略 (CSP) | HTTP 响应头,限制浏览器中可以加载的脚本、样式和资源,从而缓解 XSS 和代码注入攻击。 |
| 子资源完整性 (SRI) | 一种安全功能,允许浏览器使用 加密哈希 验证外部加载的脚本和样式表是否未被篡改。 |
| CSRF | 跨站请求伪造——一种通过利用已认证用户的活动会话,强制他们执行非预期操作的攻击。 |
| EIP-712 | 以太坊的类型化结构化数据签名标准,使交易签名请求可读性更强,帮助用户验证他们正在批准的内容。 |
| SBOM | 软件物料清单——项目中所有软件组件和依赖项的完整清单,用于 供应链安全 和合规性。 |
| JWT | JSON Web Token——一种紧凑的、无状态的认证机制,将声明编码为签名的 JSON 负载,通常用于 API 授权。 |
| 多重签名 | 多重签名钱包,在执行交易前需要 M 个独立签署者中的 N 个批准,将信任分散到多个参与方。 |
- 原文链接: zealynx.io/blogs/weakest...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!