PHPのSessionモジュールの脆弱性

(Last Updated On: )

たまたま目に止まったブログがあるので紹介します。

PHP:session_set_save_handlerリファレンスマニュアルのサンプルにパス・トラバーサル脆弱性
http://www.tokumaru.org/d/20080818.html#p01
[php]session_set_save_handlerのパストラバーサルで任意コマンドの実行が可能
http://www.tokumaru.org/d/20080819.html#p01

この危険性はStrict Sessionパッチが作られた頃にも議論されていました。このパッチを摘要するとセッションアダプション脆弱性も修正します。もし、互換性なので要件で厳格なSession管理ができない場合でもセッションIDに利用可能な文字は安全な文字のみに限定されるのでパストラバーサルなどの問題は発生しません。

話は横道にそれますが、セッションアダプションの問題については、PHP 4.4.9リリース前にPHP Security Response Teamと議論しました。リリースノートを見れば解りますが、残念ながら良い結果ではありませんでした。いくつかの脆弱性をレポートしましたが、その内の一部の脆弱性のみに対応しただけです。これについては時間が出来次第エントリを書きます。

話を戻しますが、セッションモジュールの問題は随分前(何年も前)に議論されており、開発者のスタンスとしては「ユーザ側の問題」「ファイルストレージがあるのに態々自分作って自分の足を打つようなユーザが問題」「RDBMSをストレージに使ってエスケープしないでSQLインジェクションされるのと同じ」といった結論になってしまったと記憶しています。

セッションアダプションの問題を解決すれば、パストラバーサルの問題もSQLインジェクション問題も解決するのですが…

セッションアダプション脆弱性はリスクが不当に低く評価され過ぎです。PHPを利用されている方全てにStrict Sessionパッチをお勧めします。

投稿者: yohgaki