OWASP Top 10
Web アプリで特に頻出かつ影響の大きい脆弱性リスクを、OWASP が定期的にランキング化したものです。設計・レビューの共通言語として使われます。
- 1.OWASP Top 10 は、Web アプリの代表的な脆弱性リスクを重要度順にまとめたコミュニティ標準。約3〜4年ごとに改訂されます。
- 2.最新版(2021)の第1位はアクセス制御の不備。インジェクションや認証の不備、設定ミスなど、定番のリスクが並びます。
- 3.個別の攻撃名ではなく「リスクのカテゴリ」。網羅的なチェックリストというより、優先的に潰すべき領域を示す出発点として使います。
OWASP Top 10 とは何か
OWASP(Open Worldwide Application Security Project)は、Web アプリのセキュリティ向上を目的とする非営利のコミュニティです。その代表的な成果物が OWASP Top 10 で、「Web アプリで特によく起き、かつ影響が大きい脆弱性リスク」を10個のカテゴリにまとめ、重要度順に並べたものです。
実際の脆弱性データや専門家の調査を基に、おおむね3〜4年ごとに改訂されます。本記事では最新版である 2021 年版を扱います。Top 10 は世界中で業界標準の共通言語として使われ、開発標準・調達要件・教育カリキュラムなど幅広く参照されます。
重要なのは、これが「攻撃手法の一覧」ではなく「リスクのカテゴリ」だという点です。たとえば「インジェクション」には SQL インジェクションや OS コマンドインジェクションなど複数の攻撃が含まれます。
2021 年版の全体像
2021 年版の10カテゴリを、概要とともに一覧します。番号(A01〜A10)はそのまま順位を表します。
| 順位 | カテゴリ | 内容(要点) |
|---|---|---|
| A01 | アクセス制御の不備 | 権限チェック漏れで他人の資源を操作(IDOR・権限昇格) |
| A02 | 暗号化の失敗 | 機密データの平文保存・弱い暗号・通信の非保護 |
| A03 | インジェクション | 入力をコードとして解釈(SQL・OSコマンド・XSS を含む) |
| A04 | 安全でない設計 | そもそもの設計段階での欠陥(脅威モデリング不足) |
| A05 | セキュリティ設定ミス | 既定値の放置・不要機能の有効化・詳細エラー露出 |
| A06 | 脆弱で古いコンポーネント | 既知の脆弱性を持つライブラリ・依存の放置 |
| A07 | 識別・認証の不備 | 弱いパスワード運用・セッション管理の欠陥 |
| A08 | ソフトウェア・データ完全性の不備 | 検証なしの更新・安全でないデシリアライズ |
| A09 | ログ・監視の不備 | 攻撃の検知・追跡ができない(記録不足) |
| A10 | SSRF | サーバに任意の宛先へリクエストさせる攻撃 |
2021 年版では「アクセス制御の不備」が一気に第1位へ浮上し、「安全でない設計」という設計段階を問うカテゴリが新設されました。また従来トップだったインジェクションに XSS が統合されています。順位や区分は版ごとに動くため、参照時は必ず「どの年版か」を確認してください。
上位リスクを少し詳しく
A01: アクセス制御の不備(Broken Access Control)
「ログイン済み」と「その資源を操作してよい」を取り違える欠陥です。たとえば /orders/1001 を /orders/1002 に変えるだけで他人の注文が見えてしまう(IDOR)類が典型。認証(誰か)と認可(何をしてよいか)は別物で、リソースごとに毎回権限を確認する必要があります。詳細は認証と認可の違いを参照してください。
A03: インジェクション(Injection)
ユーザー入力を、データではなくコードとして解釈させてしまう欠陥群です。SQL 文に文字列を連結すればSQLインジェクション、HTML にそのまま出せばXSSになります。根治の発想は共通で、「プレースホルダ/エスケープでデータとコードを分離する」ことです。
A02: 暗号化の失敗(Cryptographic Failures)
機密データを平文で保存する、弱い・古い暗号方式を使う、通信を暗号化しない、といった失敗です。パスワードを可逆暗号や高速ハッシュで保存するのも該当します(正解はハッシュ+ソルト)。前提知識は暗号の基礎で押さえられます。
攻撃名ではなくリスク分類として使う
Top 10 を活用するうえで誤解しやすいのが、これを「これだけ守れば安全」という完全なチェックリストと捉えてしまうことです。実際には Top 10 は最重要の出発点であり、ここに載らないリスクも当然存在します(OWASP 自身も網羅を主張していません)。
- 優先順位づけ:限られた工数を、まず影響の大きいカテゴリへ振り向ける指針として使います。
- 共通言語:開発・レビュー・セキュリティ担当の間で「A01 の対策は?」と会話を通じやすくなります。
- 教育の土台:新人が「まず何を学ぶべきか」を知る入り口になります。
Top 10 をすべて潰しても、それは「代表的な落とし穴を避けた」状態であって、安全の保証ではありません。網羅的な検証が要る場面では、より詳細な OWASP ASVS(Application Security Verification Standard)や、対象ドメイン固有の脅威分析を併用してください。Top 10 はゴールではなくスタートラインです。
まとめ
OWASP Top 10 は、Web アプリのセキュリティで「まず押さえるべきリスク」を重要度順に示した、実質的な業界標準です。2021 年版ではアクセス制御の不備が第1位となり、インジェクションや認証の不備、設定ミスといった定番が並びます。
個別の攻撃は本サイトの各記事(アクセス制御、SQLインジェクション、XSS、SSRF)で深掘りできます。Top 10 を地図として使い、自分のアプリで該当しそうな領域から優先的に潰していくのが、現実的で効果の高い進め方です。
セキュリティ Article
OWASP Top 10を実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
OWASP
比較で見る軸
難易度: intermediate / カテゴリ: セキュリティ / タグ数: 4
導入後に効く点
最新版(2021)の第1位はアクセス制御の不備。インジェクションや認証の不備、設定ミスなど、定番のリスクが並びます。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- intermediate
- カテゴリ
- セキュリティ
- タグ数
- 4
判断チェックリスト
- 自社の用途が「OWASP / セキュリティ」に近いか確認する。
- 強みである「OWASP Top 10 は、Web アプリの代表的な脆弱性リスクを重要度順にまとめたコミュニティ標準。約3〜4年ごとに改訂されます。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。