Crypto OS
キャリアトラック

T5 · Security Engineer

脆弱性をいくつか見つける段階から、他者が意思決定に使える脅威モデルを提供する段階へ。

セキュリティと監査の分野向けです。

このページの T5 は Track です。講座の章は「第 T30 章」のようにリンク付きで区別します。講座の T5 は EVM Account Model を扱います。

この Track に向いている人

コードの問題は見えても、深刻度を説明できない。 検査不足を知っても、技術的な欠陥を誰がいくら失うかへ換算する方法がなく、危険度を感覚で決めています。

実装は調べられても、経済を調べられない。 再入、権限、精度には慣れても、すべて合法な呼び出しを使い、資金規模だけで奪う攻撃が見えません。

報告が指摘一覧だけになっている。 137 行目の修正などを提出し、修正も確認しても、どんな条件でまだ事故が起きるかは答えられません。

ツールが見ていないものを知らない。 静的解析、網羅率、Fuzzing を使っていても、合わせて何を覆い、何を省くかの一覧がありません。

境界は、発見したものだけでなく、防がない範囲も含むプロトコルの境界を提供することです。

前提

安全は業務から独立した技能ではありません。第 T29 章が第 24 章と第 T21 章へ依存するのは、オラクルと清算を知らなければ DeFi を監査できないためです。

  1. 第 T7–T9 章
  2. 第 T12 章
  3. 第 T28 章
  4. 第 24 章
  5. 第 T21 章
  6. 第 T29 章
  7. 第 T30 章
graph.ts の依存関係に基づきます
先に読む章グラフ上の理由
第 T7 章から第 T9 章第 T28 章は第 T8・T9 章に依存。Gas の構成まで計算できる実装経験が必要
第 T12 章 · Testing & Deployment同じく第 T28 章の前提。Fork の能力なしでは再現コードを書けず、それが最も確かな成果物
第 T28 章 · Smart Contract Security脆弱性は行間の順序と、守られない経路にあるという原理
第 24 章 · Crypto でなぜゼロ化と攻撃が続くか第 T29 章の前提。事例集ではなく攻撃の分類を与える
第 T21 章 · Oracle同じく第 T29 章の前提。よくある単一障害点と経済攻撃の入口
第 T29 章 · Protocol Security脆弱性なしに資金だけで何ができるか。攻撃費用表が中心の道具
第 T30 章 · Audit脅威モデルの四問、不変条件の三種類、四層のツールの境界。成果物の構造

第 T24 章 · MEV(順序も攻撃面)と第 T26 章 · Cross-chain(信頼の仮定の負担者)も強く勧めます。

学ぶ内容

  1. Audit
  2. Threat Model
  3. Fuzzing
  4. Formal Verification
  5. Economic Security

五テーマを三群と、全体を貫く職業上の規範に分けます。

1.Threat Model と Audit:範囲を提供可能な判断へ

監査範囲は脅威モデルで決まり、能力の境界でもあります。未知のプロトコルで二日以内に、攻撃者、狙うもの、能力、明確に防がないものを記します。

入口から資金経路を描き、信頼境界、外部依存と失敗、誰が何を変更し、即時か遅延かの権限表を作ります。

深刻度は感覚ではなく、到達可能性(必要な前提)と影響(取得額と被害人数)の積です。二変数を書けない評価は推測です。

2.Fuzzing と Formal Verification:次の変更でも結論を保つ

成果物は自動実行するものです。呼び出し列を探す状態を持つ Fuzzing が主力で、形式検証は短く、性質を厳密に表せ、失敗費用が大きい関数に絞ります。

必要な技能は次です。

  • 未知のコードから不変条件を導き、安全性と現在の実装の偶然を区別する
  • 深い状態へ到達する呼び出し列の生成器を書く
  • 網羅率に基づいて調整し、どの時間で効果が逓減するか説明する
  • 検証結果は記述したモデル内だけで成立し、モデルが誤れば証明も誤ると理解する

3.Economic Security:脆弱性なしに資金だけで攻撃する

コードの監査者とプロトコルの監査者を分ける群です。攻撃者ごとに、資金、時間、取引数、取得可能額を表へ記します。

