OWASP Top 10
OWASP Top 10 ・ オワスプトップテン
Webアプリの重大なセキュリティリスクを10項目に整理した定番の啓発文書。対策の共通言語。
✦ 30秒で試す — 航海最も多い弱点は、ログインの「後」に潜んでいる一般ユーザーは、利用者の削除を?予想してみる概要
OWASP Top 10 は、Web アプリケーションで最も重大なセキュリティリスクを10項目に整理した文書です。発行元の OWASP(Open Worldwide Application Security Project)は、ソフトウェアのセキュリティ向上を目的とする非営利のコミュニティで、ツール・ガイドライン・チートシートを無償で公開しています。その中で最も広く知られているのがこの Top 10 で、数年おきに実際の脆弱性のデータと専門家への調査をもとに改訂されています。最新版は2025年11月に公開された2025年版で、2003年の初版から数えて8版目です。
大切なのは位置づけの理解です。Top 10 は「これだけ守れば安全」というチェックリストでも、脆弱性の網羅的な分類でもありません。公式にも「啓発文書(awareness document)」と明記されていて、開発者とセキュリティの専門家が共通の言葉でリスクを語り、対策の優先順位を考えるための出発点です。「うちのアプリは A01 のアクセス制御が弱い」のように、チームをまたいだ会話の共通言語として働くことに価値があります。
なぜ生まれたか
2000年代の初め、Web アプリケーションが急増する一方で、セキュリティの知見はごく一部の専門家に偏っていました。開発者はSQLインジェクションやXSSという言葉すら知らずに脆弱性を含むコードを量産し、発注する側にも「何を要求すれば安全と言えるのか」の基準がありませんでした。セキュリティ対策は「専門家に診断を頼んで初めて問題が見つかる」後追いの活動だったのです。
2003年に初版が公開された OWASP Top 10 は、この非対称を崩すために「まずこの10個を知れ」という形で知識の入口を作りました。無数にある攻撃手法をリスクの大きさで束ね、順位を付けて10個に絞ったことで、専門家でなくても学び始められる地図になったのです。以降、PCI DSS(クレジットカード業界のセキュリティ基準)をはじめ多くの規格や調達の要件が Top 10 を参照するようになり、事実上の業界標準の座を得ました。
改訂のたびに、並びは現実の被害の変化を映してきました。長いあいだ1位だったインジェクションは、2021年版で「アクセス制御の不備」に首位を譲りました。個別の攻撃テクニックよりも、「誰が何をしてよいか」という認可の設計と実装の失敗こそが、現実の被害の最大の源だとデータが示したからです。
詳細
2025年版の構成 — 何が上がり、何が加わったか
2025年版は、約280万のアプリケーションの検査データ(589種類の CWE、つまり弱点の分類番号にわたる)から8項目を選び、データに表れにくい新しい問題を拾うために残り2項目をコミュニティへのアンケートから選んでいます。10項目に含まれる CWE は合わせて248種類です。2021年版からの主な変化は次の図のとおりです。
A01 は引き続き「アクセス制御の不備」で、2021年版で独立していた SSRF(サーバに内部の URL を取りに行かせる攻撃)がここに統合されました。SSRF も「サーバが、許されていない相手へのアクセスを代行してしまう」というアクセス制御の失敗の一種だからです。大きく上がったのが A02「セキュリティ設定のミス」(5位から)で、クラウドやコンテナの普及で、アプリの振る舞いが設定ファイルで決まる部分が増えたことを映しています。
A03「ソフトウェアサプライチェーンの失敗」は、2021年版の「脆弱で古いコンポーネント」を広げた新しい項目です。古いライブラリを使い続ける問題だけでなく、依存パッケージそのものの乗っ取り、ビルドや配布の仕組みの改ざんまで、ソフトウェアが作られて届くまでの経路全体(サプライチェーン攻撃)を対象にします。もう1つの新設が A10「例外的な状況の不適切な処理」で、エラーを握りつぶす、失敗したときに安全側ではなく「通す」側に倒れる(フェイルオープン)、エラー画面に内部情報を漏らす、といった例外処理の欠陥を束ねています。
主要項目を防御側の視点で読む
A01 アクセス制御の不備は、「認証は通っているが、認可の確認が漏れている」失敗の総称です。URL の ID を書き換えるだけで他人のデータが見える、一般ユーザーが管理者用の API を直接呼べる、といったものです。対策の要点は、リソースへのアクセスのたびにサーバ側で権限を確かめること、既定で拒否し最小権限を原則にすることです。クライアント側でボタンを隠すのは UI の配慮であって防御ではありません。
A02 セキュリティ設定のミスは、コードではなく構成の問題です。初期パスワードのまま公開された管理画面、誰でも読めるクラウドのストレージ、本番で有効なままのデバッグ機能などが典型で、設定をコードとして管理しレビューする IaC が対策の土台になります。A04 暗号化の失敗は、暗号化すべきデータの平文保存、パスワードの不適切なハッシュ化、TLS の欠如などを束ねた項目です。
A05 インジェクションは、データとして扱うべき入力が命令として解釈されてしまう欠陥の総称で、SQLインジェクションが代表格です。2021年版からXSSもここに含まれています。プレースホルダ(プリペアドステートメント)や文脈に応じたエスケープ、CSP のような多層の防御が定石です。順位は3位から5位に下がりましたが、起きたときの被害の大きさは変わりません。
A06 安全でない設計はほかと毛色が異なり、「実装は仕様どおりだが、仕様そのものが危険」な場合を指します。パスワードリセットの秘密の質問のように、正しく実装しても安全にならない設計は、コードレビューでは見つかりません。設計段階で「攻撃者ならどこを突くか」を洗い出す脅威モデリングが対応策になります。A07 認証の失敗は、弱いパスワードの許容、総当たりへの無防備、セッションの管理の甘さなどで、MFA やレート制限が効く領域です。A09 セキュリティログとアラートの失敗は、攻撃を「防げなかった」ことより「気づけなかった」ことを問題にする項目で、2025年版では名前が「監視」から「アラート」に替わりました。ログを取るだけでなく、異常をアラートとして人に届け、インシデント対応につなげるところまでが求められています。
開発プロセスへの組み込み方
Top 10 の実践的な使い方は、リストを暗記することではなく、開発の各段階に対応づけることです。設計段階では A01 と A06 を意識して認可のモデルと脅威モデリングをレビューし、実装段階ではコードレビューの観点にインジェクション対策と認証まわりの定石を入れます。CI/CD には静的解析(SAST)と依存関係のスキャン、ソフトウェア部品表(SBOM)の生成を組み込んで A03・A05 を機械的に拾い、リリース前にはテストの一環として動的スキャン(DAST)やペネトレーションテストで、A01・A02 のような文脈に依存する問題を人の目で確かめる。これが多層の構えです。運用に入ったあとは、WAF が既知の攻撃パターンを手前で落とし、A09 のログとアラートが「すり抜けたもの」に気づく最後の網になります。
より本格的に取り組む場合、OWASP は Top 10 の先も用意しています。検証項目を網羅的に定義した ASVS(Application Security Verification Standard)、実装の定石を集めた Cheat Sheet Series、わざと脆弱に作られた練習用のアプリ Juice Shop などです。Top 10 は入口であって到達点ではありません。この認識を持って、チームの共通言語として使い倒すのが正しい付き合い方です。
試問
OWASP Top 10 は、Web アプリの重大なセキュリティリスクを10の項目に整理した文書で、どの項目に当たるかは「どこが壊れているか」で決まります。セキュリティ診断で見つかった8つの問題を、4つの項目に振り分けます。
診断で見つかった8つの問題を、OWASP Top 10 のどの項目に当たるかで仕分けよ
項目を選んでから、入れる箱を選びます
