
PHP 8.5.11 - 重大 - リモート - UAF - CVE-2026-109619 PHP2Shell。Apache mod_php における同一ワーカーの致命的バックトレース、続いて INI 診断。ラボ環境と 8.5.12 の比較。アドバイザリでは RCE が推測される。
インターネット上の誰かが、パスワードなしでブラウザと同じようにあなたの PHP サイトと通信できます。最後に影響を受ける PHP 8.5 では、1つのリクエストを致命的エラーで強制終了させ、その後同じワーカーに2つ目のリクエストを送信できます。PHP 8.5 は、リクエストヒープが消えた後も、その致命的エラーからのバックトレースをワーカーのグローバルメモリに保持します。2つ目のリクエストは、エンジンが自身をリセットする前に、残存する INI フラグを適用する際にそれを読み取ります。このラボでは、その2つ目のリクエストが Apache の子プロセスを強制終了します。PHP Group は、同じパターンが Web ワーカーとしてのリモートコード実行になり得ることを示しました。
クラス: UAF / クラッシュ 到達性: リモート
PHP 8.5.11 (php:8.5.11-apache) 対 修正済み 8.5.12 - php.net
CVE-2026-109619 は、ワーカーのグローバル状態の残存です。このラボでは Apache prefork を1つの子プロセスに固定し、fatal_error_backtraces=On で致命的エラーを発生させ、その後、php_request_startup() より前に適用される per-dir の php_flag auto_detect_line_endings on / report_memleaks off でそれを消費します。8.5.11: プロデューサーは 200 の致命的エラー、コンシューマーは接続リセット、Apache ログに zend_mm_heap corrupted。8.5.12: 同じ2フェーズが稼働し続けます (consumer-ok)。Apache ワーカーとしての RCE に関するアドバイザリは GHSA から推測されます。
| ID | CVE-2026-109619 |
| アドバイザリ | GHSA-6wmf-4rv5-p3rp |
| クラス | UAF / クラッシュ (アドバイザリでは RCE を推測) |
| 到達性 | リモート (未認証 HTTP、同一ワーカー) |
| CWE | CWE-416 / CWE-825 |
| CVSS | Critical: 9.2 CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H (PHP Group) |
| 製品 | PHP |
| 影響を受けるバージョン | PHP 8.2 8.2.35 未満、8.3 8.3.36 未満、8.4 8.4.27 未満、8.5 8.5.12 未満 (ラボの固定バージョン 8.5.11、バックトレース経路は 8.5) |
| 修正済み | 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12 (2026年10月21日) |
| 認証 | なし |
| ライセンス | GNU Affero GPL v3.0 |
| ラボ | 127.0.0.1 のみ |
関連: CVE-2026-109618 OOM longjmp (PHP2Shell ペア)。
| 手法 | シンク | 権限 |
|---|---|---|
未認証の GET /producer.php に続けて同一 Apache prefork 子プロセスへの GET /consumer.php | 8.5 の fatal_error_backtraces がシャットダウン時にリセットされない; php_request_startup() 前の INI 診断 | 可用性 (ラボで実証): 8.5.11 でその子プロセスを強制終了 (zend_mm_heap corrupted、接続リセット)。完全性 (推測): ダングリングバックトレースポインタ; ベンダーは www-data としての RCE を示した。偵察 (推測): 残存するリクエストヒープの漏洩。 |
| 8.5.12 での同じ2フェーズ | 完全な状態リセット | クローズ (ラボで実証): コンシューマーのボディは consumer-ok、ワーカーは稼働し続ける。 |
error_reporting / display_errors / @ | 警告が依然として残存状態を消費する | 緩和策としてはクローズ。グローバル状態は、PHP が診断を報告するかどうかを決定する前にアクセスされる。 |
FPM プールの .user.ini | 通常の初期化後に適用される | この早期コンシューマーとしてはクローズ。FPM にはフロントエンドの PHP_VALUE / PHP_ADMIN_VALUE が必要。セッションアップロード進捗は、ベンダーが確認した2つ目の経路 (mod_php と FPM); このラボでは 8.5 のバックトレース経路を使用した。 |
ログイン、リバースシェル、カスタム .so | 該当なし | クローズ。RIP 制御は試みていない。 |
ラボで実証 vs 推測: 同一ワーカーの UAF/クラッシュ 対 修正済みコントロールはラボで実証済み。RCE は GHSA-6wmf-4rv5-p3rp から推測される。
必要条件: Apache apache2handler prefork を1つのワーカーに固定。PHP 8.5 fatal_error_backtraces=On。per-dir INI 診断。公式 php:8.5.11-apache 対 php:8.5.12-apache。
python3 php-stale-global-uaf-Abraxas-Labs.py
または cd lab && ./run.sh。ループバック 127.0.0.1:18222 (8.5.11) 対 127.0.0.1:18223 (8.5.12)。Compose プロジェクト cve-2026-109619。ウィットネス CVE-2026-109619-UAF-WITNESS。最終行:
SUCCESS CVE-2026-109619 vuln-uaf=yes vuln-crash=yes patched-ok=yes sapi=apache2handler pin=same-worker vuln-image=php:8.5.11-apache patched-image=php:8.5.12-apache how=backtrace crash=connection-reset CVE-2026-109619-UAF-WITNESS
認可されたラボ専用。ループバックと通信します。
PHP 8.5.12(または 8.2.35 / 8.3.36 / 8.4.27)に更新してください。それまでの間は、8.5 では fatal_error_backtraces=0(このプロデューサのみ)、session.upload_progress.enabled=0(セッション側のみ)、リクエストごとの非推奨 INI を削除、余裕があれば pm.max_requests=1 を設定してください。完全な汎用設定による緩和策はありません。
Abraxas Labs [email protected]