用語集 · セキュリティ
OWASP Top 10
別名: OWASP Top Ten, OWASP トップ 10, OWASP top 10 list
定義
OWASP が公開する、最も重大な Web アプリケーションのセキュリティリスク 10 分類の啓発リストで、セキュリティテストやコードレビューの範囲決めに広く使われています。
OWASP Top 10 は、Open Worldwide Application Security Project(OWASP)が発行する文書で、脆弱性データとコミュニティの意見をもとに、Web アプリケーションのセキュリティリスクのうち最も重大なカテゴリーをランク付けしたものです。これは啓発のための文書であり、網羅的な標準ではありません。どこから見るべきかを教えてくれるもので、詳細でテスト可能な要件は OWASP Application Security Verification Standard(ASVS)のようなフレームワークが提供します。
2021 年版の一覧
| ID | カテゴリー | テスターが確認することの例 |
|---|---|---|
| A01 | アクセス制御の不備(Broken Access Control) | ユーザー A がユーザー B のデータを閲覧・変更できないか?一般ユーザーが管理者用エンドポイントを呼び出せないか? |
| A02 | 暗号化の失敗(Cryptographic Failures) | 機密データの平文 HTTP 送信、弱いパスワードハッシュ、レスポンス内のシークレット |
| A03 | インジェクション(Injection) | SQL、コマンド、NoSQL インジェクション。クロスサイトスクリプティングもここに含まれる |
| A04 | 安全でない設計(Insecure Design) | クーポンの無制限な再利用など、ビジネスロジック上の制限の欠如 |
| A05 | セキュリティの設定ミス(Security Misconfiguration) | デフォルトの認証情報、詳細すぎるスタックトレース、公開状態のクラウドストレージ、ヘッダーの欠如 |
| A06 | 脆弱で古いコンポーネント(Vulnerable and Outdated Components) | 既知の CVE を持つ依存関係 |
| A07 | 識別と認証の失敗(Identification and Authentication Failures) | 脆弱なセッション管理、ブルートフォース対策の欠如、壊れたパスワードリセット |
| A08 | ソフトウェアとデータの整合性の不具合(Software and Data Integrity Failures) | 署名されていないアップデート、安全でないデシリアライズ、信頼できない CI/CD 入力 |
| A09 | セキュリティログとモニタリングの失敗(Security Logging and Monitoring Failures) | ログイン失敗やアクセス拒否がログ記録・アラートされない |
| A10 | サーバーサイドリクエストフォージェリ(SSRF) | サーバーに内部アドレスを取得させてしまう URL パラメーター |
OWASP はこのリストを数年ごとに更新します。順位やグループ分けは版によって変わるため、レポートでカテゴリー番号を引用する前に owasp.org で最新版を確認してください。
テスターの活用方法
- 範囲の決定。 各カテゴリーを自分たちのアプリケーションに対する具体的なチェックに落とし込み、どれを自動化し、どれを手動でカバーし、どれを専門家によるペネトレーションテストに任せるかを決めます。
- 適した部分の自動化。 アクセス制御のチェック(2 人のユーザーで ID を入れ替え、
403または404を期待する)や依存関係のスキャンは CI でうまく回せます。OWASP ZAP のような動的スキャナーはステージング環境に対して実行できます。
よくある間違い
リストをチェックリストとして扱い、すべてにチェックが付けば「安全」とみなしてしまうこと。また、API や LLM アプリケーション向けの OWASP の別の Top 10 リストと混同することです。これらには独自のカテゴリーがあります。
テストは、自分が所有するシステム、または書面で許可を得たシステムに対してのみ実施してください。