🎓 レベル:標準 | 重要度:A(必須) 📎 前提:脅威モデリング(STRIDEと攻撃面) ⚠️ ランキングは改訂される(要最新確認)。本稿は 2021 版を安定基準とし、2025 版の主な変更を併記。
要点(BLUF)
- OWASP Top 10 は Web アプリで起きやすいリスクを 10 カテゴリに整理した、世界標準の「弱点の地図」。攻撃集ではなく優先順位の指針。
- 一貫して首位はアクセス制御の不備(Broken Access Control)。認可(アクセス制御モデルとゼロトラスト)の実装ミスが最大の弱点。
- 2025 版ではソフトウェア供給網の失敗と例外条件の取り扱い不備が新カテゴリ入り、SSRF はアクセス制御不備に統合された(要最新確認)。
概念:弱点の「地図」を持つ
脅威モデリング(脅威モデリング(STRIDEと攻撃面))で自分のアプリ固有の脅威を洗い出す一方、世の中のアプリに共通して多い弱点を知っておくと、見落としが減ります。それを集約したのが OWASP(Open Worldwide Application Security Project)の Top 10 です。実データ(多数の CWE=弱点分類)に基づき、数年ごとに改訂されます。守る側は「まずここから潰す」優先順位として使います。
仕組み:2021 版の 10 カテゴリ(安定基準)
| # | カテゴリ | 一言で | 主な防御の方向 |
|---|---|---|---|
| A01 | アクセス制御の不備 | 権限チェック漏れ | 認可をサーバ側で徹底(アクセス制御モデルとゼロトラスト) |
| A02 | 暗号化の失敗 | 機密データの保護不足 | 適切な暗号・保存(暗号の基礎 目次) |
| A03 | インジェクション | 入力がコードとして解釈 | パラメータ化・出力エンコード(入力検証とインジェクション対策) |
| A04 | 安全でない設計 | 設計段階の欠陥 | 脅威モデリング・設計原則(セキュリティ設計原則) |
| A05 | セキュリティ設定ミス | 既定のまま・過剰公開 | ハードニング・最小化 |
| A06 | 脆弱で古いコンポーネント | 既知脆弱性の放置 | 依存管理・更新(サプライチェーンセキュリティ) |
| A07 | 識別と認証の失敗 | 認証の弱さ | MFA・安全な保存(認証の基礎(パスワード保存とMFA)) |
| A08 | ソフトウェアとデータの完全性の失敗 | 改ざん検知不足 | 署名・検証(デジタル署名と証明書(PKI)) |
| A09 | ログと監視の不足 | 気づけない | ログ・検知(ログと監視(SIEM/SOC)) |
| A10 | サーバサイドリクエストフォージェリ(SSRF) | サーバを踏み台に内部要求 | 宛先の検証・分割 |
仕組み:2025 版の主な変更(要最新確認)
改訂のたびに実データを反映して順位や枠組みが変わります。2025 版の注目点は次の通りです。
- A01 アクセス制御の不備:引き続き首位。SSRF はこのカテゴリに統合された。
- A02 セキュリティ設定ミスが上位へ:設定起因の事故が増えたことを反映(2021 の 5 位から上昇)。
- A03 ソフトウェア供給網の失敗(新):旧「脆弱で古いコンポーネント」を拡張し、依存・ビルド・CI/CD 全体の汚染を対象に(サプライチェーンセキュリティ)。
- A10 例外条件の取り扱い不備(新):エラー処理の不備・フェイルオープン(失敗時に開いてしまう)を扱う。フェイルセーフ(セキュリティ設計原則)の重要性を裏づける。
- 暗号化の失敗・インジェクションは健在だが相対順位は下がった。
重要なのは順位そのものより、改訂の方向。「設定・供給網・例外処理」という、コード単体を超えた**システム全体・前段(shift left)**へ防御の重心が移っています。
図解:Top 10 と本テキストの対応
flowchart TD
OWASP["OWASP Top 10(弱点の地図)"]
OWASP --> AC["アクセス制御の不備 -> 第3章 認可"]
OWASP --> INJ["インジェクション -> 05-02 入力検証"]
OWASP --> CRY["暗号化の失敗 -> 第2章 暗号"]
OWASP --> SUP["供給網の失敗 -> 06-04 サプライチェーン"]
OWASP --> LOG["ログ監視の不足 -> 07-01 ログと監視"]
防御側の使い方
- チェックリストではなく優先順位として使う:自分のアプリに当てはめ、上位リスクから対策する。
- 脅威モデリングと併用:Top 10 は一般的傾向、脅威モデリング(脅威モデリング(STRIDEと攻撃面))は自分固有。両方で網羅。
- 各カテゴリを担当ノートへ橋渡し:本テキストの該当章へ降りて具体的な防御を実装する(上表の対応)。
- 版を追う:改訂で重心が動く。最新版を定期確認(要最新確認)。
なぜ安全か:共通の弱点を先回りで潰す
Top 10 が効くのは、多数の実被害データから「起きやすい順」を示しているからです。限られた時間と人を、最も事故が多い領域から投入できます。さらに改訂の方向(設定・供給網・例外処理へ)を読むと、コードだけ直しても足りない――設計・依存・運用まで含めて守る必要があると分かります。
仕組みの直観
OWASP Top 10 は事故の多い交差点ランキングです。すべての道に同じ標識を立てるのは非効率。事故統計(実データ)で危険な交差点トップ10を割り出し、そこから信号と標識を整備します。ランキングは数年ごとに更新され、「最近は工事現場(供給網)での事故が増えた」といった傾向も反映されます。
⚠️ よくある誤解・設定ミス
- 「Top 10 を潰せば完璧」と思う:あくまで頻出の地図。自分固有の脅威は脅威モデリングで補う。
- クライアント側だけで認可する:A01 の典型。権限チェックは必ずサーバ側で(アクセス制御モデルとゼロトラスト)。
- 古い版で固定:枠組みが変わる。最新版の重心移動を追う(要最新確認)。
- 「設定ミス」を軽視:既定のまま・過剰公開は上位リスク。ハードニングと最小化を。
対応 lab
個別カテゴリの防御は該当ノートの lab で扱います(暗号=第2章、認証=第3章)。本トピックは地図のため lab は置きません。
関連
- 自分固有の脅威を洗う → 脅威モデリング(STRIDEと攻撃面)
- 最頻出カテゴリの防御 → 入力検証とインジェクション対策
- 認証/セッションの実装 → 認証とセッションの安全な実装