OWASP Top 10
公開日: 2025/06/03
OWASP Top 10:Webアプリ開発者が知るべきセキュリティ脅威の基礎
はじめに
セキュリティの脆弱性は、開発後ではなく開発中に防ぐのが理想です。
そのために重要な指針となるのが、OWASP(Open Worldwide Application Security Project)が提供する「OWASP Top 10」です。
本記事では、OWASP Top 10の概要と代表的な脅威について、開発者視点でわかりやすく解説します。
基本情報・概要
OWASP Top 10は、Webアプリケーションにおける最も重大なセキュリティリスク上位10件をまとめたリストで、数年ごとに更新されます。
開発者・設計者・運用者すべてが意識すべきセキュリティ標準のひとつです。
- 初版は2003年、最新版は2021年版(次回は2024-2025予定)
- 実際の脆弱性報告・調査データに基づいて選定
- 教育・設計・監査・ガイドラインに活用されている
比較・分類・特徴の表形式まとめ(OWASP Top 10 - 2021)
ランク | 脅威カテゴリ | 概要 |
---|---|---|
A01 | Broken Access Control | アクセス制御の不備 |
A02 | Cryptographic Failures | 暗号処理やデータ保護の不備 |
A03 | Injection | SQL/OSコマンド等へのインジェクション攻撃 |
A04 | Insecure Design | 脅威を想定しない設計や仕様 |
A05 | Security Misconfiguration | セキュリティ設定ミス(デフォルトパスワード等) |
A06 | Vulnerable and Outdated Components | 脆弱なライブラリや依存パッケージの利用 |
A07 | Identification and Authentication Failures | 認証やセッション管理の不備 |
A08 | Software and Data Integrity Failures | サプライチェーンや署名検証不足による改ざんリスク |
A09 | Security Logging and Monitoring Failures | ログ・モニタリング不足で検知遅延 |
A10 | Server-Side Request Forgery (SSRF) | サーバーが外部にリクエストすることによる攻撃機会 |
深掘り解説
-
A03: Injection(インジェクション):
- SQLやNoSQLにユーザー入力を直接渡すことで意図しない操作が実行される
- 対策:プリペアドステートメント、入力バリデーション、ORM使用
-
A05: Security Misconfiguration:
- 管理画面が公開されている、CORS設定が全許可、不要なポートが開いている等
- 対策:デフォルト設定の見直し、セキュリティヘッダー、不要機能の無効化
-
A07: Authentication Failures:
- パスワードが平文で保存されている、多要素認証がない、トークンの失効ができない等
- 対策:bcrypt等でのハッシュ化、セッション固定対策、MFA実装
-
A08: Software Integrity Failures:
- npm install等で悪意あるパッケージが混入する事例(例:event-stream事件)
- 対策:パッケージ署名、CI/CDでのSCA(Software Composition Analysis)
応用・発展的な使い方
- セキュリティ要件としてプロジェクト初期にTop 10を導入
- セキュリティLint(例えばESLint plugin:security)で一部検出
- CI/CDでSAST(静的解析)やSCA(依存パッケージチェック)導入
- 脅威モデリングや設計時チェックリストへの転用
よくある誤解と注意点
- 「OWASPはWebだけ」ではない:モバイルアプリ版、クラウド版もある
- Top 10すべてを100%防ぐことが目的ではない:「意識して設計・レビュー・実装する」ことが重要
- 運用後にも定期的にレビューが必要:脅威は常に進化する
まとめ
OWASP Top 10は、**Webアプリケーションのセキュリティにおける最小限の“常識”**です。
テスト・設計・レビュー・教育のあらゆる場面で活用できる実践的なガイドラインとして、まずは1つずつ理解し、日々の開発に組み込んでいくことが、安心できるプロダクトづくりの第一歩になります。