By: Kong'@SlowMist Security Team
中文版:慢雾(SlowMist)智能合约审计技能树
English version: SlowMist Learning Roadmap for Becoming a Smart Contract Auditor
日本語版:スマートコントラクト監査人への道筋
翻訳者:
⚓️目次
このスキルセットは、SlowMistセキュリティチームのスマートコントラクトセキュリティ監査エンジニアのスキルセットであり、チームメンバーにスマートコントラクトセキュリティ監査に必要なスキルを提示し、研究、創造、エンジニアリングにおける自己進化の思考を育むことを目的としている。
スマートコントラクトセキュリティ監査のスキルは、主に4つの段階に分かれている: 「初級」、「中級」、「上級」、そして「最上級」である。これらは、各段階で習得すべき専門スキルを浅いものから深いものへと順にリストアップしている。しかし、その前に、私たちの知識を強化するためにいくつかの汎用的なスキルを身につける必要がある。この準備段階が、監査の旅のアンカーポイントとなるでしょう。
「刀を研ぐことを怠らない者が、最も効率的に木を切ることができる」と言われるように、正式に出発する前に、自分の思考を鍛えることが必要です。これにより、私たちはより確実な一歩を踏み出し、さらに遠くへ進むことができるでしょう。
認識と実践は密接に関連しており、理論と実践は一体となるべきである。
- 学習には成果が伴い、その成果は実践に結びつけるべきである。
- SlowMistセキュリティチームのナレッジベース
- GitHubのオープンソース文化
道徳と法律はセキュリティ専門家の最低限の基準であり、セキュリティ専門家は底線を守りながら、優れた技術を磨き、重要な瞬間に出奇制勝する必要がある。
- 底線を守る
- 監査者は法律を遵守し、道徳的な最低限の基準を守るべきである。
- 責任ある開示
- SlowMistの警告プロセス
- FIRSTの倫理規範
- ハッカーThinking
- セキュリティ専門家は、倫理的な最低限の基準を守りつつ、創造的な方法で問題を解決し、重要な瞬間に優位に立つことが求められている。
- 「正しさを守り」とは、敬意を持ち、倫理的な最低限の基準を守ることを意味する。
- 「奇策を出す」とは、創造的な思考を持ち、細心の注意を払い、逆の発想や柔軟な思考を持つことを意味する。
個々の能力には限界があるが、チームでの協力が個人の不足を補う。
- 協同監査フロー
- SlowMist MistPunk監査ワークベンチでの協同作業を通じて、技術的方法で監査の質を確保し、監査経験を蓄積する。
- 監査ワークフロー
- SlowMistの監査ワークフローにより、管理手法で監査の質を確保し、監査作業の欠陥を補う。
- Hacking Time文化
- チームメンバーがいつでもどこでも思考のぶつかり合い、共有することで、チームの能力を整え、全体のスキルを向上させる。
暗号化の世界は、今日までに暗号学、経済学、データサイエンスなどの学問分野を網羅しているである。この広大な知識の世界にどう入り込むかが鍵である。この段階では、Ethereum(イーサリアム)およびそのスマートコントラクト言語であるSolidityを出発点として、暗号資産の世界への入り口を見つけていく
スマートコントラクトが何であるかを理解する前に、スマートコントラクトが動作するブロックチェーンプラットフォームについて理解する必要がある
- ブロックチェーンとは?
- ブロックチェーンの可視化デモ
- SlowMistのブロックチェーン基礎知識
- 暗号資産の仕組み
- Mastering Bitcoin
- Mastering Ethereum
- 第1章、第4章、第5章、第6章、第7章、および第13章を重点的に読むことを推奨する。
異なるブロックチェーンでは、さまざまな言語でスマートコントラクトが構築される。たとえば、Solidity、Move、Rust、Vyper、Cairo、C++などである。現在、EVM互換チェーンで使用されているSolidityは、依然として最も人気があり、入門しやすいスマートコントラクト言語である。この言語のドキュメントを完全に読むことが重要である。また、Ethereum(イーサリアム)上で動作するトークンスマートコントラクトの設計基準と具体的なスマートコントラクト実装について理解する必要がある。これを基に、スマートコントラクトがどのようにアップグレード可能であるかを理解し、スマートコントラクトの作成とテストの実践スキルを身に付けることが求められる。
- Solidity公式ドキュメント
- Mastering Ethereum
- 残りのすべての章を重点的に読むことが推奨される。
- Ethereumリクエスト・フォー・コメント(ERC)の基本を理解する
- OpenZeppelin Token 実装を学ぶ
- アップグレード可能なコントラクト/プロキシコントラクトを理解する
- スマートコントラクトの作成を学ぶ
- Mastering Ethereum Smart Contract Development
- スマート関連のBuildツール
スマートコントラクトの基礎知識を学び終えた後、その一般的な基礎的脆弱性を理解し、脆弱性の原理を知っておく必要がある。その中で、Quillhashが整理した脆弱性リストは複数の情報源を集約しており、現在よく見られるスマートコントラクトの脆弱性タイプを比較的完全に示している。(ただし、初心者にとっては、すべてのリストを繰り返し読んで印象を深めることをお勧める。)
- DASP Top 10
- SWCレジストリ
- スマートコントラクトセキュリティガイド
- Kaden: スマートコントラクト攻撃ベクトル
- Kaden: スマートコントラクト攻撃ベクトル
- RareSkills Smart Contract Security
監査人として、スマートコントラクトのベストプラクティスとセキュリティ基準を理解しておく必要がある。ベストプラクティスは、監査中にセキュリティ問題を見つけるための参考を提供し、セキュリティ基準は、監査で指摘されるセキュリティ問題の根拠となる。
- Solidity Patterns
- Solcurity
- ConsenSysスマートコントラクトのベストプラクティス
- Solidityセキュリティの落とし穴とベストプラクティス101
- Solidityセキュリティの落とし穴とベストプラクティス201
- SCSVSv2
- EEA EthTrust Certification
- Foundryテストのベストプラクティス
ブロックチェーンとスマートコントラクトの基礎知識、および一般的なスマートコントラクトの脆弱性を学んだ後、いくつかの簡単なCTFチャレンジを通じて、習得した知識を強化し、実践することができる。
ブロックチェーンとスマートコントラクトの基礎知識を習得した後、私たちはSolidityスマートコントラクトのセキュリティ監査という扉を開いた。その先にあるスマートコントラクトの世界は依然として非常に広大である。この段階では、分散型金融(DeFi)から始めて、その先にあるさらに広範なスマートコントラクトの応用を深く探求していく。
ブロックチェーンとスマートコントラクトがDeFiの構築を可能にし、DeFiの出現によってEthereumなどのパブリックチェーンが急速に発展した。さらに深く探求する前に、まずDeFiとは何かを理解しておくべきでしょう。
- 「How To DeFi: Beginner」 を読む
- 「How To DeFi: Advanced」 を読む
- DeFiの各タイプの紹介
- 各タイプのDeFiとは何かを理解する
- 基本的な経済学の知識とよく使われる用語を理解する
- 基本的な金融の遊び方*の紹介
- 経済モデル101
DeFiとは何かを初步的に理解した後、さらにそれらが何を実現しているのか、どのように実現されているのかを学ぶべきである。現在の主要なDeFiプロトコルの技術ドキュメントを読むことで、トップレベルのDeFiプロトコルがどのように実現されているかを初步的に理解できる。
- MakerDAO (CDP)
- AAVE (Lending)
- Compound (Lending)
- Uniswap (DEX)
- Curve (DEX)
- Chainlink (Oracle)
- Convex Finance (Yield)
- Yearn Finance (Yield Aggregator)
- GMX (Derivatives)
- Nexus Mutual (Insurance)
- OpenSea (NFT Marketplace)
- Set Protocol (Indexes)
- Lido (Liquid Staking)
- ...
現在、多くのDeFiプロジェクトが相互に依存し、組み合わされており、いくつかの主要なDeFiプロトコルがDeFiの組み合わせの基盤となる構成要素となっている。そのため、これらのDeFiの実装を把握することは非常に重要である。以前にプロトコルの技術ドキュメントを通じてDeFiの実装を初步的に理解した後、次に全量のソースコードを読むことで、その具体的なロジックや経済モデルを習得する。
DeFiはスマートコントラクトに限定されるものではなく、フロントエンドとバックエンドもその重要な構成要素である。ほとんどのユーザーはフロントエンドを通じてDeFiとやり取りを行い。そのため、DeFiの仕組みと実装を理解した後、フロントエンドのセキュリティ実践、バックエンドのセキュリティ設定要件、そしてDeFiの過去の脆弱性を基に、そのリスクについて学び、実践することが重要である。
- Webフロントエンドセキュリティを理解する
- SlowMist Webフロントエンドベストセキュリティプラクティスガイド
- 『Webフロントエンドハッキング技術の解明』をもっと学ぶ
- DeFiがハッキングされた原因を理解する
監査を行う際、個人の視点ではどうしても見落としがあり、すべての状況を網羅することはできない。そのため、他人の監査報告書を読むことで、異なる脆弱性の発見方法や監査の思考法を学ぶことが重要である。
- 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
難易度の高いCTFチャレンジに取り組むことで、知識を強化し、実践に活かすことができる。
- EtherHack
- SI Blockchain CTF
- QuillCTF
- Curta CTF
- Paradigm CTF
- Cipher Shastra CTF
- Damn Vulnerable DeFi
- unhackedctf
主要なDeFiの探求過程を通じて、DeFiに対する深い理解を築き上げる。次に、底層のEVMからDeFiの上層経済モデルに至る学習を通じて、スマートコントラクトへの理解をさらに深めていく。そしてこの過程で、複雑なスマートコントラクトを独立して監査することで、独自の監査方法論を確立することができる。
EVMはスマートコントラクトの命令を実行する役割を担っており、EVMを深く理解することで、スマートコントラクトのデプロイ、呼び出し、実行、データストレージに対する理解をより深めることができる。同時に、Gas最適化や脆弱性発見のための基盤を築くことにも役立つ。
- EVMについて
- The EVM From Scratch Book
- Noxx EVM深掘り
- Solidityスロットデータ解析
- Ethereumイエローペーパー
- Quillhash EVM Mastery
- EVMの実装例
オンチェーンでのトランザクションの実行にはすべてGasコストがかかる。複雑なコントラクトの場合、Gasを最適化することでユーザーのインタラクションコストを下げ、ユーザーを引きつけることができる。そのため、監査員にはGas最適化設計について一定の理解が求められる。
経済モデルはDeFi製品の核心部分であるため、経済モデルのリスクを理解することは非常に重要である。学習の過程で、独自の見解と方法論を確立していくべく。
これらのスキルを統合し、熟練した後、監査員は複雑で独創性の高いDeFiプロトコルを分解し分析する能力を持つべきく。
他の優れた仲間が研究している内容を学ぶことで、私たちにより多くのインスピレーションを得られ、視野を広げることができる。
- Bytes032
- Noxx
- Mixbytes
- Samczsun
- Cmichel
- Pessimistic
- OfficerCia
- Smart Contract Research Forum
- Zefram
- Alin Tomescu
- Christoph Michel
- Kyrian Alex
- ...
十分な数の複雑なプロジェクトを独立して監査し、さまざまなビジネスシナリオを経験し、多くの知識を蓄積した後、私たちは突発的なセキュリティインシデントに迅速に対応し、迅速な分析とアウトプットを行うことができるようになる。以下は、いくつかの一般的に使用される分析ツールである:
- コントラクト逆コンパイルツール
- トランザクション分析ツール
- その他のツール
実践を行い、最も現実的なシナリオで能力を検証する。
Solidityスマートコントラクトを通じて入り口を見つけた後、単一の分野でぐるぐる回ることに満足するのではなく、独自の方法論を確立し、大胆に新しい扉を切り開いて飛び出し、現在の分野を深く掘り下げつつ、他の分野にも手を広げるべきく。
Solidityスマートコントラクトの入門を終えた後、それに限定せず、他のタイプや言語にも視野を広げ、それらに関連する監査方法についても知識を深めるべきく。
- Solidityに限定せず、Rust、Vyper、Cairo、Moveなどのスマートコントラクト言語についても理解しておくべく。
- スマートコントラクトに限定せず、BTC、Cosmos、Solana、Starknet、EVM L2など、他の人気のパブリックチェーンについても理解しておくべきく。
- ブロックチェーンに限定せず、Web2.0やモバイル端末などについても理解しておくべきく。
- 暗号学の分野を深く理解する。
- ...
以下の SlowMist の一部公開済みの蓄積内容:
- ブロックチェーンに基づく暗号資産のセキュリティ監査ガイドライン
- Web3プロジェクトのセキュリティベストプラクティス要件
- EOSスマートコントラクトの安全な開発ベストプラクティス
- Solanaスマートコントラクトのセキュリティベストプラクティス
- APTOS MOVEスマートコントラクト監査入門
- zk-SNARK Groth16 詳解
- Cairo 0 セキュリティ監査ベストプラクティス
- アカウントアブストラクションのセキュリティ監査チェックリスト
- 初めてのTON:アカウント、トークン、トランザクション、および資産のセキュリティ
- Toncoinスマートコントラクトのセキュリティベストプラクティス
- Suiの深掘り:高性能を支える技術とスマートコントラクトのセキュリティ
- ...
スマートコントラクトのセキュリティ監査スキルを統合し、熟練した後、独自の方法論を確立することができる。これにより、問題の核心に迅速にたどり着き、解決策を見極めることが可能になります。優れた方法論は、私たちの効率を倍増させてくれる。
- 監査業務に対する方法論
- スマートコントラクトのセキュリティ実践に対する方法論
- 物事を行うための方法論
- 思考体系を構築するための方法論
創造力は私たちが敵を打ち負かし、勝利を収めるための切り札であり、前進し続けるために必要なものである。スキルを段階的に習得した後、さらに私たちの思考を強化することで、より遠くまで進むことができるようになる。
- 好奇心を保つ
- 新しい物事に対する敏感さ
- 自分の領域や専門、職業に限定されないこと
- 知識を追い求める
- 知識に対する敬意を保つ
- 新しい知識を探求する
- ハッカーThinking
- ハッカーとは精神や思考法でもあり、正しさを守りつつ奇策を出すこと
- 研究に長ける
- 研究を行う際には、実際の成果やドキュメントとしてアウトプットするべき
- エンジニアリング化
- 優れたアイデアや研究成果をエンジニアリング化し、実践で検証することに長ける
- SlowMist MistEye Monitoring System
- SlowMist Contract Visibility Analysis Tool
- SlowMist Static Vulnerability Scanner
本文に対して貴重な意見をいただいた友人たちに感謝する。
また、英文版の翻訳作業を担当してくれたJianさん、そしてカバーイラストを提供してくれたHik3さん、日本語版の記事の専門的な翻訳を担当してくれたJackさんにも感謝する。