微信輔助網(wǎng)站制作論壇排名
智能合約安全審計(jì)的意義
智能合約審計(jì)用于整個(gè) DeFi 生態(tài)系統(tǒng),通過(guò)對(duì)協(xié)議代碼的深入審查,可以幫助解決識(shí)別錯(cuò)誤、低效代碼以及這些問(wèn)題。智能合約具有不可篡改的特點(diǎn),這使得審計(jì)成為任何區(qū)塊鏈項(xiàng)目安全流程的關(guān)鍵部分。
代碼審計(jì)對(duì)任何應(yīng)用程序都很重要,但它們對(duì)去中心化應(yīng)用程序 (dApp) 尤其重要,因?yàn)樗鼈兘⒃谄渲系膮^(qū)塊鏈?zhǔn)遣豢勺兊?。如果代碼漏洞導(dǎo)致用戶資金丟失,這些資金將無(wú)法找回。迄今為止,DeFi中的黑客已經(jīng)損失了超過(guò) 50 億美元。
智能合約審計(jì)包括對(duì)一個(gè)協(xié)議的智能合約代碼進(jìn)行詳細(xì)分析,以識(shí)別安全漏洞、不良的編碼實(shí)現(xiàn)方式和低效代碼,然后再提出解決這些問(wèn)題的解決方案。審計(jì)有助于確保跨 Web3 的去中心化應(yīng)用程序的安全性、可靠性和性能。
智能合約代碼最終將部署到 Avalanche、BNB Chain 或 Ethereum 等區(qū)塊鏈中。一旦合約生效,任何人都可以訪問(wèn)它們——從終端用戶到惡意攻擊者——這就是為什么在啟動(dòng)或更新去中心化應(yīng)用程序之前必須解決所有漏洞。
審計(jì)完成后,審計(jì)師會(huì)發(fā)布一份摘要報(bào)告,其中提供有關(guān)審計(jì)結(jié)果、解決方法和任何其他問(wèn)題的詳細(xì)信息,以及未來(lái)解決現(xiàn)存問(wèn)題的路線圖。經(jīng)過(guò)全面的智能合約審計(jì)后,項(xiàng)目可以放心地部署他們的合約,因?yàn)閼?yīng)用程序的安全性有了保證,用戶資金也受到保護(hù)。
被審計(jì)的項(xiàng)目必須先凍結(jié)代碼,并向?qū)徲?jì)員提供技術(shù)文檔,包括代碼庫(kù)、白皮書、架構(gòu)和任何其他相關(guān)材料。該文檔應(yīng)該為審計(jì)員提供有關(guān)代碼旨在實(shí)現(xiàn)的目標(biāo)、范圍和具體實(shí)施的詳細(xì)指南。
安全專家團(tuán)隊(duì)仔細(xì)檢查每一行代碼,找出錯(cuò)誤和漏洞。雖然自動(dòng)化測(cè)試可以很好地識(shí)別代碼中的錯(cuò)誤,但人類工程師更有能力檢測(cè)合約邏輯或架構(gòu)的問(wèn)題、技術(shù)上正確且通過(guò)自動(dòng)化測(cè)試的不良編碼實(shí)現(xiàn)、gas 優(yōu)化以及常見(jiàn)攻擊點(diǎn)(比如說(shuō)搶先交易)
BscScan中某代幣的智能合約如下:
常見(jiàn)漏洞類型
以下是當(dāng)前智能合約審計(jì)清單的一部分的常見(jiàn)漏洞。
重新輸入問(wèn)題
當(dāng)智能合約函數(shù)被不受信任的外部合約調(diào)用時(shí),可能會(huì)發(fā)生重入攻擊。重入攻擊中,使該外部合約能夠通過(guò)遞歸調(diào)用原始合約來(lái)耗盡用戶資金或進(jìn)行其他惡意操作。
整數(shù)上溢和下溢
當(dāng)智能合約執(zhí)行算術(shù)運(yùn)算輸出超過(guò)當(dāng)前存儲(chǔ)容量的數(shù)字時(shí),可能會(huì)發(fā)生整數(shù)溢出或下溢,從而導(dǎo)致計(jì)算錯(cuò)誤。
搶先交易機(jī)會(huì)
設(shè)計(jì)不合理的代碼可能會(huì)泄露有關(guān)dApp尚未發(fā)生的交易信息,其他用戶可以先運(yùn)行這些信息,以犧牲協(xié)議為代價(jià)換取鎖定利潤(rùn)。
重放攻擊
當(dāng)數(shù)據(jù)出現(xiàn)故障延遲或重復(fù)時(shí),就會(huì)發(fā)生重播攻擊,尤其是在硬分叉事件期間,攻擊者可以使用新的系統(tǒng)上的消息從遺留系統(tǒng)中提取資金。
隨機(jī)數(shù)漏洞
如果dApp使用公開(kāi)的數(shù)字(例如塊哈希)來(lái)播種隨機(jī)數(shù),則它很容易被利用,這就是為什么許多協(xié)議使用Chainlink VRF來(lái)實(shí)現(xiàn)隨機(jī)性。
函數(shù)可見(jiàn)性錯(cuò)誤
打算私有的函數(shù)必須定義為私有的,因?yàn)镾olidity中的默認(rèn)可見(jiàn)性屬性是公共的。如果是公開(kāi)的,任何人都可以調(diào)用該函數(shù)。
中心化風(fēng)險(xiǎn)
中心化機(jī)制有單點(diǎn)故障的問(wèn)題,如果單個(gè)私鑰或類似密鑰被泄露,可能會(huì)破壞協(xié)議的安全性。時(shí)間鎖和授予 DAO 特權(quán)是處理中心化風(fēng)險(xiǎn)的常用技術(shù)。
未鎖定編譯器版本
Solidity有許多編譯器版本。dApps應(yīng)該鎖定他們使用的編譯器版本,這樣用戶就不能用不同的版本編譯它,否則這可能會(huì)導(dǎo)致不同的字節(jié)碼和意想不到的問(wèn)題。
智能合約安全審計(jì)工具
流行的智能合約安全審計(jì)工具包括:
Echidna – 一個(gè) Haskell 程序,專為模糊測(cè)試的以太坊智能合約而設(shè)計(jì)。
Ethlint — 分析Solidity代碼的風(fēng)格和安全問(wèn)題并幫助解決這些問(wèn)題。
Mythril – EVM字節(jié)碼安全分析工具,使用符號(hào)執(zhí)行(symbolic execution)、SMT求解(SMT solving)和污點(diǎn)分析(taint analysis)來(lái)檢測(cè)各種安全漏洞。
MythX – 自動(dòng)掃描以太坊和其他基于EVM的區(qū)塊鏈智能合約中的安全漏洞。
Rattle — 一個(gè)使用流敏感分析(flow-sensitive analysis)的EVM二進(jìn)制靜態(tài)分析框架。
Slither – 針對(duì)安全漏洞和最佳實(shí)踐對(duì)Solidity源代碼進(jìn)行靜態(tài)分析。
Solgraph — 生成一個(gè)DOT圖,可視化功能控制流并顯示潛在的安全漏洞。
Scribble – 規(guī)范語(yǔ)言和運(yùn)行時(shí)驗(yàn)證工具,可將高級(jí)規(guī)范轉(zhuǎn)換為Solidity代碼。