PHPの脆弱性

執筆者:

カテゴリ:

1.発表概要

何が起きた
 10/21、PHP本体の重大な不具合2件を修正
PHP=Webサイトの裏側の処理に使う言語
問題は、PHPコードを実行するソフトのメモリ管理にあった

その1
 メモリ不足の後処理で不完全なデータを使ってしまう

その2
 使い終えたメモリを次の通信で参照してしまう
何が危険
 条件がそろうと、ログインしていない相手からサーバー上で不正なコードを実行されるおそれ
被害の範囲は、PHPに与えられた権限などで変わる
 情報流出
 サイト改ざん
 サービス停止
どんな対策をする?サーバー上の PHP本体を更新
 修正を含むPHPへ入れ替え、 稼働中のPHPにも反映されたか確認

すでに侵入されていないか調査
 通信の記録・不審なファイル・ 想定外のプログラムを確認

WordPress本体の更新だけで、PHPも直るとは限らない
更新と調査は並行して進める
続報で何が分かった?
 10/17
  攻撃の試行を観測
 10/21
  PHP修正版を公開
AWSが、修正公開4日前の攻撃の試行を検知用システムで確認

攻撃の試行の観測=侵入成功の確認ではない

AWSは、少なくとも10/17からの調査を推奨

2.仕組みと対策

どこに問題
 サーバーで動くPHP本体
 PHPはサーバー側でログイン・検索・保存などを処理
今回は実行環境そのものの不具合

Webからの通信を処理するPHPが対象
 例:Apache、PHP-FPM
原因は2つ
 メモリ管理の不具合
CVE-2026-109616
 メモリ不足時の後処理

 処理を中断
  準備途中のデータが残る
  終了処理で誤って扱う

CVE-2026-109619
 古い参照が残る

 メモリを解放
  古い参照が残る
  次の通信で使ってしまう
何が危険?
 ログイン前でも攻撃が成立する場合がある
サーバー上で不正なコードを実行されるおそれ
 情報流出
 サイトの改ざん
 サービス停止

 影響はPHPの実行権限の範囲
 成立条件は環境や設定で異なる
運営者の対応
 PHP本体の修正を適用
設定変更だけでは完全に防げない
 使用中のPHPと提供元の対応状況を確認
 修正版へ更新
 稼働中のPHPを再起動し動作とログを確認

レンタルサーバーは提供元の案内へ
公式の修正版
 8.2.35
 8.3.36
 8.4.27
 8.5.12
OS提供パッケージは、提供元の修正情報も確認

3.具体的な内容

CVE-2026-109618
メモリ不足時の不正な状態処理
CVE-2026-109619
解放済みメモリの再利用 / Use-After-Free
メモリ制限(OOM: Out Of Memory)やbailout(エラーによる処理の中断)が発生した際のエラー処理に欠陥がある脆弱性リクエスト間で古い参照が残り、すでに解放された(Freeされた)メモリ領域に再びアクセスしてしまう脆弱性(Use-After-Free)
攻撃の流れ:

1. 攻撃者が細工したリクエストを送信

2. 処理途中でメモリ不足(OOM)が発生

3. 通常はそこで強制終了するはずが、内部状態が不完全な(初期化途中の)データのまま処理を継続

4. その不完全なデータが有効なものとして扱われ、条件次第でRCE(任意のコード実行)につながる
攻撃の流れ:

1. リクエストA(エラー等)でメモリが解放

2. 解放されたにもかかわらず、古い参照がメモリ上に残存する

3. 続くリクエストBの処理内で、その残った古いメモリ領域にアクセスしてしまう(メモリ破壊)

4. 結果として、遠隔からRCE(任意のコード実行)が成立する危険性がある

4.対応策

今回の問題
 PHPに脆弱性が見つかりました
この脆弱性を悪用すると、 不正なアクセスによりホームページの改ざんやデータの漏えいなどの被害を受ける可能性がある
レンタルサーバー会社の対応
 多くのサーバー会社が緊急バッチを適用する
多くのレンタルサーバー会社では、 今回の脆弱性に対する修正 を適用し、 サイトの表示を再開している
必要な対策
 今回の件を受けて、主に2つの対策が必要
PHPのセキュリティパッチの適用
 今回発見された脆弱性に対する修正
 レンタルサーバー会社側で行われる

PHPのバージョンアップ
 WordPressなどで古いPHPを使用している場合は、 今後の安全性のために、公式サポート期間内のバージョンへの更新がおすすめ
PHPの対応状況について
 古いPHPへの対応は、レンタルサーバー会社による
今回のセキュリティパッチは、多くのサーバー会社で適用されていますが、 公式サポートが終了した古いPHPについては、 対応方針や修正範囲がサーバー会社によって異なる

そのため、古いPHPを使用している場合は、レンタルサーバー会社の対応状況を確認することが大切

バージョンとサポート状況
 PHP 7.4
 PHP 8.0
 PHP 8.1
 PHP 8.2
 PHP 8.3
 PHP 8.4
 PHP 8.5
  PHP 8.3以上がおすすめ