原文作者: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 DAI10) 償還閃電貸款後,將 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