互联网上的任何人都能像浏览器一样与你的 PHP 站点通信,无需密码。在最后受影响的 PHP 8.5 上,他们可以强制让一个请求因致命错误而终止,然后向同一个 worker 发送第二个请求。PHP 8.5 会在请求堆内存释放后,将该致命错误的回溯信息保留在 worker 全局内存中。第二个请求在引擎完成自身重置之前,会在应用遗留的 INI 标志时读取该信息。在本实验中,第二个请求会杀死 Apache 子进程。PHP Group 表明,同样的模式可以演变为以 Web worker 身份执行的远程代码执行。
类别: UAF / 崩溃 可达性: 远程
PHP 8.5.11(php:8.5.11-apache)对比已修补的 8.5.12 - php.net
CVE-2026-109619 是陈旧的 worker 全局状态问题。本实验将 Apache prefork 固定为单个子进程,通过 fatal_error_backtraces=On 产生致命错误,然后通过在每个目录应用 php_flag auto_detect_line_endings on / report_memleaks off(在 php_request_startup() 之前应用)来消费该状态。8.5.11:生产者返回 200 致命错误,消费者连接被重置,Apache 日志显示 zend_mm_heap corrupted。8.5.12:同样的两阶段流程保持正常运行(consumer-ok)。以 Apache worker 身份执行 RCE 的结论源自 GHSA 公告的推断。
| ID | CVE-2026-109619 |
| 公告 | GHSA-6wmf-4rv5-p3rp |
| 类别 | UAF / 崩溃(公告推断为 RCE) |
| 可达性 | 远程(未认证 HTTP,同一 worker) |
| CWE | CWE-416 / CWE-825 |
| CVSS | 严重: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 配对)。
| 方法 | 汇聚点 | 权限 |
|---|---|---|
在同一 Apache prefork 子进程上,未认证地先 GET /producer.php 再 GET /consumer.php | 8.5 的 fatal_error_backtraces 在关闭时从未重置;INI 诊断在 php_request_startup() 之前执行 | 可用性(实验已证实): 在 8.5.11 上杀死该子进程(zend_mm_heap corrupted,连接重置)。完整性(推断): 悬空回溯指针;厂商展示了以 www-data 身份执行 RCE。侦察(推断): 遗留请求堆内存泄露。 |
| 在 8.5.12 上执行同样的两阶段流程 | 完整状态重置 | 已关闭(实验已证实): 消费者响应体为 consumer-ok,worker 保持运行。 |
error_reporting / display_errors / @ | 警告仍会消费陈旧状态 | 作为缓解措施已关闭。全局状态在 PHP 决定是否报告诊断信息之前就被访问。 |
FPM 池 .user.ini | 在正常初始化之后应用 | 作为此早期消费者已关闭。FPM 需要前端 PHP_VALUE / PHP_ADMIN_VALUE。会话上传进度是第二个已确认的厂商分支(mod_php 和 FPM);本实验使用的是 8.5 回溯分支。 |
登录、反弹 shell、自定义 .so | 不适用 | 已关闭。未尝试 RIP 控制。 |
实验已证实与推断: 同 worker UAF/崩溃对比已修补的对照组是实验已证实的。RCE 是从 GHSA-6wmf-4rv5-p3rp 推断的。
要求: Apache apache2handler prefork 固定为单个 worker。PHP 8.5 fatal_error_backtraces=On。每目录 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(仅针对 session 分支);移除每请求的已弃用 INI;如果可以承受,设置 pm.max_requests=1。不存在完整的通用配置缓解措施。
Abraxas Labs [email protected]