Web Security

OWASP Top 10

OWASP Top 10

Category: Web Security / Updated: 2026-05-26

📖

Overview

OWASP(Open Worldwide Application Security Project)とは、Webアプリケーションのセキュリティ向上を目的とする非営利のオープンコミュニティです。世界中のセキュリティ専門家がボランティアで参加し、ツール、ドキュメント、フォーラムなどを通じてアプリケーションセキュリティの知見を共有しています。

OWASP Top 10は、Webアプリケーションにおける最も重大なセキュリティリスクを10項目にまとめたランキングです。数年ごとに改訂され、最新版は2021年版です。開発者やセキュリティ担当者にとっての必読資料であり、多くの組織がWebアプリケーションのセキュリティ基準として採用しています。

OWASP Top 10は単なるリスク一覧ではなく、各リスクの概要・攻撃シナリオ・対策方法が体系的にまとめられた啓発ドキュメントです。PCI DSS等のコンプライアンス基準でも参照されており、Webアプリケーションセキュリティの事実上の国際標準として広く認知されています。

🔬

Details

2021年版 OWASP Top 10の10項目

  1. A01:2021 — Broken Access Control(アクセス制御の不備):最も重大なリスクに昇格。ユーザーが権限外のデータや機能にアクセスできてしまう脆弱性。IDOR(安全でない直接オブジェクト参照)やパストラバーサルなどが該当
  2. A02:2021 — Cryptographic Failures(暗号化の失敗):旧名「機微なデータの露出」から改称。暗号アルゴリズムの不適切な使用、弱い鍵管理、平文でのデータ送信などが含まれる
  3. A03:2021 — Injection(インジェクション):SQLインジェクション、NoSQLインジェクション、OSコマンドインジェクション、LDAPインジェクションなど。ユーザー入力が適切に検証・サニタイズされずに処理される脆弱性
  4. A04:2021 — Insecure Design(安全でない設計):2021年版で新規追加。設計段階でのセキュリティ欠如に焦点。脅威モデリングやセキュアデザインパターンの未適用が原因
  5. A05:2021 — Security Misconfiguration(セキュリティ設定のミス):不要な機能の有効化、デフォルト設定の未変更、過剰なエラー情報の表示、セキュリティヘッダーの未設定など
  6. A06:2021 — Vulnerable and Outdated Components(脆弱で古いコンポーネント):既知の脆弱性を持つライブラリ、フレームワーク、OSを使用し続けるリスク。ソフトウェア構成分析(SCA)で検出可能
  7. A07:2021 — Identification and Authentication Failures(識別と認証の失敗):ブルートフォース攻撃への無防備、弱いパスワードの許可、セッション管理の不備など
  8. A08:2021 — Software and Data Integrity Failures(ソフトウェアとデータの整合性の不備):CI/CDパイプラインの整合性未検証、信頼されていないソースからのプラグインや更新の利用など
  9. A09:2021 — Security Logging and Monitoring Failures(セキュリティログとモニタリングの不備):セキュリティイベントの未記録、ログの監視不足、インシデント対応計画の欠如
  10. A10:2021 — Server-Side Request Forgery (SSRF)(サーバーサイドリクエストフォージェリ):2021年版で新規追加。攻撃者がサーバーから内部リソースへの不正なリクエストを実行させる脆弱性

OWASP ASVS(Application Security Verification Standard)

OWASP ASVSは、Webアプリケーションのセキュリティ要件を体系的に定義した検証基準です。Top 10が「最低限注意すべきリスク」であるのに対し、ASVSはより包括的なセキュリティ要件を3つのレベル(Level 1〜3)で定義しています。セキュリティテストの計画策定やセキュリティ要件の仕様書作成に活用されます。

OWASP ZAP(Zed Attack Proxy)

OWASP ZAPは、OWASPが開発・維持するオープンソースのWebアプリケーション脆弱性スキャナーです。プロキシとして動作し、Webアプリケーションの通信を傍受・解析して脆弱性を自動検出します。CI/CDパイプラインへの統合も可能で、DevSecOpsの実践においてDASTツールとして広く利用されています。

