前言
北京時間2022 年5 月9 日,知道創宇區塊鏈安全實驗室監測到BSC 鏈上借貸協議Fortress Protocol 因預言機問題被攻擊,這是最近實驗室檢測到的第三起預言機攻擊事件,損失包括1,048 枚ETH 和400,000 枚DAI,共計約300W 美元,目前已使用AnySwap 和Celer 跨鏈到以太坊利用Tornado 進行混幣。
知道創宇區塊鏈安全實驗室第一時間跟踪本次事件並分析。
基礎信息
被攻擊Comtroller:0x01bfa5c99326464b8a1e1d411bb4783bb91ea629
被攻擊預言機地址:0xc11b687cd6061a6516e23769e4657b6efa25d78e
攻擊者地址:0xA6AF2872176320015f8ddB2ba013B38Cb35d22Ad
攻擊合約:0xcD337b920678cF35143322Ab31ab8977C3463a45
tx:0x13d19809b19ac512da6d110764caee75e2157ea62cb70937c8d9471afcb061bf
漏洞分析
該項目是依舊是Compound 的仿盤,但由於項目方在預言機實現註釋了原本存在的檢查導致不需要足夠的power 便可以通過0xc11b687cd6061a6516e23769e4657b6efa25d78e#submit篡改價格;
攻擊者通過改變FTS 在協議中的價格借走了其他池子中的資產,市場中的借貸池如下:
攻擊流程
1、攻擊者購買了FTS 代幣並通過提案投票支持添加FTS 作為抵押物,提案ID為11;
2、通過調用預言機submit 函數改變FTS 的價格;
3、攻擊者使用100 個FTS 作為抵押物調用enterMarket 進入市場;
4、由於市場價格對於FTS 的價值計算出現問題,攻擊者使用該抵押品直接調用borrow 進行借款;
借取的資產:
5、由於100 個FTS 沒什麼價值不需要取回,而攻擊者後續仍將其他用於第一步的FTS 還在Pancake 兌換進行了徹底的套現。
總結
本次攻擊原因是Compound 仿盤在預言機使用時出現了問題。近期大量Compound 仿盤項目被攻擊,我們敦促所有Fork 了Compound 的項目方主動自查,目前已知的攻擊主要歸結於如下幾個問題:
千里之堤毀於蟻穴。從內部調用可見,本次攻擊者使用getAllMarkets 依次遍歷拿取了全部市場的底層資產並將FTS 徹底套現。建議項目方對於自己有不一樣的實現上一定要建立在充分的理解和足夠的第三方安全審計上。一點小的誤差將可能導致項目的全盤損失。