鴕鳥區塊鏈

SharkTeam獨家分析 | 鎖倉越大,風險越大:Compound第62提案升級導致獎勵分發過多漏洞分析

SharkTeam 2021-10-12 17:10
摘要:

鎖倉越大,風險越大:Compound第62提案升級導致獎勵分發過多漏洞分析

Compound是一個老牌的去中心化借貸平臺,鎖倉量已超過100億美元。其運營管理方式是DAO,通過社區和提案機制來升級系統。2021年9月30日,Compound DAO出現這樣一條提案(Proposals 62: https://compound.finance/governance/proposals/62   ),該提案提出更新 Comptroller 合約以修復一些 Bug。然后該提案升級卻引入了嚴重的安全問題。

image.png

Compound官方聲明,該漏洞是由于Compound的62次提案升級所導致。https://compound.finance/governance/proposals/62 

image.png

升級主要做了以下改變:

1.使用 Comptroller#compBorrowSpeeds 和Comptroller#compSupplySpeeds來代替Comptroller#compSpeedsstorage類型變量;

2.Comptroller#_setCompSpeeds(CToken[],uint256[],uint256[])來對Comptroller#_setCompSpeed(CToken,uint256) 進行升級;

3.設定所有新增的初始化的市場狀態指數(initial index is 1e36);

原本設定所有未初始化的市場狀態指數是為了解決惰性初始化導致的許多其他問題,來解決之前存在的整數溢出漏洞,但是并沒有全面考慮到如此的升級對原本的功能的影響!

該漏洞產生的條件:

需要在62次提案更新之前與某些特定代幣(cSAI、cTUSD、cMKR、cSUSHI、cAAVE、cYFI)進行存款或借款,并留有一定的余額,就可以獲得大量的comp收益獎勵。 

以其中一個交易為例進行分析:https://etherscan.io/tx/0xee318650ae8bcf83517e77e8654d40201990080fcb888087f737aea28e70bdb1

image.png

獲利者地址為(0xab5a193a11f779fe105e8edf9815a0b514b013ca),通過claimCmop函數來提取收益,但是卻獲得了22,995.930896459946832819 枚comp的收益,這個數字遠遠大于應獲得的收益。

image.png

通過交易追蹤發現,該獲利者在領取借貸代幣(cUSDT)的獎勵時,獲得了大量的comp代幣( 22,995.425435193061317525枚)。

image.png

用戶借貸comp獎勵的公式為:borrowerAmount * deltaIndex(即:借款數量*獎勵因子)。deltaIndex = borrowIndex - borrowerIndex(獎勵因子 = 池借貸指數 - 用戶借貸指數),由于第62次提案的升級,cUSDT池借貸指數被初始化為 compInitialIndex (1e36),而此時用戶的借貸指數為0,導致算出的獎勵因子deltaIndex非常大為1e36。合約正常邏輯應該先通過if (borrowerIndex == 0 && borrowIndex > = compInitialIndex) 該分支的判斷,使用戶的借貸指數進行更新為compInitialIndex(1e36),才可以進行獎勵的計算!此處由于 borrowIndex > compInitialIndex(缺少等號) 導致繞過該判斷,直接進行獎勵計算,導致獎勵因子計算出的值非常的大。

image.png

image.png

該用戶在62次提案更新之前的一筆cUSDT的借款,為其帶來了22,995枚comp的”收益“。因此該漏洞并不是任何人都可以獲利,需要在62次提案更新之前與某些特定代幣進行存款或借款,并留有一定的余額,就可以獲得大量的comp收益獎勵。

image.png

通過更新提案可知,這些特定代幣為cTUSD、cAAVE、cSAI、cSUSHI、cMKR、cYFI這6種代幣,其池借貸指數和存款指數均被初始化為1e36!

后續:

image.png

Compound創始人表示拿出多出來收益的10%作為白帽獎勵,希望獲利的用戶可以歸還多出來的獎勵,并通過提案63,64對問題進行了修復。目前部分用戶已歸還了獎勵。

啟示:Compound雖然通過DAO的管理模式進行自治,但是在每次進行協議提案升級之前是否進行充分的安全性驗證?當問題突發時,需要一定的提案過程與時間才可以對問題進行修復。這暴露了DAO對突發問題機動能力不足的問題,代碼部署上鏈前一定要做好充足的審計與測試工作。

SharkTeam提醒您,在涉足區塊鏈項目時請提高警惕,選擇更穩定、更安全,且經過完備多輪審計的公鏈和項目,切不可將您的資產置于風險之中,淪為黑客的提款機。而作為項目方,智能合約安全關系用戶的財產安全,至關重要!區塊鏈項目方應與專業的安全審計公司合作,進行多輪審計,避免合約中的狀態和計算錯誤,為用戶的數字資產安全和項目本身安全提供保障。

SharkTeam作為領先的區塊鏈安全服務團隊,為開發者提供智能合約審計服務。智能合約審計服務由人工審計和自動化審計構成,滿足不同客戶需求,獨家實現覆蓋高級語言層、虛擬機層、區塊鏈層、業務邏輯層四個方面近兩百項審計內容,全面保障智能合約安全。

image.png

==

和2萬人一起加入鴕鳥社群

添加QQ群:645991580

添加TG群:鴕鳥中文社區 https://t.me/tuoniaox

聲明: 鴕鳥區塊鏈所有發布內容均為原創或授權發布,如需轉載,請務必注明文章作者以及來源:鴕鳥區塊鏈(微信公眾號:MyTuoniao),任何不尊重原創的行為鴕鳥區塊鏈都將進行責任追究!鴕鳥區塊鏈報道和發布內容,不構成任何投資建議。

SharkTeam

——

65 篇 作品
斗牌TV宝爷