今回は,PHPに関する最新ニュースとして,昨年末に話題となったPHPのセキュリティに関する話題を紹介し,その他の話題として,Flash Remotingを利用したリッチ・クライアントの構築に関する話題などを紹介する。

PHPの開発状況

 年末年始の休暇と重なったためか,前回のPHPウォッチ以降,新たなPHPのリリースはなかったが,PHP5に関してはPHP 5.0系の最新版にあたるPHP 5.0.4のリリースに向けてバグ修正作業が進められている。PHP 5.0.3のリリース移行,現時点で約50件のバグが修正されており,早期のリリースが予定されている。また,PHP 4.3系についてもPHP 4.3.11のリリースに向けて作業中である。一方,開発版にあたるPHP 5.1系に関してはリリースプロセスに移るのはまだ先と思われる。

セキュリティ関連のアナウンスとPHPSCの設立

 昨年末にPHPで書かれた掲示板アプリケーションphpBBを狙ったワームNeverEverSanityが猛威を振るった。関連してPHP自体にセキュリティに対するぜい弱性があるのではないかという指摘が行われており,PHP開発者からの本件に対するコメントが以下のURLに掲載された。

http://www.php.net/security-note.php

 ここでは,phpBBの問題はリモートからの入力のチェックに問題があったためであり,PHP自体の問題ではないことが述べられている。また,リモート・アクセスとローカル・アクセスに関するセキュリティに関して論じており,前者は入力のチェックを正しく行うこと,後者についてはOSレベルでセキュリティ対策を講じることが重要であることを述べている。

 また,PHPの主要な開発者により,1月31日に「The PHP Security Consortium (PHPSC)」(http://phpsec.org/)の設立が発表された。PHPSCの設立リーダはPHPのセキュリティに関する第一人者Chris Shiflett氏であり,セキュアなプログラミングを行う上でのノウハウや関連情報が提供される予定である。同日よりPHPでセキュアなプログラミングを行う上での解説書として「PHP Security Guide.」(http://phpsec.org/projects/guide/)がWeb上で公開されている。

PHPセキュリティ関連のメーリング・リスト開設

 インターネット上でのセキュリティには,完全な対策というものは存在せず,常に新しい情報を集めて早期に最善の対策を講じることが重要である。昨年末に,PHPオンライン雑誌php|architectにより,PHPのセキュリティ関連の情報源としてメーリング・リストが開設された。情報はすべて英語ではあるが,PHPおよびPHPで作成されたアプリケーションにおけるセキュリティ上の問題についての情報が掲載される予定である。本リストは,以下のURLから登録・脱退が可能である。

http://www.phparch.com/phpsec/

オーバーフロー攻撃などのぜい弱性から守るHardned PHP

図1●Hardened-PHPのWebサイト(http://www.hardened-php.net/)
 PHPの本体は十分にテストされた後にリリースされるが,バッファ・オーバーフローを引き起こして任意のコードをリモートから実行されるような新たなぜい弱性が発見されるような危険性がまったくないわけではない。また,特にサードパーティ製のエクステンションを導入した場合のように十分にテストされていない機能を用いる場合には,その危険性は増すことになる。

 PHP自体のセキュリティを向上させる試みとして,Stefan Esser氏らにより独自のセキュリティ強化策を講じたHardened-PHP(図1[拡大表示])が公開されている。本稿執筆時点(2005/1/30)での最新バージョンは0.2.6であり,PHP 5.0.3,PHP 4.3.10,PHP 4.3.9に対する差分パッチ形式で公開されている。

 このHardened-PHPのインストールは簡単で,通常のPHPにパッチをあててコンパイルするだけである。以下にPHP 5.0.3の例を示す。

$ tar xzvf php-5.0.3.tar.gz
$ cd php-5.0.3
$ zcat ../hardened-php-5.0.3-0.2.6.patch.gz | patch -p1
$ ./configure [設定オプション]
$ make
$ sudo make install

 なお,エクステンションについても再コンパイルが必要である。

 Hardened-PHPにより提供される主な機能は,以下のようなものである。

1.Zendメモリー・マネージャにおけるバッファ・オーバーフローの検出
2.リスト構造体アドレスの書換え検出
3.リモート・コード・インジェクションの防止

 Hardened-PHPにおいては,バッファ領域にランダムなキーを埋め込み,そのキーの値が変更されていないかどうかを確認することで,バッファ領域の書き換えの有無を調べている。

 Hardenend-PHPの導入により,未知のぜい弱性に関してもバッファ・オーバーフローにより任意のコードを実行されることでサーバーを乗っ取られるといったリスクを減らすことができると思われる。ただし,サードパーティ製のモジュールなどで外部のメモリー管理機構を使用している場合にはこのセキュリティ保護機構は適用されないので注意が必要である。

 また,メモリー・チェックの処理などが付加されるため,実行性能については若干低下することが予想される。

 次に,エクステンション関連の話題として,昨年12月に正式公開された高機能キャッシュ・エキステンションeAcceleratorを紹介する。