Webアプリケーションの脆弱性についての問題
【H27春SC午後1問1】
1.セッションIDの保護、Cookieのsecure属性
Set-Cookieヘッダにsecure属性が設定されていないと、第三者にセッションIDを盗聴されるリスクがある。 ⇒ セッションハイジャック
■secure属性
WebブラウザがHTTPS通信を行うときに限り、Cookieをサーバへ送信するための属性
設定されていない場合、HTTP通信でもCookieを送信する。HTTPSでは暗号化されるため盗聴はされないが、HTTPでは暗号化されないので盗聴のリスクがある。
2.HTTPヘッダインジェクション攻撃
サーバ側でHTTPレスポンスに不正なヘッダを出力させる攻撃
HTMLヘッダの前に改行(CRLF)を2つ入れることによって、パラメタをSet-Cookieヘッダから分離し、空白行を挿入することでHTTPレスポンスボディになるようにする。
⇒ パラメタをHTML文としてブラウザに解釈させる。
上記と同様に、クライアント側で任意のスクリプトを実行させる攻撃に、クロスサイトスクリプティングがある。
⇒ 対応策:ヘッダ出力用の関数やAPIを使用する。それができない場合は、出力文字列に改行コードがあるとエラー画面を出力する(出力文字列の改行コード以降の文字列を削除)
3.セッションフィクセーション攻撃(セッション固定化攻撃)
攻撃者が取得したセッションIDを標的とした利用者に使わせ、その利用者になりすましてセッションを乗っ取る攻撃
ログイン前とログイン後に同じセッションIDを使用していると攻撃を受ける可能性がある。
⇒ 対応策:ログイン後に新しいセッションIDを発行し、新しいセッションIDによるセッションを開始する。