PHP: Hypertext Preprocessor

PHPデベロッパチームは8月22日(米国時間)、PHP 5.3系の最新版となる「PHP 5.3.7」を公開した。しかし、公開してすぐに暗号処理の一部に問題があることが発覚。急遽対応が実施され、翌日となる8月23日付けでこの問題を修正した「PHP 5.3.8」が公開された。すべてのPHP 5.3系ユーザへ「PHP 5.3.8」へのアップグレードが推奨されている。なお、PHP 5.2系はすでにサポートされていないことから、PHP 5.2系を使い続けているユーザにも「PHP 5.3.8」へのアップグレードが推奨されている。

問題となったのはcrypt()処理。この関数をMD5のソルトを指定して実行した場合、返り値として期待される値に、引数に指定したソルトしか含まれていないという不具合があることがわかった。DESやBLOWFISHのソルトを指定した場合にはこの問題は発症しない。

どうやら問題の原因となったのは文字列処理関数の書き換え時に、誤った使い方へ置き換えてしまったことにあるとみられる。より安全とされる関数を使用するように書き換えたところ、関数の使い方を誤ってしまい、適切なデータが含まれなくなってしまったという顛末のようだ。

「PHP 5.3.8」ではこの不具合の修正のほか、タイムアウトハンドリングの変更も実施されている。PHP 5.3.7でタイムアウトハンドリングを変更したところ、MySQLのSSLコネクションでハングするという問題が発生。この問題に対処するためにPHP 5.3.6のときと同じ挙動で差し戻しが実施されている。