My Photo

« たぶん今年最後の釣り | Main | SQLのIN句の色々な例 »

November 17, 2013

セッション管理の不備 その4

関連記事:
セッション管理の不備 その1
セッション管理の不備 その2
セッション管理の不備 その3


セッションIDの固定化

発生箇所 セッションIDを生成している箇所
影響を受けるページ セッション管理を利用しているすべてのページ。特に秘密情報の表示や重要な処理をするページは影響が大きい。
影響の種類 成りすまし
利用者の関与の度合い 大(罠サイトの閲覧、本番サイトでの認証

攻撃手法

セッションハイジャックを引き起こす攻撃手法の中にセッションIDを外部から強制する方法がある。これをセッションIDの固定化攻撃(Session Fixation Atack)と呼ぶ。
手順は以下。

  1. セッションIDを入手する。
  2. 被害者に対して1で入手したセッションIDを強制する。
  3. 被害者は標的アプリケーションにログインする。
  4. 攻撃者は被害者に強制したセッションIDを使って標的アプリケーションにアクセスする。

セッションIDの固定化が起きやすい条件として、セッションIDをクッキーにもURLにも保持できることがある。

セッションアダプション

PHP、ASP.NETでは未知のセッションIDを受け入れるという特性がある。これはセッションアダプション(Session Adoption)と呼ばれる。Tomcatではセッションアダプションがないので勝手に作成したセッションIDは無視される。
セッションアダプションがないミドルウェアで動作するアプリケーションに対してセッション固定化攻撃を行う場合、攻撃者はまずターゲットアプリケーションを閲覧して有効なセッションIDを取得し、このセッションIDを被害者に強制するように罠サイトを設定する。
つまり、ミドルウェアにセッションアダプションがあるとセッション固定化攻撃がセッションアダプションがない場合に比べてより少ない手順で可能となる。

クッキーのみにセッションIDを保存するサイトのセッションIDの固定化

セッションIDをURLに保持できるアプリケーションの方がセッションIDの固定が容易である。
しかしクッキーのみにセッションIDを保持するアプリケーションでも、ブラウザやWEBアプリケーションに脆弱性があればセッションIDを外部から設定することが可能になる。以下クッキーを第三者が設定できる脆弱性の例である。

  • クッキーモンスター問題(ブラウザの脆弱性)
  • クロスサイト・スクリプティング脆弱性
  • HTTPヘッダ・インジェクション脆弱性

対策

  • セッションIDをURL埋め込みにしない。
  • クッキーモンスター問題のあるブラウザを使わない。
  • クッキーモンスター問題の発生しやすい地域型ドメインを使わない。
  • クロスサイト・スクリプティング脆弱性をなくす。
  • HTTPヘッダ・インジェクション脆弱性をなくす。
  • その他クッキーを書き換えられる脆弱性をなくす。

上記をすべて満たすのは困難である。例えばIneternet Explorerの地域型ドメインに対するクッキーモンスター問題は修正される予定がない。
このため、セッションIDが外部から固定化されることは許容し、セッションIDの固定化攻撃が行われてもセッションハイジャックは防ぐように対策することが効果的である。
そのため、Webアプリケーション側での以下の対策が効果的である。

  • 認証後にセッションIDを変更する。

PHPではこの処理に session_regenerate_id()を利用する。

bool session_regenerate_id([bool $delete_old_session = false])

引数は変更前のセッションIDに対応するセッションを削除するかどうか指定する。

セッションIDの変更ができない場合の対策

Webアプリケーションの開発言語やミドルウェアによってはセッションIDを明示的に変更できないものがある。そのような場合はトークンを利用する方法がある。
ログイン時にトークンとして乱数文字列を生成し、クッキーとセッション変数の両方に記憶させる。書くページの認証確認時にトークンとセッション変数のトークンの値を比較し、同一である場合のみ認証されていると認識する。

ログイン前のセッションIDの固定化攻撃の対策

ログイン前にセッション変数を使っているとセッションIDの固定化攻撃に完全に対策することは困難である。ログイン前はセッション管理機構は使わずhiddenパラメータで値を引き回すことが現時的な対策になる。

参考文献:体系的に学ぶWebアプリケーションの作り方 4.6.4 セッションIDの固定化

体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践
徳丸 浩

ソフトバンククリエイティブ 2011-03-03
売り上げランキング : 4070

Amazonで詳しく見る
by G-Tools

« たぶん今年最後の釣り | Main | SQLのIN句の色々な例 »

PHP」カテゴリの記事

セキュリティ」カテゴリの記事

Comments

Post a comment

(Not displayed with comment.)

TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/26461/58592189

Listed below are links to weblogs that reference セッション管理の不備 その4:

« たぶん今年最後の釣り | Main | SQLのIN句の色々な例 »

April 2017
Sun Mon Tue Wed Thu Fri Sat
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            
無料ブログはココログ

日本blog村

  • にほんブログ村 IT技術ブログへ
  • にほんブログ村 アニメブログへ
  • にほんブログ村 サッカーブログ アルビレックス新潟へ

好きな音楽家

メモ

XI-Prof