autorenew
EVM 代理黑客再次出击:在 Base 及其他链上保护智能合约

EVM 代理黑客再次出击:在 Base 及其他链上保护智能合约

嗨,各位区块链爱好者!如果你正在深入智能合约开发,尤其是在 EVM 兼容链上工作,就必须对安全威胁保持高度警惕。最近关于代理初始化投毒攻击(proxy initialization poisoning attacks)卷土重来的讨论很多——甚至出现在像 Base 这样没有传统 MEV 的链上。下面我们逐步解析这一问题,参考 Trading Protocol 联合创始人 Mikko Ohtamaa(@moo9000)的一篇详细推文串,帮你理解风险以及如何缓解。

首先,为什么这么多人紧张?几周前,VennBuild、Dedaub 等安全团队发现了一场大规模活动,黑客在数千个智能合约里偷渡后门,导致超过 1000 万美元的风险。这些团队在坏人得手前挽回了大部分资金,但对整个生态仍是一次警钟。

EVM 代理黑客攻击示意图

这类攻击围绕代理合约展开,代理是 EVM 链上实现合约可升级性的常见方案。你知道的,2014 年的 Ethereum Virtual Machine (EVM) 机制本身不支持原生代码升级——不像一些较新的链比如 NEAR Protocol。于是开发者用代理:部署一个代理合约,代理指向保存实际逻辑的实现合约(implementation contract)。用户与代理交互,代理把调用转发给实现合约;合约所有者日后可以通过更换实现合约地址来“升级”逻辑。

解释代理合约模式的示意图

问题出在流程通常分两步:先部署代理,然后通过设置实现地址来初始化它。黑客利用这两步之间的时间窗——监控链上代理部署并抢先初始化,设置他们自己的恶意实现合约。结果——代理指向了允许他们清空资金或造成严重破坏的代码。

过去攻击者多利用 Miner Extractable Value (MEV) 来抢先交易。MEV 本质上是区块生产者为牟利而重新排序交易的行为,经常带有恶意倾向。像 Shutter Network 这样的解决方案存在,但还没普及。令人警觉的新情况是,这类攻击发生在 Base 上——这是 Coinbase 的一个 layer-2,使用中心化 sequencer。理论上这里没有传统的 MEV,因为 Coinbase 控制交易排序。那么黑客是怎么做到的?很可能是跑了监视部署的机器人,或者利用了 JSON-RPC 提供商的泄露——这类问题过去也发生过。

甚至像 Etherscan 这样的区块浏览器也被蒙蔽。攻击者在一次抢先交易里设置了两个不同的代理槽:一个是老的 OpenZeppelin 槽,填入一个看起来无害的地址(Etherscan 会优先检查这个),另一个是标准的 EIP-1967 槽,放入恶意地址。很狡猾,对吧?

在 Base 上的攻击者通过 FixedFloat(一种黑客常用的跨链桥)获得资金,这将此次活动与早期攻击串联起来。一个受害者使用 Gnosis Safe 进行部署,结果在 Base 上部署后仅两块区块就丧失了控制权。

那么,如何自保?关键是尽量在单笔交易中完成部署和初始化。像 Foundry 的脚本可以帮你做到这一点,或者参考一些现成的实现思路。为了多链一致性,可以试试 emo.eth 的 Deterministic Proxy Factory——它能确保跨链相同地址的部署。

Deterministic Proxy Factory GitHub 仓库截图

在像 Base 这样的 layer-2 上,始终建议直接广播到 sequencer,以避免 mempool 泄露。像 web3-ethereum-defi 这样的库可以帮你处理这类广播。想了解更多细节,可以深入阅读这篇 Ethereum Stack Exchange 讨论

关于该问题的 Ethereum Stack Exchange 帖子

完整的事态经过(包含区块号)展示了这些调用能有多近的时间差。如果你是开发者,建议加入 Ethereum Security Researchers 的 Telegram 群组,参与持续的讨论并获取实用建议。

在 meme 代币世界里,快速部署很常见,这类漏洞可能会给你的项目带来灾难性后果。保持谨慎、审计你的部署流程,记住:在区块链上,速度和安全必须并重。有问题吗?在评论里提出来或去找专家问问!

Base 攻击的交易详情

你可能感兴趣