My Photo

« セッション管理の不備 その1 | Main | セッション管理の不備 その3 »

November 07, 2013

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

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


推測可能なセッションIDによる脆弱性

発生箇所 セッションIDを生成している箇所
影響を受けるページ セッション管理を利用しているすべてのページ。特に秘密情報の表示や重要な処理をするページは影響が大きい。
影響の種類 成りすまし

攻撃手法
  1. 対象アプリケーションからセッションIDを集める。
  2. セッションIDの規則性の仮説を立てる。
  3. 推測したセッションIDを対象アプリケーションで試す。

ありがちなセッションID生成規則では、下記の値を単独または組み合わせて元データとする。さらにその元データをそのまま、あるいはエンコードしたりハッシュ値を計算してセッションIDとする。
このうちユーザIDや日時は外部から推測可能な元データなので脆弱性の原因となる。

  • ユーザID
  • メールアドレス
  • リモートIPアドレス
  • 日時(UNIXタイムの数値または年月日時分秒の文字列)
  • 乱数

推測可能なセッションIDが生成される技術的要因は前記に述べたが、さらに上流から考えるとアプリケーション側でセッション管理機構を自作していることが脆弱性の原因を作ったと言える。通常のWEBアプリケーション開発でセッションIDの生成を自作する意味はない。
理由は以下である。

  • 主要なWEBアプリケーション開発ツールはセッション管理機構を備えている。
  • 安全なセッションID生成プログラムを開発することは技術的難易度が高い。

もし主要なWebアプリケーション開発ツールのセッションID生成部分に脆弱性があれば、セキュリティ研究者が指摘して改善されているはずである。

対策

現時的な対策は、Webアプリケーション開発ツールが備えるセッション管理機構を利用することである。
なんらかの事情でセッション管理機構を自作する場合は、暗号論的擬似乱数生成器を元に十分な桁数のセッションIDを生成する。

PHPではデフォルト設定では以下の組み合わせにMD5ハッシュ関数を通す方法でセッションIDを生成している。

  • リモートIPアドレス
  • 現在時刻
  • 乱数(暗号論的擬似乱数生成系ではない)

これは前に述べたありがちなセッションIDの生成方法に該当する。ロジックの複雑性が高いために解読方法が判明しているわけではないが、理論的には安全性が保証されているわけではない。
php.iniの設定で安全な乱数を元にセッションIDを生成するようにできる。以下のその設定を示す。

[Session]
;; entropy_file は Windows では設定不要
session.entropy_file = /dev/urandom
session.entropy_length = 32

/dev/urandom はUnix系OSで実装されている乱数生成器で、デバイスファイルとして使用できる。

参考文献:体系的に学ぶWebアプリケーションの作り方 4.6.2 推測可能なセッションID

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

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

Amazonで詳しく見る
by G-Tools

« セッション管理の不備 その1 | Main | セッション管理の不備 その3 »

PHP」カテゴリの記事

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

Comments

Post a comment

(Not displayed with comment.)

TrackBack

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

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

« セッション管理の不備 その1 | Main | セッション管理の不備 その3 »

May 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 31      
無料ブログはココログ

日本blog村

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

好きな音楽家

メモ

XI-Prof