概要
PHPプロジェクトは8月27日、PHP 8.5.10および8.4.25を公開した。両バージョンともセキュリティ修正を含むリリースであり、公式には可能な限り早期のアップデートが推奨されている。PHP 8.5系は「Latest」ステータスにあり、2027年12月31日までサポートが継続される。
修正されたセキュリティ脆弱性
今回のリリースでは、Exif拡張のexif_read_data()においてHEIF形式のメタボックスに対し元ファイルサイズを超えるメモリを割り当ててしまう問題が修正された。なお、ext-pgsqlのSQLインジェクション(CVE-2026-17543)やbcmath拡張bccomp()のバッファオーバーフロー(CVE-2026-17544)、libgd由来の脆弱性(CVE-2026-9672)、pharアーカイブの循環シンボリックリンクによるクラッシュ(GHSA-vc5h-9ppw-p5f3)は、いずれも今回の8.5.10・8.4.25ではなく、7月30日リリースのPHP 8.5.9・8.4.24で修正済みの項目である。
スタック枯渇問題への対応
もう一つの大きな柱が、深くネストしたデータ構造を処理する際のスタック枯渇(スタックオーバーフロー)対策である。配列同士の深いネスト比較や、DOM拡張でのドキュメント正規化・比較処理で発生し得るスタックオーバーフローが修正されたほか、array_walk_recursive()、array_replace_recursive()、compact()といった再帰的に処理を行う関数にスタック上限チェックが新たに追加された。これらは、悪意を持って極端に深いネスト構造を持つ入力を与えることでサービス拒否(クラッシュ)を引き起こし得る問題であり、外部入力を扱うアプリケーションにとっては地味ながら重要な修正といえる。
その他の修正点とアップデート方法
このほかにも、DOM拡張でDTD宣言に由来する属性のデフォルト値をsetAttribute()が正しく扱えていなかった問題、MBString拡張のmb_strrpos()における負のオフセット処理の不具合、PDO ODBCでのNULL値処理、PDO PostgreSQLの遅延フェッチ(レイジーフェッチ)に関する欠陥、Reflectionの例外メッセージにおけるnullバイトの扱い、SimpleXMLで発生していたセグメンテーション違反など、安定性に関わる多数の修正が含まれる。ソースコードはGitHubリポジトリから、Windows向けにはNTS/TS版の32bit・64bitバイナリが、コンテナ環境向けにはCLI・FPM・Apache用のDockerイメージがそれぞれ提供されている。セキュリティ修正が含まれることから、本番環境を運用する開発者は速やかなアップデート適用が望ましい。