ウェブアプリケーション・セキュリティチェック メモ☆

SECGURU: Web Application Testing cheatsheet の日本語訳とその他チェック項目のメモです。

ウェブアプリケーション・テスティング・チートシート

1. アプリケーション名とバージョン
2. コンポーネント名
3. 通信プロトコル SSLならばバージョンと暗号方式
4. パラメーターのチェックリスト
  
URLリクエスト
  
URLエンコーディング
  
クエリストリング
  
ヘッダー
  
クッキー
  
フォーム
  
フォーム(Hidden)
  
クライアントサイドでのヴァリデーションチェック
  
使用していない余計なパラメータの存在
  
文字列長の最大/最小値
  
連結したコマンド(Concatenate commands)
5. コンテンツおよび機能へのアクセスポリシーの設定
6. アカウントの管理
  
パスワードの保管方法
  
パスワード変更フローは安全か
  
ユーザー情報の更新フローは安全か
  
パスワード強度は十分か
  
ロックアウトの基準は設けられているか
  
ログイン試行の許容回数制限は設けられているか
7. セッション
  
トークンの保護
  
セッションの有効期限
  
アイドル時間の有効期限
  
セッションIDのフォーマットは適切か
  
URLで送信しているかBODYで送信しているか
  
セッションIDはIPと関連付けて管理しているか?
  
リファラータグの変更
8. バックエンドの認証
  
信用関係
  
暗号化
  
パスワードをHTMLに平文で書いていないか
  
パスワードを設定ファイルに書いていないか
9. XSS クロスサイトスクリプティング
  
保存されるタイプか反復するタイプか
  
404/500エラーページを表示するときに出している情報をチェックする。
  
入力値のヴァリデーションチェック
10. 設定ミス
  
Webサーバ用セキュリティスキャナ Niktoでチェック
  
セキュリティスキャナ Nessusでチェック
  
パッチの適用
  
ディレクトリが見えてしまわないか
  
ディレクトリのパーミッション設定
  
エラーメッセージ
  
デフォルトで有効なアカウント
  
認証機関の設定
  
設定ファイル・デバッグ用ファイル
  
最新の脆弱性情報をチェックする
11. 副次的なもの
  
バックアップファイル
  
デフォルトファイル
  
サービス
  
管理者のアクセス権限更新
12. アクセス制限の欠陥
13. パスの乗り換え
14. クライアント側のキャッシュ
  
ヘッダー情報のチェック
  
メタ属性のチェック
15. ファイルの権限を決める
16. SQLインジェクション
  
複製したウェブサイトからの全ての入力パラメータ偽造
  
データベースへの接続情報が見えないか
  
エラーメッセージ
  
WEBサーバやデータベースへアクセス特権を与えているか
17. OS呼び出し
  
インタープリタを使用しているか?
  
OS サービスを呼び出しているか (例: Sendmail)
  
OS呼び出しが外部からアクセスできないようになっているか
  
他のサービスやWEBサーバにアクセス特権を与えているか
18. エラーメッセージからアプリケーションのロジックなどを推察される可能性があるので、情報を漏洩していないか完全にチェックする。
19. バイナリコードを解読されても安全か(もしあるならば)
20. 重要なデータは暗号化してあるか?
21. 調査すべきもの
  
トークン
  
クッキー
  
SSID
  
シリアライズされたオブジェクト
22. アクセス元
  
通常ユーザー
  
管理ユーザー
  
その他
23. ブルートフォース攻撃を発信しているアクセスポイントを拒絶する仕組みはあるか
24. 偽造トークンによる認証パスに対応しているか
25. 多重アクセス攻撃に対応しているか
26. 強制ブラウジングに対応しているか。アプリケーションはユーザーの追跡リクエストをチェックしているか。

その他

元が英語だけに、これは日本語問題に対応していません。
思いつく項目を追加してみます。
27. 日本語に対応しているか
  
HTMLのエンコード指定
  
シフトJIS拡張文字
  
URLエンコード
  
半角カナ
  
文字数のカウント
28. モバイルコンテンツ
  
携帯絵文字
  
白ロム問題

順次追記します!


GalTonkatsu 2006 Allright reserved.