原文作者:Jaleel、0x22D,BlockBeats
3 月 13 日下午 5 时,Euler Finance 疑遭黑客闪电贷攻击。Euler Finance 在本次黑客闪电贷攻击事件中的受损金额总计约为 1.97 亿美元,其中包括超 880 万枚 DAI、849 枚 WBTC、3400 万 枚 USDC 以及 8.5 万枚 stETH 等。对此,Euler Finance 随即回复正与安全专业人员及执法部门合作,Euler Finance 提出解决方案称,受到该漏洞影响的人将能够要求退款,金库剩余资金可以用于处理退款。
黑客是如何攻击 Euler 的?目前哪些协议受到了影响?曾经为 Euler 提供审计的公司有哪些?BlockBeats 进行了简要梳理。
Euler Finance 审计合作伙伴之一 Omniscia 发布了一份事后技术分析报告,对这次攻击进行了非常详细的分析,并指出被利用的漏洞源于 Euler 没有对进行捐赠的地址而进行适当的安全检查。
该漏洞代码是在 eIP-14 中被引入的,eIP-14 协议引入了整个 Euler 生态系统中的多个更改。缺陷存在于 EToken 实现 ( EToken: donateToReserves feature )所做的第一个更改中。于是攻击者利用了易受攻击的代码,允许它通过向协议的储备金捐赠资金来创建无担保的代币债务头寸,使得攻击者能够清算这些账户并从清算奖金中获利。
具体地说,清算模块内部逻辑尝试还清违规者的全部债务,但如果拥有的抵押品无法满足预期还款收益率,则系统会默认使用用户拥有的任何其他抵押品。此代码块的假设状态是,当借款人拥有多种抵押品并且没收所有这些抵押品不会使违规者恢复偿付能力时,就会发生这种情况。
这种安全保障并不受捐赠机制的支持,该机制允许用户以杠杆的形式创造「坏账」,这种杠杆是通过捐赠他们的 EToken 单位而没有抵押的,而不会影响其 DToken 余额。
图源来自 Arkham Intelligence
据 Arkham 的调查发现,攻击者使用了 20 多个不同的合约地址,以获取来自 Euler 的各种加密资产。对于每一种资产,黑客都部署了两个合约:一个「违规者」和一个「清算者」。「违反者」使用捐赠功能来推翻 Euler 的逻辑,「清算者」随后清理残留物。
黑客的具体执行流程如下:
1)首先,从 Balancer / Aave v2 中提取一笔闪电贷,借取 30M DAI
2)部署两个合约:违规者和清算人。由「违规者」存入,「清算人」则负责在同一笔交易中平仓
3)存入资金的 2/3 到 Euler,将 20M DAI 发送到 Euler 并收到 19.5M eDAI
4)接着借入存款金额的 10 倍,从 Euler 收到 195.6M eDAI 和 200M dDAI
5)使用剩余 1/3 的资金偿还部分债务,发送了 10M DAI 并烧毁了 10M dDAI
6)重复第 4 步,从 Euler 收到 195.6M eDAI 和 200M dDAI
7) 捐赠已偿还资金的 10 倍,向 Euler 捐赠了 1 亿 eDAI
8)接着「清算员」上线,因为 eDAI < dDAI 而清算违规账户,从违规者处获得了 310M eDAI 和 259M dDAI 的债务
9)再从 Euler 提取所有代币金额,包括提取了 38.9M DAI 10) 偿还闪电贷款后,将 USDC 和 WBTC 兑换为 DAI 和 ETH
图源来自 Arkham Intelligence
该漏洞实际上发生在两个不同的地址集群中。上面的地址用于跨非 DAI 代币执行漏洞利用。两个单独的地址用于调用和执行 DAI 上的漏洞利用函数。
标记为「接收人」的地址是用于执行漏洞利用(并随后接收漏洞利用资金)的合约地址。绝大部分资金被发送到标记为「持有人」的单独地址。该地址目前持有价值 1.92 亿美元的加密货币。
图源来自 Arkham Intelligence
wETH 利用的利润被发送到另一个地址。Main Caller 地址持有大约 8K ETH,目前价值近 1360 万美元,这是从 Euler wETH 市场中移除的所有 ETH。
据 PeckShield 的监测显示,Euler Finance 攻击者目前已通过 0xc66d 开头地址,至少转入了 100 枚以太坊到 Tornado Cash,同时据链上侦探 ZachXBT 分析,该地址曾于几周前攻击了一些 BSC 上的协议,所盗资金同样也存入了 Tornado Cash。和多数人猜测的一样,几乎可以肯定该攻击者是一名黑帽。
此次 Euler 的攻击事件波及面较广,影响了数个与 Euler 有关的 defi 协议,其中包括:
Euler Finance 的漏洞影响了尝试提取资金的 Aztec Connect 用户,目前受影响的用户处于无法提款的状态。Aztec 无法控制与 Euler 的集成,目前 Aztec Connect 功能可以正常使用。
此外值得关注的是,Aztec 发布公告称,Aztec Connect 是世界上第一个隐私 Rollup,其设计存在一些问题,增加了维护成本。考虑到项目的规模和商业层面的因素,Aztec 即将关闭 Connect,所有的工程资源都将投入构建 L2 隐私协议 Noir,下一版本将支持默认隐私的全编程智能合约。(BlockBeats 注,更多关于 Aztec 即将关闭 Connec 的内容请阅读《Aztec 专访:关闭 Connect 是商业层面考虑,正继续构建 L2 隐私协议 Noir》
Yield Protocol 因 Euler 攻击事件已关闭主网借贷相关操作,Yield 的主网流动性池建立在 Euler 上,Euler 暂停了主网合约,目前 Yield 已经下架应用程序,并在官网 UI 中关闭借贷入口。
在 Euler Finance 攻击事件中,约 1190 万美元从 bbeUSD 流动性池中被发送给 Euler,占了该流动性池 TVL 的 65%,bbeUSD 也被存入了其他 4 个流动性池:wstETH/bbeUSD、rETH/bbeUSD、TEMPLE/bbeUSD、DOLA/bbeUSD,所有其他的 Balancer 流动性池都是安全的。 由于采取了保护剩余资金的措施,UI 目前不支持现有 LP 退出这些 bbeUSD 池中的头寸,但不存在资金进一步损失的风险。bbeUSD 池用户可以使用 UI 按比例提取 Token 和 bbeUSD,但在 Euler 恢复 eTokens(例如 eDAI/DAI)的可转让性之前,无法从 bbeUSD 撤回资金。
SwissBorg 在 Euler 中存入了 6357 枚以太坊和 170 万枚 USDT,攻击事件发生后,SwissBorg 迅速借出了 4752 枚 cbETH 以减少损失,但仍滞留和损失了损失了大约 1617.23 ETH(或仅占该计划认购总资产的 2.27%)和将近 170 万 USDT(占认购该计划总资产的 29.52%)。
SwissBorg 称,幸运的是,为防止这些场景的出现,已在多年前就做了很多准备,包括风险理程序,因此损失的程度很小。SwissBorg 将承担在该事件中发生的所有损失,用户不会因此而遭受任何损失。
DeFi 协议 Idle Finance 发文表示,经过调查,Euler Finance 事件对协议 Yield Tranches 策略的敞口涉及约 535 万美元稳定币及 320 枚 ETH,Best Yield 策略的敞口涉及 480 万美元稳定币和 313 枚 ETH。
此外 Idle Finance 强调实际影响将取决于 Euler 团队采取的行动和可能采取的缓解措施,以上数字并非实际回撤,而是锁定在 Euler 的实际数字。Idle Finance 还表示 Senior/Junior Best Yield DAI 金库上周由于 USDC 脱锚,已将所有资金转移到 Aave,因此该金库(总 TVL 为 1120 万美元)未受 Euler 事件影响,并且现在正在按预期运行并从 Aave 获得收益。
去中心化稳定币协议 Angle Protocol 在社交媒体上发文表示:「Angle Protocol 受 Euler 漏洞利用的影响,该协议将 1760 万枚 USDC 存入 Euler。该协议已暂停,债务上限设置为 0,Euler AMO 已关闭。正在监视情况,并会在收到更新后立即进行更新。」
此外 Angle Protocol 称:在 Euler 黑客入侵之前,Angle Core 模块 TVL 约为 3600 万美元,1720 万枚 agEUR 已通过核心模块铸造。该协议中还有: 来自标准流动性提供商的约 1160 万美元存款;来自对冲代理人的约 3.53 万美元存款;盈余约 558 万美元。
如果黑客入侵的资金 (17,614,940.03 USDC) 确定会丢失,Angle 核心模块的 TVL 将下降到大约 1840 万美元。在这种情况下,核心模块中的准备金数量将低于 agEUR 持有人、标准流动性提供商和协议中剩余对冲代理的债权价值。
DeFi 收益聚合器 Yearn 称,虽然没有直接暴露于 Euler 被攻击事件,但一些 Yearn 金库由于使用 Idle 和 Angle 的策略而间接暴露于黑客攻击。其中,在 yvUSDT 和 yvUSDC 上的风险敞口总计 138 万美元,任何剩余的坏账将由 Yearn 金库承担,所有金库都将保持开放并全面运作。
事件一出,各路舆论纷纷表达了对区块链安全审计公司的不信任。这样实力雄厚,有能力找 6 家安全公司为自己进行审计的项目,居然也能出现损失上亿美元的漏洞。「DeFi 完了」、「审计无用」的声音四处回响,然而,这 6 家审计公司真的都无视了 Euler 的漏洞吗?
Certora 是一家总部位于以色列的区块链安全公司,为智能合约提供安全分析工具和服务。2022 年 5 月,Certora 在由 Jump Crypto 领投的 B 轮融资中筹集了 3600 万美元。在获得 3600 万美元融资前,Certora 已为 Aave、Compound、Balancer 和 SushiSwap 找出过漏洞,这些漏洞的大部分在代码部署之前被发现并立即得到了修复。
Certora 于 2021 年 9 月至 10 月期间对 Euler 进行了审计。在其出具的审计报告中,Certora 指出 Euler 的代码中含有 3 个严重程度为高的问题,4 个严重程度为中的问题,2 个严重程度为低的问题,最严重的问题是用户可通过一些手段逃避清算。
由于引起本次被盗事件的代码来自 Euler2022 年 7 月才引入的新提案 eIP-14,因此 Certora 在本次事件中无需承担责任。
Halborn 是一家总部位于迈阿密的区块链安全公司,2022 年 7 月,Halborn 宣布完成 9000 万美元 A 轮融资,Summit Partners 领投,Castle Island Ventures、Digital Colurncom Group 和 Brevan Howard 等参投。Halborn 的用户不乏 Solana、Avalanche、BAYC 这样的知名项目。
由于 Halborn 对 Euler 审计发生在 2021 年 5 月至 6 月期间,早于 eIP-14 被引入的时间,因此 Halborn 同样无需承担责任。
Solidified 和 ZK Labs 两家区块链安全公司曾分别为 OpenSea、Tether、Cosmos 等项目提供审计服务,并于 2021 年 5 月联合对 Euler 进行了审计,因此无需在本次事件中承担责任。
Pen Test Partners 是一家不止专注于区块链领域的网络安全公司。2022 年 6 月,Pen Test Partners 对 Euler DApp 的安全性进行了审计,并于审计报告中给出了「该 App 可以很好地抵御攻击,对 Euler 基础设施和用户数据带来的风险较低」的结论。Pen Test Partners 同样无需承担责任。
Omniscia 是一支由经验丰富的智能合约审计员和开发者组成的去中心化团队,在构建和保护复杂的去中心化网络和应用程序方面拥有深厚的专业知识,审计服务对象包括 Polygon、Ava Labs 等 240 个项目和公司。
Omniscia 分别于 2022 年 3 月、6 月、9 月对 Euler 进行了 3 次审计,分别针对 Merkle 质押挖矿安全、Chainlink 相关功能安全、Swap Hub 安全。虽然最后一次审计发生在 eIP-14 被提出的 2 个月后,但由于 eIP-14 不在这 3 次审计所包括的范围内,因此 Omniscia 并未出现重大失误。
SHERLOCK 是一个智能合约保险服务与审计平台,为 Opyn、Euler、Lyra、Tempus、LiquiFi 和 Hook 等客户提供总计 1000 万美元的链上漏洞保险与奖励赏金。
SHERLOCK 共为 Euler 进行过 3 次审计。第一次于 2021 年 12 月由审计员 Chris Michel 完成,然后于 2022 年 1 月由审计员 shw9453 进行了更新。而最后一次审计正是由审计员 WatchPug 于 2022 年 7 月完成的,对引发此次攻击事件的 eIP-14 进行的审计。
WatchPug 在 eIP-14 的代码中发现了 7 处问题,但并没有发现此次事件的导火索,EToken:donateToReserves。
SHERLOCK 表示愿意承担责任,并发起了 450 万美元赔偿计划,目前已经赔付 330 万美元,不过这与损失的 2 亿美元相比实在太少了。
尽管引入漏洞函数的最后一次审查,是由 SHERLOCK 公司负责审计,与其余 5 家审计公司没有直接关系。但面对这样的全明星 VC 投资,多个知名的 defi 协议作为上游资金提供商,却在短短时间里被黑了近 2 亿美金,波及资金如此巨大,许多社区成员表示,Euler 的这次攻击事件对 Defi 造成了不小的心理打击。
比起「审计无用」的声音,此次事件其实更加凸显了区块链安全审计的重要性和目前审计流程的局限性。审计方的人为失误,审计范围的不明确和对新提案的审计,是目前影响审计有效性的主要因素。对本次事件负有主要责任的 SHERLOCK 其实已经认识到了这些问题。
SHERLOCK 在 2022 年 8 月表示,花很多钱让几个人用 4 个月的时间检查你的代码等于上当受骗,不要再上当了,Don't be fooled again。SHERLOCK 引入传统安全领域的夺旗赛形式,以 USDC 作为奖励,以单个项目为单位,启动漏洞寻找竞赛,以此利用上百人规模的更广泛社区的力量。
可惜的是,由于 eIP-14 的发布时间在 SHERLOCK 推出新的审计机制之前,仍然只靠几位审计员单打独斗完成,因此 SHERLOCK 成了自己口中让别人上当的存在,Euler is fooled。
欢迎加入律动 BlockBeats 官方社群:
Telegram 订阅群:https://t.me/theblockbeats
Telegram 交流群:https://t.me/BlockBeats_App
Twitter 官方账号:https://twitter.com/BlockBeatsAsia