時間:2023-08-26|瀏覽:254
以Yuno項目的智能合約為例,CertiK安全研究團隊對該無限增發(fā)漏洞進行了詳細(xì)分析,技術(shù)細(xì)節(jié)如下: 在Yuno項目的MasterChef.sol智能合約第1354行,dev方法允許當(dāng)前擁有devaddr身份的智能合約調(diào)用者將devaddr身份轉(zhuǎn)移給另一個地址。
對于Yuno項目智能合約的1282行中的mint方法,截圖顯示它使用了修飾器onlyOwner進行了限制,這意味著只有智能合約的所有者才能執(zhí)行這個合約。
擁有devaddr身份的調(diào)用者,當(dāng)其同時也是owner身份時,可以通過調(diào)用MasterChef.sol智能合約1282行的mint方法無限制地增發(fā)代幣。這個方法會繼續(xù)調(diào)用1130行的mint方法,然后再調(diào)用1044行的_mint方法,最終完成代幣增發(fā)的操作。
Kimichi項目的智能合約中存在的無限增發(fā)漏洞與以上漏洞基本相同,所以在這里不再重復(fù)敘述。
如果owner和devaddr的地址相同,并且在外部沒有對智能合約的所有者進行限制的情況下,智能合約的所有者就有權(quán)力無限制地增發(fā)任意數(shù)量的代幣,這將會給投資者帶來風(fēng)險。那么Yuno和Kimichi這兩個項目中的devaddr和owner是否為同一人呢?是否有其他外部制約機制可以限制這兩個項目的智能合約所有者呢?
下圖顯示Yuno項目MasterChef.sol智能合約中擁有devaddr和owner身份的地址(截至北京時間9月1日晚11點)。
下圖顯示Kimichi項目中KimchiChef.sol智能合約中擁有devaddr和owner身份的地址(截至北京時間9月1日晚11點)。
從以上兩圖可以看出,Yuno項目中擁有devaddr和owner身份的地址是相同的,因此其智能合約的所有者有權(quán)利無限制地增發(fā)代幣。而Kimichi項目中擁有devaddr和owner身份的地址不同,但由于devaddr的身份可以進行轉(zhuǎn)移,所以也存在一定的風(fēng)險。
為了確保無限增發(fā)漏洞不會被觸發(fā),對于Yuno和Kimichi兩個項目的智能合約所有者必須受到外部的限制。目前已經(jīng)采取的限制條件與Sushiswap項目一致,即對由智能合約所有者進行的任何智能合約操作都會有48小時的延遲。智能合約所有者的任何操作都將被所有投資者觀察到,并且有48小時的時間進行應(yīng)對操作。
CertiK安全團隊建議: 1. 當(dāng)前DeFi以及相關(guān)Farming項目異常火爆,由于區(qū)塊鏈項目對項目代碼的公開性有要求,所以上線新項目的門檻很低。如果盲目借鑒其他項目,就可能引入任意漏洞到項目中。因此,在項目上線之前,應(yīng)該對項目進行嚴(yán)格的安全審計。 2. 從投資者的角度來看,當(dāng)前Farming項目動輒有百分之幾千的回報率,很容易促使投資者在沒有充分了解項目本身的情況下盲目投資。例如,SushiSwap、Yuno和Kimchi這三個項目都沒有經(jīng)過嚴(yán)格的安全驗證就迅速上線。投資者可能被巨大的利益回報所迷惑,在有很大風(fēng)險的智能合約中投入寶貴資金。