FLATzブログ

Ruby On Rails Security Guideの訳 : 2.Sessions 2.6

このエントリをdel.icio.usに追加このエントリをはてなブックマークに追加 |2009年09月18日(金)13:54|kimura

こんにちは。木村です。


今回はRuby On Rails Security Guideの訳 : 2.Sessions 2.4 – 2.5の続きです。随分間が空いてしまってすみません・・・。


今回は2.6 Replay Attacks for CookieStore Sessionsです。


原文の単語と全く違う言葉に置きかえている場合が多々あります。原文ページと併せて、ご覧下さい。気になる箇所や間違っている箇所があれば、どうかご指摘下さい。


では、以下訳です。


2.6 CookieStoreセッションへのリプレイアタック

- CookieStoreを使用する上で知っておかなければならない攻撃の1つの種類にリプレイアッタクがあります。


リプレイアタックは以下のように動作します。

  • ユーザは合計額がセッションに保存されたクレジットを受けとる。(これは悪い方法ですが、デモンストレーションの目的で例にしています)
  • ユーザが何か買う。
  • 低くなったクレジットをセッションに保存する。
  • ユーザのダークサイドが最初の段階のクッキーを取り出させ(ユーザがコピーしていたもの)、ブラウザの現在のクッキーと置き換えさせる。
  • ユーザにクレジットが戻ってくる。

セッションにnonce値(ランダムな数字)を含めることで、リプレイアッタクを解決できます。nonce値は1回だけ有効で、サーバは全ての有効なnonce値を把握しなければなりません。ましてや、もし、いくつもアプリケーションサーバ(mongrels ※1)があるならば、なおさら複雑になります。nonce値をデータベースのテーブルに保存することは、CookieStoreの目的(データベースへのアクセスを避けること)を完全に無意味なものにするでしょう。

リプレイアタックに対抗する一番よい解決方法は、この種類のデータをセッションに保存せず、データベースに保存することです。ここで挙げた例では、クレジットをデータベースに保存し、ログインユーザIDをセッションに保存します。


※1 Mongrelという名前のWebサーバアプリケーションです。


次回は2.7 Session Fixationです。

この記事に関するお問い合わせはこちら


関連記事


Trackback URL


このページの先頭へ