価格操作とフラッシュローン、提案期間と議決権の借入、流動性撤去の連鎖、清算報酬の悪用、プロトコル間の伝染を最低限扱います。

難所はどの費用を計算すべきかを思い付くことです。仮定ごとに、その仮定を資金で崩す費用を問います。

4.職業上の規範:参加するための条件

練習の対象は実際のシステムであり、そこでの越境は学習ではなく事故です。

  • 公開コードを読み、ローカルか Fork だけで再現します。無許可のオンライン配備へ対話的なテストを行ってはいけません。
  • 実際の脆弱性は責任ある開示に従い、先に運営や公開窓口へ連絡し、修正期間を与え、修正確認後に公開します。
  • 資産が必要ならテストネットを使い、避けられない場合は少額で事前に明示します。
  • コピーしてメインネットで実行できる攻撃スクリプトを報告に書きません。再現は Fork に置き、業界の慣行と自分の保護を守ります。

卒業成果物

脅威モデル、不変条件、再現コードを備えた実際のプロトコルの監査報告。

卒業プロジェクトと異なり、他者が作ったものを評価します。実務の形式に近く、雇用者がそのまま仕事の見本として扱いやすい成果物です。

公開コード、中心部が二千行以内、公開監査報告がある対象を選びます。公開報告が重要です。終了後に照合し、見落としと独自の発見を確認できます。

他者が再現コードを動かせるか。 各発見に、一コマンドで Fork 上で再現し、前後の状態を示すテストを付けます。

Fork 専用であり、オンライン配備へ実行してはいけないと明記します。 再現コードがなければ、専門的な評価では未検証の推測です。

四問に答え、防がないものを最低三つ示す。 内部のマルチシグや更新権限者も攻撃者に含め、目的、能力、範囲を記します。

第四問が専門性を分けます。各項目に、起きた場合の負担者を書きます。

不変条件と、実行済みの Fuzzing を付ける。 三種類を覆う最低八つで、違反の結果と自動検証方法を示します。

意図的な破壊を検出した最短の失敗列を残します。常に成功する検査は、ない検査と同じです。

攻撃費用表を付ける。 最低三種類の攻撃者に、資金、時間、取引数、成功時の利益上限を示します。

現在のパラメーターで、どの攻撃が割に合うかへ結論を落とします。すべて不利なら、資金の閾値、タイムロック、厚みのどれが支えるかを説明します。報告の他の部分以上に重要です。

各発見に根拠付きの等級を付ける。 ラベルだけでなく、到達可能性と影響を書きます。

冒頭に範囲、対象ファイル、コミット、対象外を示します。第 T30 章の 17 件を直しても資金を失ったチームは、このページが読まれなかった例です。

達成したかを判断するには

よくある誤解

発見数が多いほど品質が高い

数は実装の粗さを測り、評価の深さではありません。低危険度 23 件でも経済の仮定を扱わず、6 件でもモデルと不変条件がある報告のほうが有用です。

どんな条件でまだ事故が起きるかを主問にし、指摘を副産物と扱います。

ツールを実行すれば調べたことになる

静的解析は誤検知もあるフィルターで、Fuzzing は記載条件だけを測ります。出力は脅威モデルを基に判断します。

実問題、誤検知、見落としへ分けます。前二つは見えても、最後は攻撃者の欠落から間接的に推測するしかなく、最も危険な種類です。

監査は公開前の一つの関門

監査は一時点の記録です。コード、依存、市場は変わり、自分が変更しなくても依存の更新で仮定が失われます。

不変条件を CI、重要な仮定を監視へ接続します。依存の実装アドレス変更などを通知します。価値は自動で動き続けるものを、いくつ残したかで決まります。

コードだけを監査し、経済は担当外

範囲として明記するなら専門的ですが、暗黙にすると危険です。多くのチームは経済の監査者を別に雇わず、対象外は誰も見ていないことを意味します。

有料範囲外でも、気付いた未評価の仮定を一節に書き、攻撃費用の計算を勧めます。調べていないリスクの指摘は、低危険度を三つ追加するより役立ちます。

次に進むには

このページの内容