【さくらのVPS】CGIモードの重大な脆弱性に対応したらしいPHP 5.3.13にアップデートした

 iTunes Store(Japan)
この記事の所要時間: 328

Php logo

※すでに1ヶ月ぐらい前(作業ログとかyum.logによると5月10日)に対応したことですが、備忘録ということで記述します。

そう、あれははてブであるページを見たことから始まった。

facebookにPHP CGIの脆弱性を試してみたら面白い対策がされていた!! – cakephperの日記(CakePHP, MongoDB)

つまり、CGIモードで動作するPHPに脆弱性があり、コマンドライン引数がHTTP経由で渡すことができるため、”-s”オプション(Output HTML syntax highlighted source.)を渡すとソースコードが表示されてしまうらしいです。
Facebookはそこを逆手に取って、表示されたコードのURLにアクセスすると、セキュリティエンジニアの求人情報ページへ飛ぶようにしてあったようです。実にカッコイイ!(今はFacebook DEVELOPERSのOpenSourceにリダイレクトしています)

さて、そんなPHPの脆弱性ですが、JPCERTに掲載されていたので見てみると、すでに攻撃手法が公開されているようで、早急な対応が必要な気がしました。

PHP Group より php-cgi のリクエスト処理に関する脆弱性が公開されました。
PHP Group によると、Web サーバ上に PHP を CGI モードで動作させている場合、
遠隔の第三者が PHP スクリプトのソースコードを閲覧したり、Web サーバの権
限で任意のコードを実行したりする可能性があるとのことです。

本脆弱性を使用する攻撃手法が公開されています。「III. 確認方法」を参考
に、自身が管理するサーバが本脆弱性の影響を受けるか確認し、影響を受ける
場合は、PHP Group が提供する修正済みバージョンへアップデートすることを
お勧めします。

PHP Group
#61910 VU#520827 – PHP-CGI query string parameter vulnerability

https://bugs.php.net/bug.php?id=61910

というのが長い前フリで、簡単に言うとyumでPHP 5.3.13にアップデートしたので他のサーバでアップデートをすることがあれば参考にするために書いておくよということです。

手順

  1. 現在、インストールされているPHPのバージョンの確認。(すでに対策されたバージョンが入っていたら…ってことはないが)
  2. 案の定、現在インストールされているPHPのバージョンは5.3.8なので、アップデートをします。

  3. Webtatic.comをyumレポジトリに追加します。
  4. では、Webtatic.comのyumリポジトリでインストールできるPHPのバージョンは何かな?ということで調べてみると…

    え、5.3.8!?かと思いきや、remiのyumリポジトリでした。
    ということで、一旦すべてのリポジトリをdisableにし、webtaticのみをして再度コマンドを実行

    今度はちゃんと正しそうなデータが出てきました

  5. では、アップデートをしましょう
  6. ちゃんとPHP 5.3.13がインストールされてか確認します。
  7. PHP 5.3.13になってることが確認できました

以上でPHP 5.3.13のインストールは終了です。

ちなみに、最後バージョン確認で

と出力されていますが、今インストールされているeAccerarorが古いバージョンでビルドしたものなんだから、今のバージョンでビルドして再インストールしてよと言ってるわけですが、この件はまた別エントリーで。