この文書は2016年以降更新されていません
Web アプリケーションのセキュリティテストに関するチートシート
はじめに
このチートシートでは、Web アプリケーションのブラックボックスセキュリティテスト時に実行する必要があるタスクのチェックリストを提供します。
目的
このチェックリストは、熟練した侵入テスト担当者が覚書として使用できるように作成したものであり、「OWASP Testing Guide」との併用を想定しています。このチェックリストは、「Testing Guide v4」の内容の進行状況に合わせて更新されます。
このガイドは、XML ドキュメントとして提供し、さらにPDF、MediaWiki マークアップ、HTML などの形式に変換するスクリプトも提供する予定です。
そのため、セキュリティツール内でこのガイドを使用できるだけでなく、印刷に適した形式でも利用可能になります。
フィードバックや提案はどのようなものでも歓迎します。変更すべきと思われる具体的な箇所があったら、ログインして提案してください。
チェックリスト
情報収集
表示されたサイトのレビュー
- サイトを手動で探索する
- スパイダリング / クロールによって、見逃したコンテンツや隠されたコンテンツを探す
- robots.txt、sitemap.xml、.DS_Store などのような Web サーバーメタファイルをチェックして、コンテンツの露出など情報漏えいにつながる問題がないか調べる
- 主な検索エンジンで一般公開されたサイトのキャッシュをチェックする
- ユーザーエージェントに基づくコンテンツの違いをチェックする (モバイルサイトにアクセスした場合や、検索エンジンのクローラーとしてアクセスした場合など)
- Web ページのコメントとメタデータをチェックして情報漏えいがないか調べる
開発のレビュー
- Web アプリケーションフレームワークをチェックする
- Web アプリケーションのフィンガープリントを調べる
- 使用されているテクノロジを特定する
- ユーザーロールを特定する
- アプリケーションのエントリポイントを特定する
- クライアント側コードを特定する
- 複数のバージョン / チャネル (Web、モバイル Web、モバイルアプリなど) を特定する
ホスティングとプラットフォームのレビュー
- Web サービスを特定する
- 一緒にホスティングされている関連アプリケーションを特定する
- すべてのホスト名とポートを特定する
- 自前でホスティングしているものでないコンテンツを特定する
構成管理
- 一般によく使用されるようなアプリケーション URL や管理 URL をチェックする
- 古いファイル、バックアップファイル、および参照されていないファイルが残っていないかチェックする
- サポートしている HTTP メソッドと、クロスサイトトレース (XST) の問題をチェックする
- ファイル拡張子の処理をテストする
- RIA クロスドメインポリシーをテストする
- セキュリティ関連の HTTP ヘッダー (CSP、X-Frame-Options、HSTS など) をテストする
- Flash、Silverlight、ロボットなどに関するポリシーをテストする
- クライアント側コードに機密データ (API 鍵や認証情報など) が含まれていないかチェックする
セキュアな送信
プロトコルと暗号化
- SSL のバージョン、アルゴリズム、鍵の長さをチェックする
- デジタル証明書の有効性 (期間、署名、および CN) についてチェックする
- 認証情報が常に HTTPS によって送信されることをチェックする
- ログインフォームが HTTPS によって送信されることをチェックする
- セッショントークンが常に HTTPS によって送信されることをチェックする
- HTTP Strict Transport Security (HSTS) が使用されているかどうかチェックする
- リクエストを偽造できるかどうかテストする
- Web メッセージング (HTML5) についてテストする
- CORS 実装 (HTML5) についてチェックする
Web サービスと REST
認証
アプリケーションのパスワード機能
- パスワード品質規則をテストする
- 自動ログイン (Remember Me) 機能をテストする
- パスワードのリセット、回復、またはこの両方をテストする
- パスワード変更プロセスをテストする
- CAPTCHA 機能をテストする
- 多要素認証をテストする
- ログアウト機能が存在するかどうかテストする
- 既定のログインについてテストする
- アカウントのロックアウトやパスワード変更が正常に処理された際に行われるチャネル外通知についてテストする
- 複数のアプリケーション間で共有する認証方式 / SSO や代替チャネルでの認証における一貫性についてテストする
- 脆弱なセキュリティの質問 / 回答についてテストする
その他の認証機能
- ユーザーの列挙についてテストする
- 認証回避についてテストする
- ブルートフォースからの保護についてテストする
- 暗号化通信路を使用した認証情報の通信についてテストする
- HTTP コンテンツのキャッシュ管理 (Pragma、Expires、Max-age など) についてテストする
- ユーザーがアクセス可能な認証履歴についてテストする
セッション管理
- アプリケーションでのセッション管理方法を確認する (Cookie にトークンを持たせる、URL にトークンを含めるなど)
- セッショントークンの Cookie フラグ (httpOnly および secure) をチェックする
- セッション Cookie のスコープ (path および domain) をチェックする
- セッション Cookie の有効期間 (expires および max-age) をチェックする
- 最大有効期間後のセッションの終了をチェックする
- 相対タイムアウト後のセッションの終了をチェックする
- ログアウト後のセッションの終了をチェックする
- ユーザーが複数のセッションを同時に持てるかどうかテストして確認する
- セッション Cookie のランダム性をテストする
- ログオン時、ロールの変更時、およびログアウト時に新たなセッショントークンが発行されることを確認する
- 共有セッション管理を使用するアプリケーション間での一貫性のあるセッション管理についてテストする
- セッションパズリングについてテストする
- CSRF およびクリックジャッキングについてテストする
認可
- パストラバーサルについてテストする
- アクセス制御の問題 (特権昇格) についてテストする
- 水平的なアクセス制御 (同じ特権レベルの 2 人のユーザー間) の問題についてテストする
- 認可の欠如についてテストする
- セキュアでない直接的なオブジェクト参照についてテストする
暗号化
- 暗号化されるべきデータが暗号化されないままになっていないかどうかチェックする
- コンテキストに応じたアルゴリズムの使用が不適切でないかチェックする
- 脆弱なアルゴリズムが使用されていないかどうかチェックする
- salt が適切に使用されているかどうかチェックする
- 乱数生成関数が適切な品質かどうかチェックする
データの検証
インジェクション
- HTML インジェクションについてテストする
- SQL インジェクションについてテストする
- LDAP インジェクションについてテストする
- ORM インジェクションについてテストする
- XML インジェクションについてテストする
- XXE インジェクションについてテストする
- SSI インジェクションについてテストする
- XPath インジェクションについてテストする
- XQuery インジェクションについてテストする
- IMAP/SMTP インジェクションについてテストする
- コードインジェクションについてテストする
- 式言語インジェクションについてテストする
- コマンドインジェクションについてテストする
- NoSQL インジェクションについてテストする
その他
- 反射型クロスサイトスクリプティングについてテストする
- 格納型クロスサイトスクリプティングについてテストする
- DOM ベースのクロスサイトスクリプティングについてテストする
- クロスサイトフラッシングについてテストする
- オーバーフロー (スタック、ヒープ、および整数) についてテストする
- 書式設定文字列についてテストする
- 培養された脆弱性についてテストする
- HTTP の分割 / スマグリングについてテストする
- HTTP Verb Tamperingについてテストする (GET、POST以外のメソッドについてテストする)
- オープンリダイレクトについてテストする
- ローカルファイルインクルードについてテストする
- リモートファイルインクルードについてテストする
- クライアント側とサーバー側の検証規則を比較する
- HTTP パラメーターの汚染についてテストする
- 自動バインディングについてテストする
- 一括代入についてテストする
- NULL / 無効セッション Cookie についてテストする
- データの完全性についてテストする
- ワークフローの迂回についてテストする
- アプリケーションの悪用防止機能をテストする
- 限度を超えた機能の使用が不可能であることをテストする
- プロセスのタイミングについてテストする
- Web ストレージ SQL インジェクション (HTML5) についてテストする
- オフライン Web アプリケーションをチェックする
DoS (サービス妨害)
- 自動化対策についてテストする
- アカウントのロックアウトについてテストする
- HTTP プロトコル DoS についてテストする
- SQL ワイルドカード DoS についてテストする
危険性の高い個別機能
ファイルのアップロード
- 許容されるファイルの種類のホワイトリストが作成されており、ホワイトリストに含まれていない種類のファイルは拒否されることをテストする
- ファイルサイズの制限、アップロードの頻度、および合計ファイル数が定義されており、これらの制限が強制されることをテストする
- ファイルの内容が、定義されているファイルの種類と一致していることをテストする
- すべてのファイルアップロードにウイルス対策スキャン機能が動作することをテストする
- 有害なファイルのアップロードをテストする
- 安全でないファイル名がサニタイズされることをテストする
- アップロードされたファイルに Web ルート内で直接アクセスできないことをテストする
- アップロードされたファイルが同じホスト名 / ポートで扱われないことをテストする
- ファイルや他のメディアが認証および認可方式に統合されていることをテストする
支払い
- Web サーバーおよび Web アプリケーションの既知の脆弱性と設定の問題についてテストする
- 既定の、または推測可能なパスワードについてテストする
- インジェクション脆弱性についてテストする
- バッファーオーバーフローについてテストする
- 暗号化による保護が不十分なデータ保存機能についてテストする
- トランスポート層の不十分な保護についてテストする
- 不適切なエラー処理についてテストする
- CVSS v2 のスコアが 4.0 より高いすべての脆弱性についてテストする
- 認証と認可の問題についてテストする
- CSRF についてテストする
エラー処理
付録
その他の形式
Authors and contributors
Simon Bennetts
Rory McCune
Colin Watson
Simone Onofri
Amro AlOlaqi
All above are authors of the Testing Guide v3
Ryan Dewhurst
Frank Catucci
Vin Miller
関連資料
- OWASP Testing Guide
- Mozilla Web Security Verification
Other Cheatsheets
OWASP Cheat Sheets Project Homepage
Developer Cheat Sheets (Builder)
- Authentication Cheat Sheet (Spanish)
- Choosing and Using Security Questions Cheat Sheet
- Clickjacking Defense Cheat Sheet
- C-Based Toolchain Hardening Cheat Sheet
- Cross-Site Request Forgery (CSRF) Prevention Cheat Sheet
- Cryptographic Storage Cheat Sheet
- DOM based XSS Prevention Cheat Sheet
- Forgot Password Cheat Sheet
- HTML5 Security Cheat Sheet
- Input Validation Cheat Sheet
- JAAS Cheat Sheet
- Logging Cheat Sheet
- .NET Security Cheat Sheet
- OWASP Top Ten Cheat Sheet
- Password Storage Cheat Sheet
- Pinning Cheat Sheet
- Query Parameterization Cheat Sheet
- Ruby on Rails Cheatsheet
- REST Security Cheat Sheet
- Session Management Cheat Sheet
- SAML Security Cheat Sheet
- SQL Injection Prevention Cheat Sheet
- Transaction Authorization Cheat Sheet
- Transport Layer Protection Cheat Sheet
- Unvalidated Redirects and Forwards Cheat Sheet
- User Privacy Protection Cheat Sheet
- Web Service Security Cheat Sheet
- XSS (Cross Site Scripting) Prevention Cheat Sheet
Assessment Cheat Sheets (Breaker)
- Attack Surface Analysis Cheat Sheet
- XSS Filter Evasion Cheat Sheet
- REST Assessment Cheat Sheet
- Web Application Security Testing Cheat Sheet
Mobile Cheat Sheets
OpSec Cheat Sheets (Defender)
Draft Cheat Sheets
- Access Control Cheat Sheet
- Application Security Architecture Cheat Sheet
- Business Logic Security Cheat Sheet
- PHP Security Cheat Sheet
- Secure Coding Cheat Sheet
- Secure SDLC Cheat Sheet
- Threat Modeling Cheat Sheet
- Grails Secure Code Review Cheat Sheet
- IOS Application Security Testing Cheat Sheet
- Key Management Cheat Sheet
- Insecure Direct Object Reference Prevention Cheat Sheet
- Content Security Policy Cheat Sheet