智能合約開發的五道資安防護
智能合約本身是一種新形態的開發方式,需要仔細且勤奮的審查,才能實作安全、高效的智能合約從而降低漏洞風險。
尤其是 DeFi 在動輒影響數百萬美元的情況下,很多項目都是因為智能合約的漏洞無法持續經營,具體事件可以參考 rekt.news,記錄了過去大部份的 DeFi 資安事件
在軟體開發週期引入適當的工具就可以在監測問題後立即識別並解決問題,最大化安全度以及開發者的生產力,最大限度地降低從智能合約開發週期開始時被黑客入侵的風險。
在區塊鏈開發中,最重要的原則就是盡可能不要重造輪子,使用經歷市場多年驗證的智能合約(例如:不要自己寫一份 ERC20 合約),可以降低被攻擊的風險,預防總是勝於治療。
第一道防護:自動化安全分析(MythX)
MythX 是一個自動化的安全分析工具,可以進行靜態分析、動態分析和符號執行(Symbolic Execution)。它會發現已知漏洞找到它們的原始碼執行並生成包含所有問題摘要的詳細報告。
MythX 是安全防護中的第一層,用於查找智能合約中的漏洞。它的進入門檻最低,因為你只需在 MythX 網站上創建一個免費帳戶即可開始使用。 就可以在開發週期中持續使用。使用像 MythX 這樣的自動化、易於訪問的工具將消除可避免的漏洞,並通過防止智能合約在後期重寫來最大限度地提高生產力。
第二道防護:插入程式碼標註測試(Scribble)
Scribble 是做 Diligence Fuzzing 的先決條件,它是一種用於編寫特定於智能合約屬性的規範語言,也是一種將 Scribble 屬性轉換為具體的 Solidity 斷言的運行時驗證工具。Scribble 允許其他工具(例如現有的測試套件、 Fuzzer 、和符號執行器)自動測試屬性。
Scribble 是 Diligence 安全策略的第二層。該產品通過插入 Solidity 斷言來檢查開發規範來發現漏洞。Scribble 可以檢測測試套件沒有 Solidity 斷言來檢測的錯誤。使用 Scribble 可以輕鬆記錄程式碼並通過額外的檢查來增強測試套件。
第三道防護:模糊測試(Fuzzing)
Diligence Fuzzing 使用戶能夠在編寫他們的第一個 Scribble 屬性後將自動或半自動生成的亂數據輸入到一個程式中,並監視合約異常,如:斷言(assertion)失敗。
Fuzzing 使用自動測試 Scribble 屬性 的灰盒模糊測試技術。 Fuzzing 顯著提高了智能合約的安全性。Fuzzer 將風險降至最低,並通過執行數百萬個智能選擇的輸入來檢查智能合約是否正在做他們應該做的事情。
第四道防護:單點抽查(Spot Check)
如果使用的是 Solidity,可以透過 Ethereum 基金會提供的開發者建議檢查的安全清單,將過去發生過的常見錯誤,逐項的來抽查合約內容,目標是找出任何總體設計的不一致、以及資安有漏洞之處。
抽查是資安防護的倒數第二層,以準備進行全面的手動安全審計,抽查有助於識別設計不一致以準備審計,並且是對 MythX、Scribble、Fuzzing 和全面審計的補充。
第五道防護:第三方安全審計(Auditing)
最後但並非最不重要的一點是, 全面手動安全審計 是由我們經驗豐富的智能合約安全審計團隊進行的深入代碼審查,他們將手動仔細檢查程式碼以識別漏洞。完整的手動安全審計是安全策略的最後一層。人工審核程式碼可防止啟動後潛在的災難性漏洞。
在送合約審計之前,可以使用完整的智能合約安全審查工具來為審計做準備:Blockchain Security Tools | ConsenSys Diligence ,可以為審計節省很多不必要的費用與時間開銷。
KryptoGO 的 KYABC 包含了自然人、企業法人、以及區塊鏈資金的審查:
Know Your Address:查看我們識別的交易對手區塊鏈地址,包括錢包類型、交易資訊、對應的服務或實體、與風險評分。
Know Your Business:審查交易對手 VASP 的信譽,確保這筆交易與資訊交換是安全可靠的。
Know Your Customer:審查發起人與受益人的身份,合乎反洗錢規範。
並且,通過 KryptoGO 的中繼 API,加密貨幣企業可以自動與受信任的交易對手進行交易,同時為他們提供檢測可疑活動和滿足監管要求所需的數據,在不同的 Travel Rule 協議互通轉發完成交易,幫助我們的客戶能夠大規模地符合 Travel Rule,應對所需的所有挑戰。