Mímisbrunnr知恵の泉

← サイバーセキュリティ 一覧

🎓 レベル:標準 | 重要度:A(必須) 📎 前提:入力検証とインジェクション対策

要点(BLUF)

概念:直すより作り込まない

脆弱性は工程が進むほど修正コストが跳ね上がります。本番で発見された欠陥は、設計時に気づいた場合の何倍もの手間になります。だから守りを上流(設計・実装・レビュー)に前倒しします。これが shift left で、OWASP 2025 が「設計・供給網・例外処理」へ重心を移した方向(OWASP Top 10 の概観)とも一致します。

仕組み:三本柱

1. セキュアバイデザイン(設計で守る)

コードを書く前に、設計段階で脅威モデリング(脅威モデリング(STRIDEと攻撃面))と設計原則(セキュリティ設計原則)を当てます。最小権限・既定拒否・データとコードの分離を設計の前提に据えると、危険な実装が生まれにくくなります。OWASP の A04「安全でない設計」はここを怠った結果です。

2. コードレビュー(人の目)

レビューでセキュリティ観点を明示的に見ます。チェックの軸の例:

3. 自動解析(機械の目)

人手では網羅しきれない部分を自動化で埋めます。

種類何を見るか代表
SAST(静的)ソースコードの危険パターン文字列連結クエリ・危険関数
DAST(動的)動いているアプリの挙動実行時の設定・応答
SCA(依存スキャン)使っているライブラリの既知脆弱性古い依存・既知 CVE(サプライチェーンセキュリティ
シークレット検出鍵・資格情報の混入コミットへの直書き検出

図解:守りを工程に織り込む(shift left)

flowchart LR
    DESIGN["設計(脅威モデリング・設計原則)"] --> CODE["実装(セキュアコーディング)"]
    CODE --> REVIEW["レビュー(人の目)+SAST/SCA/シークレット検出"]
    REVIEW --> CI["CIで自動ゲート(不合格はマージ不可)"]
    CI --> DEPLOY["デプロイ"]
    DEPLOY -.->|"DAST・監視で継続検証"| DESIGN

防御側の使い方/設定

なぜ安全か:早期・多重・自動で取りこぼしを減らす

この体系が効くのは3点です。(1) 早い段階で潰すほど修正は安く、設計の欠陥は実装で取り返せない。(2) 人と機械の二重チェックで、人は文脈を、機械は網羅性を担当し補完する。(3) CI の自動ゲートで「うっかり通る」を構造的に防ぐ。個人の注意力に依存せず、工程として品質を保証するのが要点です。

仕組みの直観

セキュアコーディングは製造業の品質作り込みです。出荷後の検査で不良を見つけるのは高コスト。設計(FMEA に相当する脅威モデリング)、工程内検査(レビュー)、自動検査装置(SAST/DAST/SCA)をラインに組み込み、不良を作らない・流さない。半導体の歩留まり管理と同じで、後工程での手戻りを上流で断つほど全体コストが下がります。

⚠️ よくある誤解・設定ミス

対応 lab

工程・運用が主題のため専用 lab は置きません。安全な実装例は 入力検証とインジェクション対策 のコード断片を、依存・鍵の管理は第6章を参照します。

関連