セキュリティと回帰テストのガイド · CVE-2026-109618 · CVE-2026-109619

PHP の重大な脆弱性:修正版と回帰テストの進め方

CVE-2026-109618 と CVE-2026-109619 の概要、提供元への更新確認、修正後にアプリが正常に動くか確かめる方法を説明します。

2026年10月21日に調査内容を確認しました。更新前に PHP の公式勧告を確認してください。

まず、リクエストを処理する PHP の実行環境を確認します

PHP はサポート中のブランチ向けに修正版を公開しました。ディストリビューションやホスティング事業者は、バージョン番号を変えずに修正をバックポートする場合があります。脆弱性の有無を判断する前に提供元の案内を確認してください。

PHP の発表内容と影響

2026年10月21日、PHP プロジェクトは CVE-2026-109618 と CVE-2026-109619 の修正を公開しました。どちらも重大な実行環境の脆弱性です。条件によっては、Web リクエストを処理する PHP 環境で、認証されていない攻撃者がリモートからコードを実行できる可能性があります。PHP は、バージョンと提供元の修正を確認するまで、Web リクエストを処理する環境を影響対象として扱うよう案内しています。

CVE-2026-109618 はメモリ不足の処理中に内部状態が壊れる問題です。CVE-2026-109619 は、前のリクエストのメモリ参照がグローバル状態に残る問題です。攻撃を再現する必要はありません。計画的に更新し、アプリが動き続けることを確認します。

公式勧告では Apache の mod_php に特有のリスクが示されています。PHP-FPM、php-cgi、FrankenPHP、LiteSpeed も記載されています。実際の影響は実行環境、設定、アプリの経路によって異なるため、すべての構成に同じ攻撃シナリオを当てはめないでください。

影響を受けるバージョンと修正版

表は2026年10月21日に PHP が公開した upstream 版をまとめたものです。「修正済み」は各ブランチで修正を含む最初の版です。OS のパッケージ、提供元のイメージ、管理型ホスティングでは、表示されるバージョン番号を変えずに修正がバックポートされることがあります。提供元の勧告も確認してください。

PHP 8.2 のセキュリティサポートは2026年12月31日に終了する予定です。8.2.35 はこのブランチの CVE を修正しますが、サポートが続くブランチへの移行も計画してください。PHP 8.1 以前は通常のリリースが終了しています。7.4、8.0、8.1 向けには最小限のソース修正が公開され、一部の提供元は独自のパッケージを保守しています。実際に導入されているパッケージを確認してください。

PHP ブランチ影響を受ける版修正版セキュリティサポート
8.5< 8.5.128.5.12サポート中
8.4< 8.4.278.4.27サポート中
8.3< 8.3.368.3.36サポート中
8.2< 8.2.358.2.352026年12月31日まで
8.1、8.0、7.4影響あり・EOL最小ソース修正または提供元のパッケージ提供元に確認
7.3 以前影響あり・EOLupstream の修正版なし移行を検討し、修正を決めつけない
PHP ブランチ別の修正版
PHP 8.5
それ以前8.5.12 修正済み
PHP 8.4
それ以前8.4.27 修正済み
PHP 8.3
それ以前8.3.36 修正済み
PHP 8.2
それ以前8.2.35 修正済み

同じブランチ内でバージョンを比較してください。ディストリビューションのパッケージにはバックポートが含まれ、別の番号が表示されることがあります。

更新前に確認すること

サーバー、コンテナ、ベースイメージ、ホスティング管理画面、製品に組み込まれた PHP、バックグラウンド処理、テスト環境など、PHP が使われている場所をすべて確認します。1つのサイトで複数バージョンを使う場合もあります。実際にアクセスを受けるサービスと更新担当者を特定してください。

バージョンとパッケージの提供元、OS、Web サーバー、実行環境、必要ならイメージ、アプリ、環境、担当者、問題時に前のバージョンへ戻す手順を記録します。`phpinfo()` を公開しないでください。設定情報が漏れる可能性があります。社内の台帳や許可された提供元のツールを使ってください。

PHP のブランチをまたいで更新する場合は、提供元の注意事項と移行ガイドを確認します。メンテナンス時間、復元できるバックアップ、元に戻す手順を準備してください。管理型サービスでは、適用バージョンと再起動・再デプロイの要否を提供元に確認します。