🛡️

Security Measures

  • 01
    セキュアコーディングガイドラインの策定と遵守:OWASP Top 10を基にした組織独自のセキュアコーディングガイドラインを策定し、開発者全員に教育を実施してください。コードレビューのチェックリストにもTop 10の観点を組み込みましょう。
  • 02
    定期的な脆弱性スキャンとペネトレーションテスト:OWASP ZAPやBurp Suiteを使用したDASTスキャン、SonarQubeやSemgrepを使用したSASTスキャンを定期的に実施してください。重要なリリース前にはペネトレーションテストも推奨します。
  • 03
    依存関係の継続的な監視と更新:SCA(Software Composition Analysis)ツールを導入し、使用しているオープンソースコンポーネントの脆弱性を継続的に監視してください。Dependabot、Snyk、OWASP Dependency-Checkなどが有効です。
  • 04
    入力バリデーションと出力エンコーディングの徹底:すべてのユーザー入力に対してホワイトリスト方式のバリデーションを実施し、出力時にはコンテキストに応じたエンコーディングを適用してください。パラメータ化クエリの使用でSQLインジェクションを防止しましょう。
  • 05
    セキュリティ設定の標準化と自動検証:Infrastructure as Codeを活用してセキュリティ設定を標準化し、設定ドリフトを自動検出する仕組みを構築してください。デフォルト設定のまま運用しないよう、ハードニングガイドラインを適用しましょう。
  • 06
    脅威モデリングの設計段階での実施:STRIDE、PASTA等の脅威モデリング手法を設計段階で実施し、セキュリティリスクを早期に特定してください。A04(安全でない設計)への対策として、セキュリティバイデザインの原則を組織に定着させましょう。
⚠️

Incidents

📋 Equifax 大規模個人情報漏洩事件(2017年)— A06: 脆弱なコンポーネント

2017年、米国大手信用情報機関Equifaxが約1億4,700万人分の個人情報(社会保障番号、生年月日、住所など)を漏洩した事件です。原因は、Apache Strutsフレームワークの既知の脆弱性(CVE-2017-5638)にパッチを適用していなかったことでした。

脆弱性の公開からパッチ適用までの2ヶ月間に攻撃者が侵入し、76日間にわたってデータを窃取しました。この事件はA06(脆弱で古いコンポーネント)の典型例であり、パッチ管理とソフトウェア構成管理の重要性を世界中に知らしめました。Equifaxは約7億ドルの和解金を支払うこととなりました。

📋 Capital One クラウド情報漏洩事件(2019年)— A01/A10: アクセス制御不備・SSRF

2019年、Capital Oneが約1億600万人分の顧客データ(クレジットカード申請情報、社会保障番号など)を漏洩した事件です。攻撃者はAWS上のWAF(Web Application Firewall)の設定ミスを悪用し、SSRF攻撃によってEC2インスタンスのメタデータサービスからIAM認証情報を取得しました。

取得した認証情報を使用してS3バケットから大量のデータを窃取しました。A01(アクセス制御の不備)とA10(SSRF)の複合的な悪用であり、クラウド環境特有のセキュリティリスクを顕在化させた事件です。Capital Oneは8,000万ドルの罰金を課されました。

📋 Log4Shell 脆弱性(2021年)— A06: 脆弱なコンポーネント

2021年12月、Javaの広範に使用されるログライブラリ「Apache Log4j」にリモートコード実行の脆弱性(CVE-2021-44228、通称Log4Shell)が発見されました。CVSS最高スコアの10.0が付与された極めて深刻な脆弱性です。

Log4jは数百万のJavaアプリケーションで使用されており、影響範囲は史上最大級でした。攻撃者はログメッセージに特殊な文字列を含めるだけでリモートコード実行が可能となり、発見直後から大規模な攻撃が世界中で観測されました。この事件はA06の危険性を象徴するものであり、SBOM(Software Bill of Materials)の重要性と依存関係管理の必要性を強く認識させる契機となりました。

🔗

Related Terms