ストーリー
田
田中VPoE
DevSecOpsの全体像は掴めたか。次は「何から守るのか」を明確にする。脅威ランドスケープの理解だ
あなた
OWASP Top 10は知っていますが、それだけでは不十分ですか?
あ
田
田中VPoE
OWASP Top 10は重要だが、あくまで「Webアプリケーション」に限定した脅威リストだ。エンタープライズのセキュリティを設計するには、サプライチェーン攻撃、内部脅威、クラウド固有の脅威まで含めた全体像が必要だ
田
田中VPoE
脅威モデリングというフレームワークがある。STRIDEモデルが代表的だ。これを使えば、システムごとに固有の脅威を体系的に洗い出せる
脅威の分類体系
STRIDE脅威モデル
MicrosoftのSTRIDEモデルは、6つのカテゴリで脅威を分類します。
| カテゴリ | 英語名 | 脅威の内容 | 対策の方向性 |
|---|
| S なりすまし | Spoofing | 他者になりすましてアクセス | 認証の強化(MFA、証明書) |
| T 改ざん | Tampering | データやコードの不正な変更 | 完全性チェック(署名、ハッシュ) |
| R 否認 | Repudiation | 行為を否認する | 監査ログ、タイムスタンプ |
| I 情報漏洩 | Information Disclosure | 機密情報の不正な公開 | 暗号化、アクセス制御 |
| D サービス拒否 | Denial of Service | サービスの可用性を損なう | レート制限、冗長化 |
| E 権限昇格 | Elevation of Privilege | 不正に権限を取得 | 最小権限原則、RBAC |
脅威モデリングの実施手順
脅威モデリングの4ステップ:
Step 1: 対象の把握
├── データフロー図(DFD)の作成
├── 信頼境界(Trust Boundary)の特定
└── エントリポイントの列挙
Step 2: 脅威の特定
├── STRIDEをDFDの各要素に適用
├── 攻撃者のモチベーション分析
└── 攻撃ベクトルの列挙
Step 3: リスク評価
├── DREAD or CVSS によるスコアリング
├── 発生可能性 × 影響度
└── 優先順位付け
Step 4: 対策の決定
├── 回避(Avoid)
├── 軽減(Mitigate)
├── 転嫁(Transfer)
└── 受容(Accept)
現代の主要な脅威カテゴリ
1. サプライチェーン攻撃
依存ライブラリやビルドツール経由の攻撃が急増しています。
| 事例 | 影響 | 攻撃手法 |
|---|
| SolarWinds(2020) | 18,000以上の組織に影響 | ビルドシステムへのバックドア埋め込み |
| Log4Shell(2021) | Java利用の大半のシステム | OSSの脆弱性(JNDI Injection) |
| codecov(2021) | 数千のCI/CD環境 | CI/CDスクリプトの改ざん |
| xz Utils(2024) | Linux系OS全般 | メンテナのソーシャルエンジニアリング |
サプライチェーン攻撃の経路:
[攻撃者]
│
├──→ OSSライブラリの改ざん ──→ npm/PyPI/Maven ──→ あなたのアプリ
│
├──→ ビルドツールの侵害 ──→ CI/CDパイプライン ──→ デプロイ成果物
│
├──→ コンテナイメージの改ざん ──→ Docker Hub ──→ 本番環境
│
└──→ メンテナの買収/脅迫 ──→ 正規のリリース ──→ 全利用者
2. クラウドネイティブ環境の脅威
| 脅威 | 説明 | STRIDE分類 |
|---|
| IAM設定ミス | 過剰な権限付与 | E(権限昇格) |
| S3バケット公開 | ストレージの公開設定 | I(情報漏洩) |
| コンテナエスケープ | コンテナから脱出してホストに到達 | E(権限昇格) |
| SSRF | サーバーサイドからの内部リクエスト偽造 | S, I |
| メタデータサービスへのアクセス | クラウドメタデータAPI経由の認証情報取得 | I, E |
| シークレットのハードコード | コードやConfigにシークレットを直接記述 | I(情報漏洩) |
3. CI/CDパイプラインへの攻撃
| 攻撃ベクトル | 説明 | 影響 |
|---|
| ポイズンドパイプライン | CI設定ファイルを改ざんして悪意あるコードを実行 | ビルド成果物の汚染 |
| 依存関係の混乱(Confusion) | プライベートパッケージ名を悪用 | 悪意あるパッケージのインストール |
| ビルドキャッシュの汚染 | キャッシュに悪意あるオブジェクトを混入 | 以降のビルドすべてに影響 |
| シークレットの窃取 | CI環境変数に設定されたシークレットを外部に送信 | 認証情報の漏洩 |
| 成果物の改ざん | ビルド成果物のレジストリを改ざん | 改ざんされたバイナリの配布 |
4. 内部脅威
| 種類 | 特徴 | 検出の難しさ |
|---|
| 悪意のあるインサイダー | 故意にデータを持ち出す | 正当なアクセス権を持つため検出が困難 |
| 過失によるインサイダー | 設定ミス、誤送信 | 悪意がないため行動パターン検出が困難 |
| 侵害されたインサイダー | 認証情報を盗まれた社員 | 正当な認証情報を使用するため検出が困難 |
OWASP Top 10(2021)とAPI Security Top 10
OWASP Top 10 Web Application Security Risks
| 順位 | カテゴリ | 概要 |
|---|
| A01 | アクセス制御の不備 | 権限チェックの欠如、IDOR |
| A02 | 暗号化の失敗 | 平文通信、弱い暗号アルゴリズム |
| A03 | インジェクション | SQL/NoSQL/OS/LDAPインジェクション |
| A04 | 安全でない設計 | 脅威モデリングの欠如、ビジネスロジックの欠陥 |
| A05 | セキュリティ設定のミス | デフォルト設定の放置、不要な機能の有効化 |
| A06 | 脆弱で古いコンポーネント | パッチ未適用のライブラリ |
| A07 | 識別と認証の失敗 | ブルートフォース、弱いパスワードポリシー |
| A08 | ソフトウェアとデータの完全性の不備 | 署名なしのアップデート |
| A09 | セキュリティログと監視の不備 | ログ不足、アラート不在 |
| A10 | SSRF | サーバーサイドリクエストフォージェリ |
OWASP API Security Top 10(2023)
| 順位 | カテゴリ | 概要 |
|---|
| API1 | BOLA | オブジェクトレベルの認可不備 |
| API2 | 認証の不備 | 弱いトークン管理、認証フローの欠陥 |
| API3 | BOPLA | プロパティレベルの認可不備 |
| API4 | 制限のないリソース消費 | レート制限なし、ページネーション不備 |
| API5 | BFLA | 機能レベルの認可不備 |
| API6 | サーバーサイドリクエストフォージェリ | 内部APIへの不正アクセス |
| API7 | セキュリティ設定のミス | CORS設定不備、エラーメッセージ漏洩 |
| API8 | 自動化された脅威への対策不足 | ボット対策の欠如 |
| API9 | 不適切な在庫管理 | 古いAPIバージョンの放置 |
| API10 | APIの安全でない使用 | サードパーティAPIへの過度な信頼 |
DREADによるリスクスコアリング
各脅威のリスクを定量的に評価するため、DREADモデルを使用します。
| 評価軸 | 英語名 | 評価内容 | スコア(1-10) |
|---|
| D 被害の大きさ | Damage | 攻撃成功時の影響度 | 1(軽微)〜10(壊滅的) |
| R 再現性 | Reproducibility | 攻撃の再現しやすさ | 1(困難)〜10(常に可能) |
| E 攻撃容易性 | Exploitability | 攻撃に必要なスキル | 1(専門知識必要)〜10(ツールで可能) |
| A 影響範囲 | Affected Users | 影響を受けるユーザー数 | 1(ごく一部)〜10(全ユーザー) |
| D 発見容易性 | Discoverability | 脆弱性の発見しやすさ | 1(極めて困難)〜10(公開情報) |
リスクスコア = (D + R + E + A + D) / 5
| スコア範囲 | リスクレベル | 対応方針 |
|---|
| 8.0 - 10.0 | Critical | 即時対応必須 |
| 6.0 - 7.9 | High | 次スプリントで対応 |
| 4.0 - 5.9 | Medium | 計画的に対応 |
| 1.0 - 3.9 | Low | 受容またはバックログ |
まとめ
| ポイント | 内容 |
|---|
| STRIDE | 6カテゴリで脅威を体系的に分類するフレームワーク |
| 現代の主要脅威 | サプライチェーン攻撃、クラウドネイティブ脅威、CI/CD攻撃、内部脅威 |
| OWASP | Web Application Top 10とAPI Security Top 10を把握する |
| DREAD | 脅威のリスクを定量的にスコアリングする手法 |
チェックリスト
次のステップへ
次は「セキュリティ要件の定義」を学びます。脅威分析の結果を具体的なセキュリティ要件に落とし込む方法を身につけましょう。
推定読了時間: 30分