安全に更新する手順

  1. インターネットからアクセスできるサービスを優先し、提供元が修正版を公開したか確認します。
  2. OS、ホスティング、イメージ提供元の手順に従い、本番に近い環境で先に更新します。
  3. 修正版イメージからコンテナを作り直します。ホストを更新しても、イメージ内の PHP は変わりません。
  4. 提供元の手順に従って PHP のプロセスを再起動または入れ替え、新しい実行環境を読み込ませます。
  5. 別の端末ではなく、実際にアクセスを受ける環境でバージョンを確認します。
  6. 基本確認と優先度の高い回帰テストを実施します。
  7. 合意した期間、エラー、ログ、メトリクスを確認します。
  8. 重要な問題があれば更新を止め、発生内容を記録し、計画に沿って前のバージョンへ戻します。WAF や一時的なルールは修正の代わりになりません。
  1. 01PHP の利用箇所を確認
  2. 02修正を適用
  3. 03稼働プロセスを確認
  4. 04処理をテスト
  5. 05結果を確認
  6. 06公開可否を判断

回帰テストを計画する

修正後の回帰テストでは、アプリや連携先に予期しない影響がないかを確認します。PHP に脆弱性がないことを証明するものではなく、セキュリティ診断、依存関係の確認、設定の検証の代わりにもなりません。

変更範囲として PHP のバージョン、サービス、設定、拡張機能、依存関係、環境を整理します。PHP を使う処理と、プロセス、セッション、キャッシュ、ファイル、キューを共有する部分を洗い出します。業務への影響、外部からの到達性、復旧の難しさで優先順位を付けます。分からない依存関係は未確認のリスクとして記録します。

テストを三段階に分けます。稼働状態と重要機能の基本確認、変更箇所や依存箇所の重点確認、影響の大きい機能の広いテストです。結果を調査・再現できるよう、バージョン、環境、テストデータを記録してください。

テストケースの例

以下は例です。実際の構成や業務ルールに合わせて調整してください。不要なものは外し、独自の処理、拡張機能、連携先を追加します。テスト用アカウントと架空のデータを使い、実際のパスワードや個人情報は使わないでください。

対象例確認内容記録する証跡
稼働状態起動、ヘルスチェック、主要ページプロセスの状態と期待する応答バージョン、環境、時刻、個人情報を除いたログ
認証ログイン、ログアウト、セッション切れセッションと終了処理テスト用アカウントと結果。パスワードは記録しない
権限役割に応じた許可・拒否権限と不正アクセスへの応答役割、対象、実際の結果
フォーム重要なデータの作成・編集入力チェック、保存、業務ルール架空データと個人情報を除いた画面
API成功、エラー、タイムアウトステータス、項目、認証、エラー処理機密情報を除いたリクエストと応答
ファイルアップロード、閲覧、ダウンロード形式、サイズ、保存、権限テストファイルと結果
非同期処理キュー、定期処理、再試行最終状態とエラー処理タスク ID、時刻、機密情報を除いた結果
データとセッション複数リクエストやプロセス間の保持一貫性とユーザー間の分離架空 ID と前後の状態

テストを終える条件

開始前に、どの失敗で更新を止めるか決めます。ログイン、権限、重要な処理、データの整合性、必須の連携に問題がある場合、修正版を確認できない場合、新しいエラーの原因が分からない場合は先に進みません。環境やデータ不足で実行できないテストは合格ではありません。

最後に、変更範囲に対してどこまで確認したか、失敗・ブロック・未完了のテスト、証跡、関連する不具合、残るリスク、判断者を確認します。すべて成功したテスト結果も、実行したケースの結果に限られます。すべてのサーバーに修正が入った証明にはなりません。

確認リスト

  • サーバー、コンテナ、提供元サービスをすべて確認した。
  • パッケージの提供元と参照した勧告を記録した。
  • アクセスを受けるプロセスを案内に従って再起動した。
  • 各結果にバージョン、環境、テストデータを記録した。
  • 失敗や未解決リスクの担当者を決めた。
  • 証跡から秘密情報と個人情報を除いた。

後から確認できるテスト記録を残す

Treseko ではテストケース、スイート、バージョン、実行結果、不具合、添付ファイルを整理できます。テストの設定と実行は各チームが自分の環境で行います。Treseko が修正を適用したり、すべての PHP 環境を自動で見つけたりするわけではありません。

公式情報と参考資料

このガイドは QA の学習資料です。PHP、OS、コンテナ、ホスティング事業者の案内に代わるものではありません。最終確認日:2026年10月21日。