エラーメッセージからの情報漏えい
エラーメッセージ出力を有効にしたままウェブサイトを運用することで、エラー発生時のメッセージからファイルやデータベースなど攻撃のきっかけとなる情報を提供してしまう問題、セキュリティ上の脆弱性。
脆弱性の原理
エラーメッセージをページ上に出力する際の設定に問題がある。
そのため、エラーが発生する入力を受けた際に公開するべきではない情報を提供してしまう。
脆弱性が悪用された際の影響
直接の影響はないが、ファイルやデータベースなどの情報が漏洩してしまい、別の手段による攻撃のきっかけとなりうる。
検査方法
エラーを出力するようなリクエストを送り、発生したエラーメッセージを確認する。
不正なURLの指定、想定しない入力などを行うとよい。
重要な情報がエラーメッセージを確認できる場合、脆弱性がある。
対策方法
エラー出力時の設定が問題なので、余計な情報を表示しないように設定するとよい。
- 実行環境設定によるエラー出力に関連する項目を無効化する。
- デバッグオプションによるデバッグ出力を無効化する。
オープンリダイレクト
正規サイトのリダイレクト先を不正なものに書き換える不正なスクリプトにより、ユーザが想定しないページに飛ばされ被害を受ける脆弱性。
脆弱性の原理
正規サイトからリダイレクト可能なページを設定していないことが原因である。
正規サイトから罠ページへ飛ばされるような不正なリクエストをユーザが実行してしまった場合、攻撃者が用意した巧妙な罠ページにより情報を窃取される可能性がある。
脆弱性が悪用された際の影響
・ログイン情報などの窃取(ここから更に悪用される可能性がある)
検査方法
入力欄やクエリストリング中に格納されたリダイレクト先のURLのドメインを別ドメインのものに変更し、問題なくジャンプできる場合は脆弱性がある。
しかし、以下の2つを同時に満たす場合は、オープンリダイレクトの脆弱性とはならない。
- ウェブサイトの管理者以外の人が指定した、任意の外部のドメインに移動することを許可する仕様であること。
- ユーザがウェブサイトの管理者以外の人が指定した、任意の外部ドメインに移動することを認識していること。
この場合、ユーザ側にもリダイレクト先を確認する責任が伴い、安全かどうかをハンダする必要がある。
対策方法
根本的な対策となるのは、リダイレクト先のURLを固定化する、リダイレクト先のURLに番号を振り選択することで別ドメインの介入を許さない、などである。
どうしてもできない場合は、リダイレクト先のドメイン名のチェックを行う必要がある。