先日マサトさんに教えてもらったのですが、
こんなウェブアプリケーション用のチェックシートがあるそうです。
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
他にも良いチェックリストをご存知の方がいらっしゃいましたら、
是非教えてくださいね!