IPA 安全なウェブサイトの作り方第7版で説明されている脆弱性を網羅しています。ウェブアプリケーションの脆弱性や脆弱性診断を学ぶ場合の第1歩としてはこれらの習得をお勧めします。
- 1.1 SQLインジェクション
- 1.2 OSコマンド・インジェクションン
- 1.3 パス名パラメータの未チェック/ディレクトリ・トラバーサル
- 1.4 セッション管理の不備
- 1.5 クロスサイト・スクリプティング
- 1.6 CSRF(クロスサイト・リクエスト・フォージェリ)
- 1.7 HTTPヘッダ・インジェクション
- 1.8 メールヘッダ・インジェクション
- 1.9 クリックジャッキング
- 1.10 バッファオーバーフロー(*1)
- 1.11 アクセス制御や認可制御の欠落
*1 バッファオーバーフロー脆弱性の直接の診断は意図しておらず、当該脆弱性を含むソフトウェアが使われているという意味です。これは安全なウェブサイトの作り方の説明とも合致しています。
安全なウェブサイトの作り方の別冊として、ウェブ健康診断仕様が公開されています。こちらは、元々地方自治情報センター(LASDEC)(地方公共団体情報システム機構(J-LIS)の前身)が地方公共団体向けのウェブサイト脆弱性診断を無償で提供する事業(2008年~2010年)を始めるにあたり、診断事業者のコンペのために脆弱性診断の仕様を策定したものがベースになっています。
Bad Todo Listはウェブ健康診断仕様の診断項目を網羅しています。
- (A) SQL インジェクション
- (B) クロスサイト・スクリプティング
- (C) CSRF(クロスサイト・リクエスト・フォージェ
- (D) OS コマンド・インジェクション
- (E) ディレクトリ・リスティング
- (F) メールヘッダ・インジェクション
- (G) パス名パラメータの未チェック/ディレクトリトラバーサル
- (H) 意図しないリダイレクト
- (I) HTTP ヘッダ・インジェクション
- (J) 認証
- (K) セッション管理の不備
- (L) 認可制御の不備
- (M) クローラへの耐性
OWASP Top 10の一つ前の版である2017年版の方が脆弱性が明確に示されているので、こちらをベースに記載しています。2021年版との対応も示しました。
Bad Todo Listは以下の項目を網羅しています。
- A1:2017 - インジェクション(A03:2021- インジェクション)
- A2:2017 - 認証の不備(A07:2021-識別と認証の失敗)
- A3:2017 - 機微な情報の露出
- A4:2017 - XML 外部エンティティ参照 (XXE)
- A5:2017 - アクセス制御の不備(A01:2021-アクセス制御の不備)
- A6:2017 - 不適切なセキュリティ設定(A05:2021-セキュリティの設定ミス)
- A7:2017 - クロスサイトスクリプティング (XSS)
- A8:2017 - 安全でないデシリアライゼーション(A08:2021-ソフトウェアとデータの整合性の不具合)
- A9:2017 - 既知の脆弱性のあるコンポーネントの使用(A06:2021-脆弱で古くなったコンポーネント)
- A10:2017 - 不十分なロギングとモニタリング(A09:2021-セキュリティログとモニタリングの失敗)
- A10:2021 - サーバーサイドリクエストフォージェリ(SSRF)
ただし、ロギングとモニタリングに関しては、ブラックボックスでの診断は難しく、ソースコード診断になるかと思います。
拙著「体系的に学ぶ 安全なWebアプリケーションの作り方 第2版」の中から以下の脆弱性を含みます。
- クロスサイト・スクリプティング(XSS)(多種)
- SQLインジェクション(多種)
- OSコマンド・インジェクション
- HTTPヘッダ・インジェクション
- メールヘッダ・インジェクション
- クロスサイト・リクエストフォージェリ(CSRF)(多種)
- セッション管理の不備(多種)
- クッキーに関する脆弱性(多種)
- アップロード機能に関する脆弱性(複数種)
- クリックジャッキング
- オープンリダイレクト
- ディレクトリ・トラバーサル
- NULLバイト攻撃(複数)
- 意図しないファイル公開
- ファイルインクルード攻撃
- evalインジェクション
- 安全でないデシリアライゼーション
- XML外部実体参照(XXE)の脆弱性
- 競合状態の脆弱性
- キャッシュからの情報漏洩
- ログイン機能の不備
- 暗号化の不備
- 自動ログインの不備
- ログインフォームの推奨事項の不備
- ログアウト機能の不備
- パスワード変更機能の不備
- パスワードリセット機能の不備
- アクセス制御・認可不備の典型例
- CORSの検証不備
- セキュリティを強化するレスポンスヘッダの不備