什麼是區塊鏈代碼審計?
審核智能合約是啟動 dApp 之前的重要一步:第三方審核員可以發現團隊本身可能遺漏的漏洞。審計是使用自動化工具和仔細的手動分析進行的,以防止大多數黑客攻擊。了解如何進行審計以及為什麼不應該投資未經審計的協議。
簡而言之
- 審計過程包括項目評審、自動化測試、手動代碼評審和同行評審。之後,將編制一份詳細報告,其中列出了檢測到的漏洞和消除這些漏洞的建議。
- 自動化的智能合約測試工具可以讓你發現常見的漏洞,例如重入、事務重排序、溢出和時間戳依賴。最受歡迎的樂器是 Mythril、Manticore、Slither 和 Oyente。
- 自動化測試可以節省大量時間,但可能會遺漏代碼中的錯誤或給出誤報。因此,需要手動逐行分析代碼。
- 大多數審計公司與 Solidity 和 EVM 網絡以及 Solana 合作,但有些審計公司,如 OtterSec 和 Halborn,已經在與 Move 合作。 Move 是一種比 Solidity 安全得多的語言,但 Move 上的 dApp 仍需要審核:例如,Pontem Wallet 正在進行第三次審核。
- 未經審計的 dApp 是黑客的常見目標 - 或者它們可能由於內部錯誤而簡單地崩潰。突出的例子是 Nomad、Beanstalk 和 Yam Finance。
- 領先的智能合約審計師包括 Hacken、OtterSec、CertiK、ConsenSys Diligence、Halborn 和 Quantstamp。
什麼是智能合約審計,為什麼它如此重要?
區塊鏈代碼或智能合約的審計是對區塊鍊或 dApp 代碼的分析,由其創建者或第三方審計員執行,其目的是發現錯誤、漏洞和錯誤。
區塊鏈安全是Vitalik Buterin 著名的三難困境的一部分:安全性、可擴展性和去中心化。網絡或 dApp 的這三個關鍵方面必須保持平衡。
與任何軟件項目一樣,dApp 加密貨幣必須可靠穩定地運行,否則客戶將很快對其失去信心。但在區塊鏈的情況下,風險更高,因為數億美元的流動性可以存儲在 dApp 中——如果黑客發現合約代碼存在漏洞,所有這些資金都可以在一次攻擊中提取。
防止這種情況的一個關鍵方法是第三方提供的代碼審計。我們將看看智能合約審計是如何工作的,它可以發現哪些漏洞,哪些公司在該領域開展業務,最後,跳過審計會如何導致災難性損失。
區塊鏈審計的 5 個步驟
- 設計分析和頂層代碼分析
外部審計團隊需要對項目有一個很好的了解:它的架構、業務邏輯、實際應用等。許多主要的 DeFi 漏洞利用針對應用程序邏輯或經濟漏洞中的漏洞。當驗證者能夠指出這樣的邏輯缺陷時,這是很棒的,儘管這可能超出了智能合約審計本身的範圍。
客戶還應描述審核的目標、應如何進行測試、應測試哪些用例以及其他關鍵信息。
接下來,審計團隊讀取整個存儲庫以了解 dApp 邏輯是如何實現的。
2. 自動化測試
測試智能合約的軟件工具還不是很多,而且幾乎都是為 Solidity 和 EVM 網絡設計的。他們無法發現業務邏輯或代幣經濟學中的缺陷,但可以為審計人員節省大量時間。其中最受歡迎的是:
ConsenSys 的 Mythril是一個功能強大的開源工具,可以檢測許多關鍵錯誤;包含在MythX安全包中。
- Manticore是一個工具,它通過輸入字符來查看各種攻擊場景是否會導致 dApp 崩潰;查找會導致特定錯誤的輸入;找出導致特定崩潰的原因,等等。
- Slither是一種快速且易於使用的檢查器,可突出顯示關鍵漏洞並提出修復建議。
- Oyente - 該工具創建於 2016 年,幾年沒有更新,但仍然因其準確性而獲得好評。
一般漏洞
智能合約審計軟件可以檢測多種漏洞,包括:
- 重入——攻擊者反複調用提款功能,將資金從易受攻擊的智能合約轉移到惡意合約。
- 重新排序- 攻擊者在隊列中的其他交易之前完成他的交易以操縱價格(所謂的搶先交易)。
- 上溢和下溢- 發送不正確的數據迫使智能合約產生計算錯誤(結果要么大於允許的上限,要么小於下限)。結果,攻擊者可以挖掘大量代幣。
- 時間戳依賴性- 攻擊者將錯誤的時間戳傳遞給合約,以給人以他的交易發生在某個時刻的印象(例如,贏得拍賣或彩票)。
- 重播- 攔截並隨後將數據重新發送到區塊鏈(可用於在分叉事件期間竊取資金)。
3.手動逐行分析和代碼測試
此步驟有助於查找自動工具遺漏的所有錯誤。它還檢測誤報:被自動審計程序錯誤地標記為漏洞的代碼片段。
審計可以揭示不同嚴重程度的漏洞:嚴重(允許攻擊者竊取代幣、破壞 dApp 等)、中(潛在損害有限)和低(仍然是一個錯誤,但會帶來很小的財務或結構風險)損壞)。
4. 同行評審
理想情況下,您需要多個審核員以獲得最大的保證。有時審核員會在團隊中工作並一起審查代碼,以便同行審查同時進行。
繼續閱讀以了解與拒絕同行評審相關的風險。
5、審計報告
最後,將測試結果匯總在一份多頁報告中,然後發送給客戶。它包含檢測到的錯誤列表,以及消除錯誤和進一步提高項目安全性的建議。
公開審計報告是區塊鏈的標準做法:這實際上是一個很好的項目營銷工具,因為它展示了 dApp 的安全性和透明度。當然,如果發現任何嚴重漏洞,項目通常會先修復它們。
Halborn 對 Reef 協議的審計部分
Move vs. 中的智能合約審計問題堅固性
正如我們在關於以太坊虛擬機的文章中所解釋的那樣,EVM 和 Solidity 智能合約難以調試並且存在許多安全問題。再加上 EVM 鏈的主導地位(前 10 大 DeFi TVL 區塊鏈中有 9 個使用 EVM ),您就會明白為什麼智能合約行業如此關注 Solidity。它既有第一玩家的優勢,也有許多需要審核的漏洞。
當你從以太坊/EVM 生態系統遷移到像 Move 這樣的替代區塊鏈環境時,你會遇到一個非常有趣的問題。一方面,Move 語言和 Move VM 比 Solidity 和 EVM 安全得多。例如,Move 合約可以抵抗重入攻擊。
另一方面,基於 Move 的 dApp 仍需要審核——目前使用這種語言的區塊鏈安全專家並不多。 Pontem Wallet 審計師OtterSec和Halborn是先驅者之一, Pontem Wallet本身是 Aptos 上首批經過全面驗證的 dApp 之一,我們對此感到非常自豪。
順便說一句,我們的審計員 OtterSec 發布了一篇非常有趣的博客文章,內容是關於如何使用 Move 構建更安全的 dApp,以我們的 Liquidswap DEX 代碼為例!
頂級智能合約審計公司
Hacken 成立於 2017 年,負責審計整個區塊鏈協議、智能合約和 dApp。該公司還監督 CoinGecko 等平台的漏洞賞金計劃。
Hacken 與廣泛的區塊鏈合作:EVM 鏈、Solana、NEAR、Cosmos、Polkadot 等。
其客戶包括 FTX、Gate.io、Crypto.com、KuCoin、火幣、Ellipsis、IoTex、1inch、Aurora、Klaytn、Cirus、Victoria VR、WAX、TrustSwap 以及其他數十個 DeFi、GameFi、基礎設施和 NFT 項目。
OtterSec 是 Solana 生態系統中領先的區塊鏈審計提供商。他令人印象深刻的產品組合包括 Wormhole、Serum、Sabre、Raydium、Solend、Socean 以及 NEAR 上的 Anchor、LayerZero 和 Proximity。
此外,它是少數使用 Aptos 和 Sui 使用的新 Move 編程語言的區塊鏈審計公司之一。 OtterSec 已完成對 Aptos 的 Pontem 錢包和 Hippo 錢包的首次審核。
OtterSec 還有一個很棒的博客,其中包含有關智能合約安全的專家建議,尤其是 Solana。
Zellic 由世界著名的白帽黑客團隊 Perfect Blue 創立。 2020年和2021年,他們被評為全球#1 CTF(奪旗)戰隊,參加了Google CTF、Def Con CTF等網絡安全賽事。
該公司以其執行速度和發現隱藏漏洞的能力而聞名。它的安全工程師不僅可以識別代碼缺陷,還可以識別經濟和業務邏輯缺陷。
Zellic 的客戶包括 Aptos Labs、Solana Foundation、LayerZero、SushiSwap、1inch、Wormhole 等。
CertiK 以其區塊鏈安全排行榜而聞名,其中 3000 多個項目按信任程度排名。安全審計是 CertiK 的另一個專長領域,此外還有滲透測試(試圖滲透到系統中以任何方式拒絕訪問的部分)、KYC、糾錯、鏈監控和錢包跟踪。
CertiK 已對 Ethereum、Avalanche、BNB Chain、Solana、Algorand、NEAR 和 Cosmos 協議進行了 1800 多次審計。它是 Binance、The Sandbox、Huobi 和 OKex 值得信賴的審計提供商。
Halborn 由白帽黑客於 2019 年創立,目前擁有 50 多名區塊鏈安全專業人士。除了智能合約審計,該公司還專門從事安全諮詢、滲透測試和安全自動化。
Halborn 曾與 Polygon、Solana、Thorchain、Bancor、Pangolin、Reef、Sushi、BlockFi、Polkadex 甚至 Bored Apes Yacht Club 等熱門項目合作。他還是 Aptos 區塊鏈的第一個錢包 Pontem Wallet 的審計員之一。
我們推薦 Halborn 的博客,該博客揭示了最近的 DeFi 黑客攻擊,並深入探討了最常見的區塊鏈攻擊類型。
Zokyo 是一家綜合性安全公司,其團隊中有知名的道德黑客。她不僅擅長智能合約審計,還擅長滲透測試、數據洩漏檢測、數據庫評估和 CMS 漏洞審計。
Zokyo 已與數十個主要區塊鏈項目合作,包括 Fuse、yearn.finance、LayerZero、Qredo、CPRX、Shoyu、Badger DAO、ShapeShift 等,此外,Zokyo 的安全工程師是“bug bounty”的頂級貢獻者之一由 Twitter、Facebook 和 Uber 主辦的項目。
ConsenSys 是 MetaMask、Truffle 和 Infura(Web3 開發人員的關鍵工具)背後的公司。其智能合約審計部門 ConsenSys Diligence 與 Aave、OmiseGo、0x、Aragon 和 Horizon 等 100 多個團隊合作。
ConsenSys Diligence 提供除審計之外的服務:威脅建模、持續漏洞測試、報復性攻擊計劃等。
Quantstamp 參與了 250 多個項目,創造了超過 2000 億美元的資產並鎖定了流動性。她的投資組合包括 OpenSea、Curve、Maker DAO、Compound、NBA TopShot、Lido、SuperRare、Decentraland、Aave 和 Axie Infinity。
該公司與許多區塊鏈生態系統合作,例如 Solana、Ethereum、BNB Chain、Cardano、Flow、Near、Tezos 和 Hedera Hashgraph。它還為以太坊 2.0 保護 Teku 和 Prysm 客戶端。
3 個因未審核智能合約而失敗的 DeFi dApp
擁有數百萬美元的未經審計的 DeFi dApp 本質上被描繪為“Hack me”的目標。即使它不是由第三方操作,它也可能成為內部代碼問題的受害者。以下三個故事顯示了錯過審計的後果。
Nomad 橋:2 億美元自由浮動
Nomad 是連接以太坊、Evmos、Moonbeam、Avalanche 和 Milkomeda 協議的橋樑。根據 Paradigm 安全負責人@samczsun 的說法,8 月 2 日的漏洞利用針對的是最近的 Nomad 更新,該更新尚未得到驗證。
3/ 我的第一個想法是令牌十進制設置有一些錯誤。畢竟,這座橋似乎正在運行“發送 0.01 WBTC,取回 100 WBTC”pic.twitter.com/H9IOJRYB0G
— samczsun (@samczsun) 2022 年 8 月 1 日
合約中的一個錯誤允許用戶從 Moonbeam 發送少量 WBTC,並在以太坊中收回 10,000 倍 WBTC。您不必成為編碼員即可執行此操作:只需複制粘貼即可。
隨著漏洞的消息傳開,越來越多的人加入了免費遊戲。這不是單人黑客攻擊,而是一種混亂的、機會主義的 41 地址攻擊。總共損失了大約 2 億美元——存儲在橋中的所有流動性。
Nomad 表示將與區塊鏈安全公司合作追踪和追回這筆錢。但是,也許她應該在將未經審計的合約更新推送到主網上之前引入區塊鏈安全專家!
Beanstalk:1.8 億美元通過閃電貸款被黑
Beanstalk是以太坊上的去中心化穩定幣。它沒有使用抵押品來維持 BEAN 掛鉤,而是使用信用,鼓勵持有者藉出他們的 BEAN 以換取利息。
2022 年 4 月 17 日,一名黑客利用了 Beanstalk 控制代碼中的一個漏洞。他們在 Uniswap、SushiSwap 和 Aave 上進行了閃電貸款,借入了大約10 億美元的 DAI、USDC、USDT 和 BEAN。黑客將這種流動性押注在 Curve 上的 BEAN 池中,籌集了足夠的 LP 代幣來贏得 Beanstalk DAO 的多數選票。
攻擊者隨後提交了一個新的 Beanstalk 改進提案 (BIP),將所有資金從協議轉移到他們自己的地址 - 並投票支持它,因此它自動通過。攻擊者總共收到了高達 1.82 億美元的 BEAN、ETH 和 Curve LP 代幣。現在他們所要做的就是還清閃電貸款。
Beanstalk 智能合約已通過 Omnicia 驗證。但是包含閃貸漏洞的代碼是後來添加的,沒有經過審計。教訓是智能合約審計是一個持續的過程:每個新功能都必須經過測試。
Yam Finance:99% 因錯誤而無法工作
Yam Finance 項目於 2020 年 8 月啟動,是一個早期的 rebase 實驗,YAM 的供應量會根據價格增加或減少。該項目為高利潤的農業付出了回報,但真正吸引用戶的是可愛的表情符號和關於 yam 土豆的 meme(YAM = YFI + Ampleforth,兩個 DeFI 協議,其想法是 Yam Finance 借用的)。
整個項目僅用了 10 天就實施了,而創始人們卻“在構思中奔跑”。因為這只是一個實驗,團隊在沒有審計的情況下部署了 Yam Finance。當 4 億美元在一天之內湧入該協議時,令人震驚。
但推出僅兩天后,Yam Finance 就倒閉了。原因是 rebase 函數中的一個錯誤:該合約在 Uniswap 上為某個礦池挖掘了過多的 YAM。這些 YAM 中的大多數被發送到金庫,這反過來又導致控制模塊無法使用,因為用戶中的 YAM 數量不足以達到任何投票的法定人數。
找到了一個潛在的解決方案,但需要通過 DAO 投票來推動。團隊呼籲社區委託他們所有的 YAM 投票,但結果還不夠。聯合創始人布洛克·埃爾莫爾在推特上說他“傷心欲絕”。
原諒所有人。我失敗了。感謝今天的瘋狂支持。我悲痛欲絕。
— 布洛克🌱 (@brockjelmore) 2020 年 8 月 13 日
Yam Finance 僅以200,000 美元的 TVL繼續存在。教訓是,DeFi 協議可以如此迅速地傳播開來,以至於沒有時間發現錯誤並修復它們。在啟動之前,必須進行審核。
審計不是安全的保證
對智能合約的單一審計永遠不能 100% 保證項目不會被利用——原因如下:
1. 例如,儘管經過 Solidity Finance 的審計, Grim Finance 在 2021 年 12 月仍因黑客而損失了 3000 萬美元。
原來負責審計的分析師是新來的;儘管審核員通常會相互審查彼此的工作,但團隊“不堪重負”,同行評審過程並不順利。值得讚揚的是,這只是他們審查的 900 多個項目中的第二個漏洞。
2.攻擊者可以竊取/偽造錢包密鑰而不是破壞合約。這正是bZX (損失 5500 萬美元)和EasyFi (9000 萬美元)所發生的事情。在後一種情況下,犯罪者可以訪問協議 CEO 本人的 MetaMask 錢包。
3. 一些漏洞利用第三方 dApp(未經審計)中的漏洞來攻擊與其集成的另一個協議。
4. 區塊鏈的未來變化。隨著運行 dApp 的網絡升級,可能會出現新的攻擊向量。
由於所有這些原因,協議和審計報告總是包含免責聲明。從 dApp 團隊的角度來看,將這些風險降到最低的最好方法是進行多次獨立審計——如果你願意的話,可以進行“審計冗餘”。
這是我們在 Pontem Network 的戰略,因為我們希望我們的 Aptos dApp 成為生態系統中最安全的。雖然我們的 Ottersec 審計人員沒有發現 Pontem 錢包有任何漏洞,但我們目前正在與Halborn 合作進行另一次審查,第三次審查正在進行中。
當然,這在一定程度上減緩了擴展過程,但我們認為用戶安全比快速增長更重要。最後,我們正在為一個可以容納第一個十億區塊鏈用戶的生態系統構建一組基礎 dApp,而 Aptos 本身就是世界上最安全的 L1 區塊鏈。因此,我們優先考慮安全是恰當的。”
與核心協議開發人員 Alejo Pinto 一起觀看最新的 Pontem AMA 直播,了解有關 Pontem Wallet 和 Aptos 安全性的更多信息。不要忘記在Twitter和Telegram上關注我們,以了解有關審核流程的更多信息!
作者CryptoRomb他還有一個同名的電報頻道,我建議你訂閱=)
喜歡我的作品嗎?別忘了給予支持與讚賞,讓我知道在創作的路上有你陪伴,一起延續這份熱忱!
- 來自作者
- 相關推薦