unoh.github.com

Web Application Testing cheatsheet

Thu Aug 03 00:00:00 -0700 2006

こんにちは! やまもと@テスト番長です。

先日マサトさんに教えてもらったのですが、
こんなウェブアプリケーション用のチェックシートがあるそうです。

SECGURU:
Web Application Testing cheatsheet

なかなか面白いので、軽く日本語にしてみました。(Special thanks to: ジュンヤさん
※間違ってたらごめんなさい。 

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. 強制ブラウジングに対応しているか。
アプリケーションはユーザーの追跡リクエストをチェックしているか。


この手のチェックリストは各社の品質管理部内で作成されているはずですが、
あまり公表されない傾向にありますので結構貴重ですね。
いつの日か、ウノウのチェックリストをご紹介するようなこともあるでしょうか。。。
と思ったところで気付きました。
このcheatsheetはよく出来ていますが、僕らが使うには一つ大きな問題があります。
そう、文字化けなどに代表される日本語処理の問題です。
そこだけざっくり項目を追加してみましょう。

27. 日本語に対応しているか
  HTMLのエンコード指定
  シフトJIS拡張文字
  URLエンコード
  半角カナ
  文字数のカウント
  ・・・etc


他にも良いチェックリストをご存知の方がいらっしゃいましたら、
是非教えてくださいね!