| « エンティティ化された文字による任意コード実行 | PHP開発者とユーザが知っておくべきシェルコマンドエスケープの内部処理 » |
現行版のPHPに任意メモリ参照バグ - 攻撃コード付き
随分前から共有型Webホスティングサービスでは安全性を確保できないので、安全性を重視するサイト(ECなど)は最低限でも仮想ホスト型の共有サービスを利用すべきである、と言っています。
今回のエントリはPHPをApacheモジュールで共有型ホスティングサービスを利用しているユーザに影響します。SSLを利用している場合は秘密鍵を盗まれます。このバグはPHP 5.2.8でも修正されていません。当然ですがPHP 4.4.9でも修正されていません。
フォローアップ
Milw0rmのアドバイザリ
http://www.milw0rm.com/exploits/7646
には、そのまま使える、任意のアドレスのデータを参照するコードまで付いています。秘密鍵を盗むことは簡単です。
誤解してはならない事ですが、これはPHPに限った問題ではありません。PHPでは度々このようなバグがセキュリティ問題として報告されています。これは、PHPがApacheのモジュールとして実行され、複数のユーザが共有して利用している環境が多いからです。Webサーバモジュールとして動作している言語に共通の問題です。mod_perl、mod_python、mod_rubyを利用している場合でもメモリ参照可能な仕様やバグがあります。
PHPの場合、共有環境でなくても、リモートスクリプト実行が可能な場合は、この攻撃でメモリ上に展開されている重要な情報、辞書攻撃によるパスワードクラックを防止する為のsalt、などが漏洩する可能性があります。
参考:
CVE-2008-5498
https://www.ircert.cc
4 コメント
コメント from: sharl [訪問者]
バンドルされているGDライブラリを使っている場合のみ、再現しますね。適切に対処されている外部GDライブラリならば、問題なしです。
CVSにパッチはありました。
CVSにパッチはありました。
2009/01/05 @ 15:55
実はバンドルされているライブラリは放置されている事が多いです。gdだけでなく、libmysqlもかなり長い間放置されていました。
GD自体のメンテナンス状態もかなり怪しいのですが、ディストリビューションは独自のセキュリティパッチでGDに当てている事がほとんどです。なので
./configure --with-gd=/usr --with-jpeg-dir=/usr --with-zlib-dir=/usr
といった感じでシステムのGDライブラリを使っていれば大丈夫な事も多いです。
GD自体のメンテナンス状態もかなり怪しいのですが、ディストリビューションは独自のセキュリティパッチでGDに当てている事がほとんどです。なので
./configure --with-gd=/usr --with-jpeg-dir=/usr --with-zlib-dir=/usr
といった感じでシステムのGDライブラリを使っていれば大丈夫な事も多いです。
2009/01/05 @ 21:39
>suhosinを使ってもダメですか?
確かめていませんが、この問題は本来GDの問題なのでshuhosinでは対応できないと思います。
確かめていませんが、この問題は本来GDの問題なのでshuhosinでは対応できないと思います。
2009/01/07 @ 08:29