Web教材一覧情報倫理・セキュリティ

セッションハイジャック/CSRF/セッション・フィクセーション

キーワード

セッションハイジャック、CSRF, リクエスト強要攻撃、セッション・フィクセーション、セッションID、セッション変数


事前知識

セッションハイジャック(セッション乗っ取り)

利用者が正規のWebサイトと更新しているとき、何らかの手段でそこで使われているセッションIDを得て、その利用者になりすましてWebサイトに割り込む手口です。
 例えば、利用者が銀行サイトに接続し、最初のページでパスワードや口座番号を入力し、その情報がクッキーなどに保管され、次のWebページで送金などの処理をしようとしているときにセッションIDを盗られて割り込まれると、攻撃者はパスワードや口座番号をを知らなくても、送金先や金額を変えられてしまいます。

これを防ぐには、利用者が銀行サイトの接続時間を短くすること、必要な処理が終わったら直ちにログアウトすることが必要です。
 システム側としては、Web画面でログアウトを促す表示をすること、一定時間で自動的にログアウトする仕組みにすること、WebサーバのセッションIDを確実に無効にして、その後同じセッションIDによるアクセスは受け付けないこと、Webブラウザ側のセッションIDを消去することが必要です。

これ以外に、クッキーやセッションIDを暗号にする、セッションIDをワンタイム化する、セッションにユーザー固有の情報を保存し検証する、最初の認証後にセッションIDを変更するなどの対策も必要です。

CSRF

CSRF(Cross Site Request Forgeries)(forgeryは偽造の意味)とは、利用者が感染したパソコンから正規のサイトを閲覧したとき、利用者が意図していない悪意のメッセージを含む情報を正規サイトへ強制的に送信する手口です。会員資格やクッキー情報などを悪用しているので、正規サイトで多様な操作ができてしまいます。

利用者が攻撃者サイトを閲覧するなどによりCSRFに感染すると、CSRFはセッション変数に攻撃者による悪意の情報を付け加えます。
 CSRFに感染した利用者パソコンから正規サイトにアクセスすると、利用者が意図していない情報を含むセッション変数が正規サイトに送られます。正規サイトは、正規の利用者からの情報だと認識しているので、悪意のある指示を実行してしまいます。
・正規サイトが銀行サイトや販売サイトだと、不正な取引をされてしまう。
・SNSなどで閲覧限定している自分のページを不特定多数に公開されてしまう。
・投稿サイトに第三者への脅迫、犯罪予告などを投稿されてしまう。
 (これにより、閲覧者が誤認逮捕され、社会問題になったことがあります)

セッション・フィクセーション

セッション・フィクセーション(Session Fixation)とは、攻撃者が生成したセッションIDを利用者に強制的に使わせることにより、ユーザーのセッション状態を乗っ取る手口です。

このようにして、攻撃者は利用者に成り代わって正規サイトを利用でき、利用者の個人情報の閲覧・変更、投稿などができてしまいます。
 CSRFは、利用者を介して正規サイトを攻撃するのに対して、セッション・フィクセーションは攻撃者が自分で攻撃します。そのため、高度(深刻)な被害を与えることが可能になります。また、双方とも利用者がログオンしている間に攻撃することが多いのですが、特にセッション・フィクセーション攻撃はログオン中に限定されることが多いのです。

攻撃への対策

●利用者側の対策
・こまめにクッキーを調べて、不審なクッキーを削除する。
・ログインしてからログオフするまでの時間を短縮する。
・ログオン中に、他のサイトの閲覧などをしない。
などが必要ですが、現実的には面倒だし、抜本的な対策にはなりません。「注意はするがお手上げ」な状態です。

●正規サイト側の対策
クロスサイトスクリプティングは、攻撃スクリプトがブラウザ上で動くのに対して、CSRFやセッション・フィクセーションではサーバ側で動作するのが特徴です。そのため、利用者側よりも正規サイト側の対策が重要になります。
・クッキーの発行や消去の工夫をする。
・セッションID以外に他者が推定困難な照合情報を加える。
・セッション変数の値の暗号化、ハッシュ値の併用をする。


本シリーズの目次へ