慢霧安全團隊重磅推出智能合約安全審計技能樹。
作者:Kong,慢霧安全團隊
KEY
本文涉及的所有連結均可在 GitHub 中點擊
https://github.com/slowmist/SlowMist-Learning-Roadmap-for-Becoming-a-Smart-Contract-Auditor
前言
本技能表是慢霧安全團隊智能合約安全審計工程師的技能集合,旨在為團隊成員列出智慧合約安全審計的所需技能並驅動團隊成員形成研究、創造、工程的自我進化思維。
智慧合約安全審計技能主要分為四個部分:尋門而入、倚門而歌、融會貫通、破門而出,由淺至深地列出在各個階段所需掌握的專業技能。 而在此之前,需要一些通用技能武裝我們的大腦,出發準備部分將會是我們審計之路的錨點。
路線圖
出發準備
所謂磨刀不誤砍柴功,在正式出發之前強化自己的思維是必要的,這可以使我們走得堅定、走得更遠。
1. 知行合一
認知與實踐是密不可分的,理論與實踐應相統一。
- 學習應有所輸出,輸出應有所實踐
- 慢霧(SlowMist)安全團隊知識庫
- Github 開源文化
2. 守正出奇
道德和法律是安全從業者的底線,安全從業者在堅守底線的同時也要鍛造過硬的技術,在關鍵時刻出奇制勝。
- 堅守底線
- 審計人員應遵守法律,堅守道德底線
- 負責任的披露
- 慢霧(SlowMist)預警流程
- FIRST 道德守則
- 駭客思維
- 堅守底線的同時出奇制勝
- 守正:保持敬畏,堅守底線
- 出奇:腦洞要大,心要細,反向思維,開放性思維
3. 團隊意識
單個人的能力覆蓋面總是有限,團隊戰鬥可以很好地補全個人的不足。
- 協同審計流
- SlowMist MistPunk 審計工作台做協同,通過技術的方式保證審計質量,同時沉澱審計經驗
- 審計工作流
- SlowMist 審計工作流程,通過管理方式保證審計質量,同時為審計工作查缺補漏
- Hacking Time 文化
- 團隊成員隨時隨地的思維碰撞與分享,通過思維碰撞和分享對齊團隊能力,提升團隊整體能力
尋門而入
加密世界發展至今其涵蓋了密碼學、經濟學、數據科學等學科,面對知識體量極為龐大的加密世界,如何尋門而入是為關鍵。 本階段將從乙太坊(Ethereum)及其智慧合約語言 Solidity 開始尋找進入加密貨幣世界的大門。
1. 區塊鏈基礎知識
在瞭解智慧合約是什麼之前,應該先瞭解智能合約所運行的區塊鏈平台是什麼。
- 什麼是區塊鏈?
- 區塊鏈可視化演示
- 慢霧(SlowMist)區塊鏈入門科普
- 加密貨幣工作原理
- 閱讀《精通比特幣》
- 閱讀《精通乙太坊》
- 當前應著重閱讀第 1、4、5、6、7、13 和 15 章節
2. 智慧合約基礎知識
在不同的區塊鏈可能會使用不同的語言構建智能合約,例如:Solidity、Move、Rust、Vyper、Cairo、C++ 等。 目前 EVM 相容鏈使用的 Solidity 仍是最流行且易於入門的智慧合約語言,應該確保完整閱讀完其語言文檔。 且應瞭解運行在 乙太坊(Ethereum)上的代幣合約的設計標準與具體的合約實現。 在此基礎上瞭解智慧合約是如何做到可升級的,並實操掌握智慧合約的編寫與測試。
- Solidity 官方文檔
- 閱讀《精通乙太坊》
- 當前應著重閱讀剩餘的其他章節
- 了解基礎的乙太坊意見徵求稿 ERC
- ERC20 同質化代幣標準
- ERC165 介面標準
- ERC173 合約擁有權標準
- ERC191 數據簽名標準
- ERC601 確定性錢包分層結構標準
- ERC721 非同質化代幣標準
- ERC777 可交互性代幣標準
- ERC1155 多代幣標準
- ERC1167 最小代理合約
- ERC1967 代理數據存儲插槽
- ERC2612 代幣批准簽名
- ERC4626 代幣金庫標準
- 學習 OpenZeppelin Token 部分的實現
- 瞭解可升級合約/代理合約是什麼
- 不同模式的代理合約介紹
- 代理合約深入研究
- OpenZeppelin Proxy 實現文檔
- 學習智能合約編寫
- WTF Solidity 智慧合約教程
- Crypto Zombies
- Smart Contract Engineer
- Solidity by Example
- 閱讀《精通乙太坊智慧合約開發》
- 學習使用智慧相關 Build 工具
- 流行的在線 IDE
- Remix
- ChainIDE
- Tenderly Sandbox
- 熟悉使用包管理員
- npm
- yarn
- 流行的智慧合約測試和調試框架
- Foundry
- Hardhat
- 善用其強大的外掛程式
- Brownie
- Tenderly
- 與智慧合約交互
- 瞭解 JSON-RPC
- ethers.js
- Web3.js
- Web3.py
3. 常見的智能合約漏洞
在學習完成智慧合約基礎知識后應掌握其常見的基礎漏洞,並知曉漏洞原理。 其中 Quillhash 整理的漏洞清單聚合了多個來源,其較為完備的展示了當前常見的智慧合約漏洞類型。(但對於初學者來說建議反覆閱讀所有清單以加深印象)
- DASP Top 10
- SWC 智慧合約弱點分類
- 智能合約安全指南
- Kaden: 智慧合約攻擊向量
- Quillhash: Solidity 攻擊向量
- RareSkills Smart Contract Security
4. 最佳實踐與安全標準
作為審計人員,必須瞭解智慧合約的最佳實踐以及安全標準。 最佳實踐為審計中尋找安全問題提供參考,安全標準為審計中提出的安全問題提供依據。
- Solidity Patterns
- Solcurity
- ConsenSys 智慧合約最佳實踐
- Solidity 安全陷阱和最佳實踐 101
- Solidity 安全陷阱和最佳實踐 201
- SCSVSv2
- EEA EthTrust Certification
- Foundry 測試最佳實踐
5. 簡單 CTF 挑戰
在學習了區塊鏈與智慧合約基礎知識以及常見的智能合約漏洞后,可以通過一些簡單的 CTF 挑戰鞏固以及實踐所學的知識。
- OpenZeppelin Ethernaut
- Capture the Ether
倚門而歌
掌握了區塊鏈與智慧合約的基礎知識后,我們便推開了 Solidity 智慧合約安全審計的大門,門后的智慧合約世界仍極為廣闊。 本階段將從去中心化金融(DeFi)開始深入地探索門后更為廣闊的智慧合約應用。
1. 去中心化金融(DeFi)基礎知識
區塊鏈和智能合約使 DeFi 的構建成為可能,DeFi 的出現也使得 Ethereum 等公鏈快速發展。 在做進一步探索之前,理應瞭解 DeFi 是什麼?
- 閱讀《How To DeFi: Beginner》
- 閱讀《How To DeFi: Advanced》
- DeFi 各類型介紹
- 瞭解各個類型的 DeFi 是什麼
- 瞭解一些基礎的經濟學知識與常用術語
- 基礎的金融玩法介紹
- 經濟模型 101
2. 去中心化金融(DeFi)頭部協定
在初步瞭解了 DeFi 是什麼後,應進一步瞭解它們實現了什麼/是如何實現的? 通過閱讀當前頭部去中心化金融(DeFi)協議的技術文檔以初步了解頭部 DeFi 協定是如何實現的。
- MakerDAO (CDP)
- AAVE (Lending)
- V2
- V3
- Compound (Lending)
- V2
- V3
- Uniswap (DEX)
- V2
- V3
- Curve (DEX)
- 技術文件
- 演算法簡述
- Curve 牛頓反覆運算詳解
- Chainlink (Oracle)
- 價格預言機
- VRF
- Convex Finance (Yield)
- 協議介紹
- 技術文件
- Yearn Finance (Yield Aggregator)
- GMX (Derivatives)
- Nexus Mutual (Insurance)
- OpenSea (NFT Marketplace)
- Set Protocol (Indexes)
- Lido (Liquid Staking)
- ...
3. 深入閱讀頭部協定原始程式碼
當前多數 DeFi 專案都相互依賴、組合,一些頭部的 DeFi 協定成了構件 DeFi 組合基石,所以掌握這些 DeFi 的實現極為重要。 在先前通過協議技術文檔對 DeFi 的實現進行初步瞭解後,再通過閱讀全量原始程式碼的方式掌握其具體的邏輯、經濟模型。
4. 瞭解去中心化金融(DeFi)風險
DeFi 並不局限於智慧合約,前端、後端也是其重要的組成部分,絕大部分用戶通過前端與 DeFi 進行交互。 因此在瞭解了 DeFi 的運作與實現後,通過前端安全實踐、後端安全配置要求與 DeFi 歷史漏洞對其面臨的風險進行學習與實踐。
- 瞭解 Web 前端安全
- 閱讀 SlowMist Web 前端最佳安全實踐指南
- 更多瞭解《Web 前端駭客技術揭秘》
- 瞭解 DeFi 被黑原因
- SlowMist DeFi 被黑簡析
- SlowMist Medium
- DeFiHackLabs
- Rekt
- Immunefi
- QuillAudits
- BlockSec
- Neptune Mutual
- PeckShield
- hacxyk
- TrailOfBits
- Secureum
- Openzeppelin
- OfferCIA
5. 閱讀審計報告
在進行審計時,個人的角度總是會有所遺漏,無法覆蓋所有情況。 因此通過閱讀他人的審計報告以學習不同的漏洞發現方式和審計思考方式很重要。
- SlowMist Audit Reports
- Solodit Aggregation
- Code4rena Audit Reports
- Consensys Audit Reports
- QuillAudits Audit Reports
- Spearbit Audit Reports
- Sherlock Audit Reports
- ADBK Audit Reports
- BlockSec Audit Reports
- Certik Audit Reports
- ChainSecurity Audit Reports
- Cyfrin Audit Reports
- PeckShield Audit Reports
- OpenZeppelin Audit Reports
- Complete List of Security Audit Reports
6. CTF 挑戰
進行較有難度的 CTF 挑戰以鞏固知識。
- EtherHack
- SI Blockchain CTF
- QuillCTF
- Curta CTF
- Paradigm CTF
- Cipher Shastra CTF
- Damn Vulnerable DeFi
- unhackedctf
融會貫通
在對頭部 DeFi 的探索過程中將建立起對 DeFi 的深刻理解,接下來通過從底層 EVM 到 DeFi 上層經濟模型的學習來繼續加深對智慧合約的理解。 並且在此過程中,可以通過獨立審計複雜智能合約以沉澱自己的審計方法論。
1. 深入瞭解 EVM
EVM 負責執行智慧合約指令,深入瞭解 EVM 有助於我們對智慧合約的部署、調用、執行、數據存儲有更為深入的理解。 同時可以為 Gas 優化、漏洞發現打好基礎。
- 關於 EVM
- Noxx EVM 深入研究
- Solidity 插槽數據解析
- 乙太坊黃皮書
- 簡單版
- EVM 實現示例
2. Gas 優化設計
鏈上交易的執行都需要付出 Gas 成本。 對於複雜合約來說,優化 Gas 可以降低使用者交互成本,吸引使用者使用。 這就要求審計人員需要對 Gas 優化設計有一定的瞭解。
- Gas 優化參考 1
- Gas 優化參考 2
- Gas 優化參考 3
3. DeFi 經濟模型
經濟模型是 DeFi 產品的核心部分,所以了解經濟模型的風險是很有必要的。 在學習過程中應沉澱出自己的見解與方法論。
- 治理風險
- DeFi 經濟模型風險匯總
- Euler Oracle Manipulation Tool
- Chaos Lab Uniswap v3 Oracle Manipulation Risk
- Agent Buttercup simulation engine
- Curve simulation tool
- DELV agent-based simulation tool
- Uniswap v3 simulatoroption 1, option 2, option 3
4. 拆解分析複雜 DeFi 協定
在將這些技能融會貫通后,審計人員應具備拆解分析複雜的高原創性 DeFi 協定的能力。
- To be released...
5. 與同道者同行
學習其他優秀同道者所研究的內容可以給我們更多的啟發,拓寬我們的視野。
- Bytes032
- Noxx
- Mixbytes
- Samczsun
- Cmichel
- Pessimistic
- OfficerCia
- Smart Contract Research Forum
- Zefram
- Alin Tomescu
- Christoph Michel
- Kyrian Alex
- ...
6. 快速應急分析
在獨立審計過足夠多的複雜專案,並經歷過各種業務場景,沉澱了大量知識后,能夠使我們快速應對突發安全事件並進行快速分析與輸出。 下面是一些常用的分析工具:
- 合約反編譯工具
- Dedaub
- Panoramix
- abi-decompiler
- heimdall-rs
- ethervm
- Pyevmasm
- 交易分析工具
- Phalcon
- ethtx.info
- Tx eth samczsun
- Tenderly
- Eigenphi
- SocketScan
- Others
- Web3 Security Tools
- On Chain Investigations Tools List
7. Bug Bounty 實戰
進行實戰,以最真實的場景檢測能力。
- Immunefi
- BugRap
- Code4rena
- HackerOne
- HackenProof
- HatsFinance
- ...
破門而出
在由 Solidity 智慧合約尋門而入後,不應再滿足於在單一領域兜兜轉轉,而是應該沉澱出自己方法論,大膽地鑿出一道新門,破門而出,在深耕當前領域的同時拓展其他領域。
1. 突破局限
在從 Solidity 智慧合約入門後不應只局限於此,也應拓展其他類型、語言,並對其涉及的審計方法有所沉澱。
- 不只局限於 Solidity,Rust/Vyper/Cairo/Move 等智慧合約語言也應瞭解
- 不只局限於智能合約,BTC/Cosmos/Solana/Starknet/EVM L2 等其他流行公鏈也應瞭解
- 不只局限於區塊鏈,Web2.0/移動端等也應瞭解
- 深入瞭解密碼學領域
- ...
2. 方法論
將智慧合約安全審計技能融會貫通后,可以沉澱出屬於自己的方法論,幫助我們快速的觸及問題的核心並確定解決思路,好的方法論能讓我們事半功倍。
- 對審計工作的方法論
- 對智慧合約安全實踐的方法論
- 做事的方法論
- 構建思維體系的方法論
- ...
3. 創造力
創造力是我們能夠克敵制勝的法寶,是我們保持前進所需具備的東西。 在按部就班地掌握技能后,再武裝我們的思維,這能夠使我們走得更遠。
- 保持好奇心
- 對新事物的敏感性
- 不局限於自己的圈子/專業/職業
- ...
- 追逐知識
- 對知識保持敬畏
- 探索新知識
- 駭客思維
- 駭客也可以是一種精神也可以是一種思維,守正出奇
- 善於研究
- 在進行研究時應有實際的結果/文檔輸出
- 工程化
- 對於好點子,好的的研究成果應該善於工程化,並在實戰中進行檢驗
- SlowMist MistEye Monitoring System
- SlowMist Contract Visibility Analysis Tool
- SlowMist Static Vulnerability Scanner
- ...
致謝
感謝朋友們對本文提出的寶貴建議。
- Cos
- 23pds
- T41nk
- Doublenine
- Flush
- Blue
- Lizi
由於篇幅限制,本文涉及的所有連結均可在 GitHub 中點擊,歡迎閱讀並分享 :)https://github.com/slowmist/SlowMist-Learning-Roadmap-for-Becoming-a-Smart-Contract-Auditor
免責聲明:作為區塊鏈資訊平臺,本站所發佈文章僅代表作者及嘉賓個人觀點,與 Web3Caff 立場無關。 本文內容僅用於資訊分享,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。