一个智能合约由于未验证的外部调用地址,导致价值320万美元的WBTC被盗。攻击者利用AI技术对未经验证的合约进行逆向工程,找到漏洞并实施攻击。文章强调了AI在DeFi安全领域成为攻防双方的重要工具,并呼吁开发者使用AI技术来增强合约的安全性。

AI 如何帮助我们研究一起 320 万美元的黑客攻击:未经验证的智能合约中的漏洞剖析
我们使用 AI 完全恢复了受害者的源代码,并找到了根本原因——一个允许代表合约执行任意调用的关键漏洞。在本文中,我们将解释这是如何做到的。
时间线
在主要攻击之后,出现了一些模仿者——MEV 机器人和试图利用相同漏洞的模仿者。然而,他们只得到了一些残羹剩饭——总共不超过主要攻击的几个百分点。
受害者合约是一个 Multi-DEX Liquidity Manager(多 DEX 流动性管理器),允许管理跨多个 DEX(Uniswap V3/V4,PancakeSwap)的 LP 头寸。该代码未在 Etherscan 上验证,这使得分析变得复杂。
根本原因:任意外部调用
该漏洞位于合约的内部函数中,该函数旨在执行 swap(交换)操作。问题在于,被调用合约的地址和调用数据完全由用户控制,没有任何验证。
让我们看一下反编译的代码(通过 Dedaub ):
易受攻击的调用 — 第 735-750 行:
// victim_decompiled.dedaub, lines 735-750
// Internal swap function (function 0x1d33)
}
if (0 != !v5) { // v5 = input token address
}
// <<<< VULNERABILITY HERE >>>>
// varg2.word5 = "router" address (controlled by user!)
// MEM[v1d9f.data:...] = calldata for the call (also controlled!)
// No validation — can call ANYTHING on ANY address
v32, /* uint256 */ v33 = address(varg2.word5).call(
MEM[v1d9f.data:v1d9f.data + v1d9f.length]
).value(v0).gas(msg.gas);
if (RETURNDATASIZE()) {
require(RETURNDATASIZE() <= uint64.max, Panic(65));
v34 = new bytes[](RETURNDATASIZE());
// ... result handling ...
}
require(v32, SwapFailure()); // If call fails — revert
这里:
攻击者传递:
由于受害者用户先前已批准受害者合约,因此 transferFrom 调用成功执行——token(代币) 被转移到黑客。
易受攻击的内部函数从公共函数 0x67b34120 调用:
公共函数 — 第 1387-1400 行:
// victim_decompiled.dedaub, lines 1387-1400
// Public payable function — attack entry point
function 0x67b34120(
uint256 varg0, // existingTokenId
uint256 varg1, // amount1Desired
struct(5) varg2, // <<SwapParams — ALL FIELDS CONTROLLED >>
// word0 = isNativeOut
// word1 = amountIn
// word2 = minAmountOut
// word3 = usePermit2
// word4 = spender (for approve!)
// word5 = router (address for .call()!)
// word6 = data (calldata for .call()!)
uint256 varg3, // feeNumerator
...
) public payable {
| Parameter | Controlled By | Validation |
|---|---|---|
router (varg2.word5) |
User | None |
data (varg2.word6) |
User | None |
spender (varg2.word4) |
User | None |
任何人调用函数 0x67b34120 都可以代表合约执行任意调用——包括对用户已批准合约的 token(代币) 执行 transferFrom。
受害者合约未在 Etherscan 上验证,并且攻击者的合约在漏洞利用后立即 self-destruct(自毁)。这产生了一个问题:如何在没有源代码的情况下了解根本原因?
步骤 1:在本地 Fork 上重放攻击
我们在攻击之前的区块上 fork(分叉)了 Ethereum Mainnet(以太坊主网),并使用 Foundry 在本地重放了交易:
forge test --fork-url [$ETH](https://x.com/search?q=%24ETH&src=cashtag_click) _RPC --fork-block-number 24313233
这让我们能够看到:
步骤 2:通过 Dedaub 进行反编译
我们将受害者合约的 bytecode(字节码)加载到 Dedaub Decompiler 中。Dedaub 创建了可读的伪代码,但变量名被混淆了(varg2.word5 而不是 params.router)。
步骤 3:使用 AI 恢复 Solidity
这才是真正有趣的地方。我们使用 SWE agent(软件工程师代理) 从 Dedaub 反编译的输出中恢复完整的 Solidity 代码。
方法论:
步骤 4:创建概念验证
恢复代码后,我们创建了一个 PoC,它:
两个测试都成功窃取了 WBTC,证实了已正确识别出该漏洞。
为什么这很重要?
以前,闭源代码是针对研究人员的相对可靠的防御——反编译需要花费大量精力。但 AI 极大地降低了这些成本:
| Factor | Before | With AI |
|---|---|---|
| Decompilation time | Days/weeks | Hours |
| Required expertise | High | Minimal |
| Human involvement | Constant | Optional |
| Cost | High | Low |
重要提示:黑客进行的现代 AI 反编译是完全自动的,无需人工干预。AI 代理接收 bytecode(字节码) 作为输入,并输出可读的 Solidity。这意味着攻击者可以大规模扫描未经验证的合约。
通过模糊性实现安全不再有效。
逐步重建
步骤 1:准备
黑客部署攻击智能合约 0x5c92884dFE0795db5ee095E68414d6aaBf398130。此合约:
步骤 2:调用易受攻击的函数
攻击智能合约以专门设计的参数在受害者智能合约上调用函数 0x67b34120:
router: 0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599 (WBTC)
data: transferFrom(
0x5240B03Be5Bc101A0082074666dd89aD883e1f9d, // victim user
0xe3E73f1E6acE2B27891D41369919e8F57129e8eA, // hacker
3691897652 // 36.9 WBTC
)
步骤 3:漏洞利用执行
受害者合约执行 params.router.call ( params.data ),这导致:
WBTC.transferFrom(victim_user, hacker, 36.9 WBTC)
由于 victim_user(受害者用户) 先前已批准受害者合约管理他们的 WBTC,因此交易成功。
步骤 4:掩盖踪迹
攻击智能合约执行 SELFDESTRUCT(自毁),销毁其代码并使分析更加困难。

攻击似乎是预先计划好的:
这不是随机发现,而是在未经验证的合约中进行系统性漏洞寻找的结果。
在批准不熟悉的合约之前:
定期监控并撤销不必要的批准。
如果你不需要永久批准——请在使用后撤销它。
此事件表明了 DeFi 安全的新现实:AI 正在改变攻击者和防御者之间的力量平衡。
黑客如何使用 AI
受害者合约未经验证。以前,这意味着分析需要有经验的逆向工程师进行数周的工作。现在:
黑客的准入门槛已大大降低。
AI 如何在调查中帮助我们
我们使用了相同的工具,但用于防御:
军备竞赛
现实是:
在 SavantChat,我们开发用于 DeFi 安全研究的 AI 工具。
我们的结果
我们分析了自 2025 年 8 月以来所有主要的 DeFi 黑客攻击,并:
这次黑客攻击也不例外。
关键论点
如果黑客使用 AI 进行攻击,防御者必须使用 AI 进行防御。
我们无法阻止黑客 AI 工具的开发。但是我们可以将相同的工具提供给防御者——并使它们变得更好。
试试 SavantChat
一切都是完全自动化的,摩擦最小:
没有表格、电话、谈判——只有代码和结果。
这起 320 万美元的 WBTC 黑客攻击不仅仅是另一起事件。它证明了 DeFi 安全领域的格局发生了怎样的变化:
保护自己的唯一方法是在黑客使用 AI 进行攻击之前,先使用 AI 进行防御。
- 原文链接: x.com/savantchat/status/...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!