• ベストアンサー

PHP4.4.0以下に起こるセキュリティホールについて

お世話になります。 現在某レンタルサーバでPHPを使用しています。 先月末、PHPに最悪のセキュリティホールが発見されました。 http://itpro.nikkeibp.co.jp/article/NEWS/20051102/223939/ この件に関して、早急にバージョンを上げて欲しいということで レンタルサーバ業者に連絡を入れたのですが、 1.PHP4.4.1は仕様の変更がかなりあっているので、共有サーバという性質上、バージョンアップは難しい 2.セキュリティホールではあるが、サーバ自体に影響のある類のものでは無い 3.PHPコードのサニタイジングで対応可能 だという理由で今のところバージョンアップの予定は無いという回答でした。 そこで、とにかくも「3.PHPコードのサニタイジングで対応可能。」だという回答は貰えましたので、 早速今回のセキュリティホールに対応しようと行動を開始したのですが、 どこから手をつけて良いのか判らない状態です。 私なりに今回のセキュリティホールがどんなものか、理解しようと思い、以下のサイトを参照してみたのですが http://www.hardened-php.net/index.76.html ようはinputタグのtypeがfileであり、かつname="GLOBALS"の時、 PHPの大域変数(global変数という呼び方が一般的ですが、紛らわしいのでここでは大域変数と呼びます)が アップロードしたファイル名で上書きされる、といったところでしょうか?(自信なし) だとするならばサニタイジングするべきは、局所変数でない箇所すべて、ということになりますが この認識で合っているのでしょうか? 前置きが長くなりましたが、今回教えて欲しい点は サニタイジングすべきPHPの変数は、 ・大域変数全てなのか? ・スーパーグローバル変数全てなのか? ・$GLOBALS全てなのか? です。

質問者が選んだベストアンサー

  • ベストアンサー
  • satoh
  • ベストアンサー率77% (17/22)
回答No.2

> 今回私が検討をつけたサニタイジングすべき箇所 > > ・大域変数 > ・スーパーグローバル変数 > ・$GLOBALS > > は全てregister_globals = off > である場合に問題になるということが判りました。 あれ、違いませんか? 今回の脆弱性のうち、 PHP File-Upload $GLOBALS Overwrite Vulnerability の方は、参考URL先にありますが、register_glboals=offなら回避できるようですよ。 ※参考URL先の4.4.1の項目ですが、4.3.10でも回避策は同じだと思います。 ただ根本的な解決ではありませんので、是非バージョンアップをもう一度お願いしたらいかがでしょうか。サーバのPHPが4.3.10のようですが、4.3.11に上げれば、今回の脆弱性に対するパッチも出ていますので。 4.3.11のパッチはこちらです。 http://wiki.ohgaki.net/index.php?PHP%2Fpatch%2F%24GLOBAL%CA%DD%B8%EE%A5%D1%A5%C3%A5%C1 でも、サーバはどなたかの自前構築なのでしょうか?メジャーなディストリビューションなら、パッチがちゃんと出ると思うのですけど。 なお、 > しかし結局、今回"最悪"のセキュリティホールということで発表された > このセキュリティホールを、PHP4.4.0以下を利用している状態でどう > 対応すれば良いのか、ということは不明なままです。 と、心配されていますけど、わたしはPHP歴2年程度ですが、このくらいの脆弱性は「あ、またか」程度です(笑)。register_globals=offで済む話ですし。 と、言いながら、自分の管理のところはしっかり4.4.1に上げましたけど。上げられるなら上げるのがやっぱり一番です。

参考URL:
http://wiki.ohgaki.net/index.php?PHP%2F%C0%C8%BC%E5%C0%AD%A5%EA%A5%B9%A5%C8
haru1234
質問者

お礼

失礼しました。単純な、しかし一番重要な箇所でタイプミスしてしまいました^^; 仰るようにregister_globals=onの場合に問題になる、ですね。 ちなみにサーバはレンタルサーバを使用しています。 さて、今回の件ですが仰るようにregister_globals = offであればどうも問題無いようですね。 アドバイスありがとうございました。

その他の回答 (1)

回答No.1

ここも参考になるようです。

参考URL:
http://www.eth.jp/hiki.cgi?PHP-Changes-4.4.1
haru1234
質問者

お礼

返答ありがとうございます。 さて、返答頂きましたサイトを確認しましたところ、 今回私が検討をつけたサニタイジングすべき箇所 ・大域変数 ・スーパーグローバル変数 ・$GLOBALS は全てregister_globals = off である場合に問題になるということが判りました。 どうも、環境と使用している関数によって影響範囲が大きく変わるようなので、環境と 使用している関数を書きます。 apache1.3.3 PHP4.3.10 regitster_globals = off safe_mode = off import_request_variables() 使用箇所無し parse_str() 仕様箇所無し adslashes()仕様箇所無し foreach 展開や extract 展開による実質的なregister_globals = on無し という環境です。 また、PHPを利用しているscriptでは最大規模の大御所であるxoopsが、今回のセキュリティホールに ついてコメントを出しています。 http://xoopscube.jp/modules/cubeNews/index.php?action=detail&id=18 やはりサニタイジングすることによって、PHP4.4.0以下のバージョンでも影響を受けないと いうことが判りました。 しかし結局、今回"最悪"のセキュリティホールということで発表された このセキュリティホールを、PHP4.4.0以下を利用している状態でどう 対応すれば良いのか、ということは不明なままです。 引き続き、識者の方のご教示を仰ぎたいと思います。 よろしくお願いします。

関連するQ&A

専門家に質問してみよう