[PHP-users 4903] [SECURITY]:PHP4 session spoofing exploit

R OKADA php-users@php.gr.jp
Wed, 23 Jan 2002 02:58:02 +0900


岡田@テューンビズ(PHPカンファレンスセキュリティ担当)です。

誰か流すかなーと思ってみていたんですが、どなたも流されないようなので
情報を流しておきます。後述するBUGTRAQからの記事よりの抜粋情報を日本語
でお書きしますね。

少なくとも、PHPの以下のバージョンにおいては、サーバのセッションIDが
ハイジャックされる危険があります。

PHP 4.0.4
PHP 4.0.5
PHP 4.0.6
PHP 4.1
PHP 4.1.1

セッション情報は /tmp ディレクトリに格納されます。これらのファイルは、
セッションIDを含む名前を付与されています。サーバのローカルユーザ(アタ
ッカ)はそれらの内容を /tmp で見て、セッションIDを使うことにより、現在
のWEBサイトユーザのセッションをハイジャックするかもしれません。

すべてのセッションは以下のような一時ファイルに格納されます。

   sess_g35g5g54gg45wg85

この、"g35g5g54gg45wg85" の部分が session-ID です。これらのファイルを
見ることにより、誰でもこれらのセッションを悪用して簡単にスプーフィング
(なりすまし)をすることがきでます。PHPはモジュールとして動かされるこ
とが普通ですから、当然、apacheのユーザ権限を継承した範囲で読み書きでき
るファイルを使用します。

対処法はいろいろと議論されているところですが、簡単なものとしては、
以下の方法が手っ取り早いようです。

1.php.ini で、session.save_path (デフォルト /tmp)を、例えば、 
     /tmp/sessionids に替える。

2.そのディレクトリを、apacheの動作ユーザのみがディレクトリ参照
     ならびに書き込みのみディレクトリにする。

	# chown www-data /tmp/sessionids
	# chmod 700 /tmp/sessionids 
	(or # chmod 300 /tmp/sessionids )

3.根本的なことですが、ローカルユーザexploitですから、ローカル
     ユーザをですね、...(以降省略)

情報源:
http://www.securityfocus.com/bid/3873
http://www.zend.com/manual/ref.session.php


p.s.
PHPセキュリティ環境構築、監査、コンサルティング、ZENDプロダクトに
ついてのご相談はわたしまで。:-)


________________________________________________________

         R I O T A R O  O K A D A

         riotaro@tunebiz.net
                @linux.or.jp

         http://tunebiz.net/
         http://slashdot.jp/~okdt/journal/
         http://allabout.co.jp/computer/linux/
________________________________________________________