前回のPHPウオッチ公開以降,セキュリティ関連の修正が行われたPHPのリリースが相次いで行われた。この修正点について紹介するとともに,PHPのセキュリティ機能を強化するHardened PHP Projectから新たに公開された「Suhosin」,Zend Frameworkの最新情報を中心に紹介する。

PHPリリース関連情報

PHP 4.4.4,PHP 5.1.5緊急リリース:セキュリティ関連の脆弱性を修正

 PHP 4およびPHP 5において,64ビットシステムにおけるメモリー管理上のバグなど複数のセキュリティ上の問題がみつかり,PHP 4.4.4およびPHP 5.1.5が8月17日に急遽リリースされた。主な修正点を以下に示す。

1.error_log(),file_exists(),imap_open(),imap_reopen()関数においてセキュリティ関連の制約(safe_mode/open_basedir)が適用されない
2.cURLエクステンションにおいてCURLOPT_FOLLOWLOCATIONが指定可能となっており,realpathキャッシュと共に用いた場合に,セキュリティ関連の制約(safe_mode/open_basedir)が回避可能である
3.sscanf()関数の配列引数処理におけるバッファーオーバーフロー脆弱性
4.stripos()関数内で領域外の読み込みが可能
5.不正なGIFイメージによるGDエクステンションのバッファオーバーフロー脆弱性
6.64ビットシステムにおけるstr_repeat(),wordwrap()関数におけるバッファオーバーフロー脆弱性

 この他,PHP 5.1.5においては約15件,PHP 4.4.4において約6件のバグ修正が行われている。PHP 4およびPHP 5のユーザーは,早期の移行が推奨されている。

PHP 5.1.6緊急リリース:64ビット系におけるセキュリティ関連の脆弱性を修正

 しかしながら,上記のPHP 5.1.5のリリース以降に新たなセキュリティ上の問題が見つかり,PHP 5.1.5のリリースからわずか1週間後の8月24日にPHP 5.1.6が急遽リリースされた。修正点は以下の2点である。

1.64ビットシステムにおいてメモリー制限機能(memory_limit)が正しく動作しない
2.Win32環境においてphp://stdinなどを使用するとPHPがクラッシュする

 64ビットシステムのユーザーで,上記の機能を使用している場合には,早期のバージョン更新が望ましい。

セキュリティ関連の修正リリースが相次ぐ

 最近,PHP4系のPHP 4.4.3/4.4.4,PHP5系のPHP 5.1.5/5.1.6と,過去に例がない頻度でセキュリティ関連のリリースが相次いでいる。このような状況が続くと,一般ユーザーにPHPのセキュリティレベルが低いという印象を与えることにつながるかも知れない。

 しかし,筆者はこうした状況をむしろセキュリティ対策に関するリリースポリシーが改善されたことによるものと前向きにとらえている。実際,今回のリリースで修正された脆弱性は,Hardend PHP ProjectなどによるPHPの脆弱性に関するパッチが本体に取り込まれたものとなっており,発見された脆弱性が速やかに修正され,新しいバージョンとしてリリースされる傾向となっている。

 PHP自体には多くの機能が含まれており,複数の外部ライブラリの機能ともリンクしているため,完全にバグをなくすことは困難であるが,こうした修正が行われることで,PHP本体に致命的なセキュリティ・ホールを生じるリスクを最小限に留めることができると考えられる。

PHP 5.2.0リリース間近:リリース候補版が複数公開

 正式リリースが間近に迫っているPHP 5.2.0であるが,8月17日にRC2(リリース候補2版),8月31日にRC3,9月14日にRC4が公開された。RC4は,正式リリース前の最後の候補版としての位置付けであり,大きな問題がない限り,近日中にPHP 5.2.0のリリースが行われると思われる。

 RC2では約50件,RC3およびRC4ではそれぞれ約15件のバグが修正されている。

 RC4では,Win32環境のインストーラが更新され,機能強化が行われている。その主な特徴を以下に示す。

1.PECLエクステンションを含むエクステンションのインストールが行えるようになった。設定ファイルphp.iniへの追加も自動的に行われる。
2.IIS,Apache,Xitami,Sambarの各WebサーバーでPHPを使用可能とする設定をインストール時に自動的に行うことができる。
3.PHPを使用するための環境変数の設定(phpのパスをPATHに追加,PHPRC環境変数の設定)とphp.iniの中の各種パス設定を自動的に行うことができる。

 新しいインストーラに関する画面の例を図1に示す。従来,インストール後にWebサーバーの設定とphp.iniの編集を行う必要があったが,今後は,より簡単にインストールできるようになることが期待できる。ただし,新規インストールではなく,既にPHPをインストール済みでバージョン更新を行う場合には,設定が正常に行われない可能性があるため,注意が必要である。


図1●新しいインストーラに関する画面の例

 新インストーラ(PHP 5.2.0RC4用)は,以下のURLより入手可能であり,試用が可能である。

http://downloads.php.net/edink/php-5.2.0RC4-win32-installer.msi

 次に,セキュリティ機能強化版PHP「Suhosin」を解説する。