2022年4月17日,成都鏈安鏈必應-區塊鏈安全態勢感知平台輿情監測顯示,算法穩定幣項目Beanstalk Farms遭黑客攻擊,黑客獲利近8000萬美元,成都鏈安技術團隊第一時間對事件進行了分析,結果如下。
1 事件相關信息
攻擊交易
0xcd314668aaa9bbfebaf1a0bd2b6553d01dd58899c508d4729fa7311dc5d33ad7
攻擊者地址
0x1c5dcdd006ea78a7e4783f9e6021c32935a10fb4
攻擊合約
0x79224bC0bf70EC34F0ef56ed8251619499a59dEf
被攻擊合約
0xc1e088fc1323b20bcbee9bd1b9fc9546db5624c5
2 攻擊流程
1. 攻擊者從攻擊的前一天發起了提案交易,提案通過會提取Beanstalk: Beanstalk Protocol合約中的資金。
2. 黑客通過閃電貸換取了350,000,000個DAI,500,000,000個USDC,150,000,000個USDT,32,100,950個BEAN和11,643,065個LUSD作為資金儲備。
3. 黑客將2步驟的DAI,USDC,USDT資金在Curve.fi DAI/USDC/USDT交易池中添加為979,691,328個3Crv流動性代幣,用15,000,000個3Crv換來15,251,318個LUSD。
4. 將964,691,328個3Crv代幣兌換為795,425,740個BEAN3CRV-f用於投票,將32,100,950個BEAN和26,894,383LUSD添加流動性得到58,924,887個BEANLUSD-f流動性代幣。
5. 使用4步驟中的BEAN3CRV-f和BEANLUSD-f來對提案進行投票,導致提案通過。從而Beanstalk: Beanstalk Protocol合約向攻擊合約轉入了36,084,584個BEAN,0.54個UNI-V2,874,663,982個BEAN3CRV-f以及60,562,844個BEANLUSD-f。
6. 最後攻擊者將流動性移除並歸還閃電貸,把多餘的代幣兌換為24830個ETH轉入攻擊者賬戶中。
3 漏洞分析
本次攻擊主要利用了投票合約中的票數是根據賬戶中的代幣持有量得到的。
攻擊者至少在一天前發起提取Beanstalk: Beanstalk Protocol資金的提案,然後調用emergencyCommit進行緊急提交來執行提案,這個就是攻擊者1天之前發起攻擊準備的原因所在。
4 資金追踪
截止發文時,攻擊者獲利22029601 個USDC ,14742429個DAI,6,603,829個USDT與0.5407個UNI-V2,640224美元的BAEN代幣資金近8000萬,在攻擊時將其中的25萬USDC捐贈了烏克蘭,之後攻擊者將資金轉換為ETH並將資金持續向Tornado.Cash轉移。
針對本次事件,成都鏈安技術團隊建議:
1. 投票所用資金應在合約中鎖定一定時間,避免使用賬戶的當前資金餘額來統計投票數量,以避免可能出現的反复投票以及使用閃電貸進行投票;
2. 項目方和社區應關注所有提案,如果提案是惡意提案,建議在提案投票期間應及時做出處理措施,將提案廢棄,禁止其接受投票以及執行;
3. 可考慮禁止合約地址參與投票;此外項目上線前最好進行全面的安全審計,規避安全風險。