Skip to main content

PHP緊急リリース対応版をリリース - PHPセキュリティ延長保守サービス

ESIのPHPセキュリティ延長保守サービス(PHP 5.3〜8.1対応)では既知のセキュリティ問題を修正した古いバージョンのPHPをご利用頂けます。PHPプロジェクトによるPHP 8.1のメンテナンス期間は2025年12月のリリースで終了しました。今後、PHP 8.1以下の利用を継続されるには既知のセキュリティ問題を修正したPHPを利用する必要があります。

※ PHP 5.3のサポートを再開しました。

このリリースアナウンスは要約版です。PHPセキュリティ延長保守サービスの利用者はドキュメントリポジトリのリリースノートを参照してください。

 

PHP 8.2.35 対応リリースノート(esi-8.2.35)要約

リリース日: 2026年10月23日(上流 PHP 8.2.35 の緊急リリース、10月21日に対応)
対象: 全リポジトリ(PHP 7.0~8.1、PHP 5.3~5.6 とその各派生版)

概要

上流の緊急セキュリティ修正2件(いずれも critical)を、サポート対象外の全バージョン(PHP 5.3~8.1)に適用しました。どちらも、細工したリクエストで認証なしにWebサーバーのワーカー権限でコードを実行されるおそれがあります。全てのお客様に更新を推奨します。

修正内容

GHSA / CVE内容影響
GHSA-w8hw-w9fx-j79w(CVE-2026-109618)メモリ不足の処理で、途中状態のメモリが壊れたまま使われるPHP 5.3以降の全て
GHSA-6wmf-4rv5-p3rp(CVE-2026-109619)前のリクエストの状態(解放済みメモリ)が次のリクエスト開始前に使われるPHP 5.3以降の全て(アップロード進捗の経路は5.4以降)

本サービス独自の修正:

  • PHP 5.6: 引数展開(...)で要素が多いとヒープが壊れる問題(互換性問題なし)
  • php-5.4.45-el8 / el9: PDO ODBC の bug #50444(64ビット対応)

動作が変わる主な点(互換性に注意)

  • memory_limit 超過時: その場では止まらず、次の安全な地点で従来と同じ致命的エラーになります。その間、使用量は一時的に上限を超えます。上限の2倍(1G以上なら +1G)に達するとプロセスが即終了します(シャットダウン関数やログは動きません)。
  • 新INI設定 memory_hard_limit_percent で2段目の上限を調整できます(既定 -1、指定する場合は100以上)。
  • メモリ確保のオーバーフロー、OSのメモリ確保失敗: プロセスが即終了します(終了コード1)。
  • PHPで書いたセッション保存ハンドラー: シャットダウン関数でメモリ上限エラーになると、そのリクエストのセッション変更が保存されません。
  • 出力バッファ・出力ハンドラー・zlib圧縮: メモリ上限エラー時の出力内容がバージョンごとに変わります。
  • multipart/form-data: Content-Length なしの本文は post_max_size で打ち切り、ヘッダーは最初の1つだけ保持します。
  • xml_parse_into_struct(): ハンドラーが例外を投げた後は結果に記録されません。
  • アップロード進捗: セッション記録内のオブジェクトのクラスを読み込まなくなります。

既知の制限・今後の予定

  • php-5.5.38-jsonc は json 拡張の修正が適用されず、巨大JSONの処理でプロセスが終了するおそれがあります(確認中。アプリ側でサイズ制限を推奨)。
  • PHP 7.0~7.4 の exit/die の挙動など一部は、今後のリリースで修正前と同じに戻す予定です。
  • ZEND_MM_MAX_ALLOCS(テスト用)は取り込んでいません。

更新までの緩和策(設定のみでは完全に防げません)

  • memory_limit=-1(ただし post_max_size を小さくし、フロントでリクエストサイズ・パート数・ヘッダー数を制限)
  • session.upload_progress.enabled=0(PHP 5.4以降)
  • .htaccess や PHP_VALUE で警告・非推奨通知が出る設定を避ける
  • FPM では pm.max_requests=1 も有効
  • RLIMIT_AS / RLIMIT_DATA による制限は逆効果なので使わない

リリースの確認方法

  • RPMのリリース番号は <ビルド日>.8.2.35、ESI-RELEASE ファイルにリリースID esi-8.2.35 が記載されます。
  • php -v などのバージョン番号は変わりません。
  • ブランチ先端からのビルドは esi-8.2.35-1-g... と表示されるので、リリース自体は git checkout esi-8.2.35 で取得してください。