这次值得花十分钟处理的是 CVE-2026-109618 与 CVE-2026-109619:一对 CVSS 9.2 的 PHP 漏洞,攻击者可以在不登录、不依赖应用层漏洞的情况下拿到 RCE。这篇给你三样东西:版本自查依据、三条立即可做的缓解,以及判断自身暴露面的方法。

漏洞机制:上传进度特性撞上引擎错误处理

session.upload_progress 是 PHP 5.4 引入的上传进度特性,其 rfc1867 处理器在应用代码运行之前就随 SAPI 启动执行。研究者的链条建立在这个特性与 Zend 引擎错误处理路径的组合上:OOM 触发 longjmp() 后引擎状态失效,构成 CVE-2026-109618;FPM worker 跨请求复用导致的过期全局状态与 UAF,构成 CVE-2026-109619。

五条利用链,前置条件差别很大

仓库整理了五条独立链条。链 A 需要 LFI 注入配合;链 B 走 var_destroy 的 UAF,要求应用调用 unserialize();链 C 利用两个目录 serialize_handler 不一致触发 __destruct。真正要警惕的是后两条:链 D 对任何 Apache mod_php 端点是零依赖预认证 RCE;链 E 在 FPM 上,生产者只需任意一个调用 session_start() 的端点——WordPress、Laravel、Joomla、Drupal 默认都满足——消费者可以是任何 PHP 端点。注意 D、E 的利用代码在仓库中并不公开,公开的是全部检测规则与 A、B、C 的验证脚本。

自查与缓解

版本是第一道判断:受影响范围 5.4.0(2012 年)至 8.5.11,修复版本为 8.2.35、8.3.36、8.4.27、8.5.12 及以上,5.x 到 8.1 不在修复列表内。补丁提交 3584a98 改动约 300 个文件、集中在 Zend 引擎,说明这不是应用层能绕过的缺陷。无法立即升级时:把 session.upload_progress.enabled 设为 Off,开启 session.use_only_cookies,并在 WAF 拦截 multipart POST 中的 PHP_SESSION_UPLOAD_PROGRESS 字段——作者称其合法用途极少,可覆盖两条 CVE 的主要攻击向量。仓库 detection/ 目录自带 Suricata、Sigma、ModSecurity 规则和 Docker 复现环境。

边界

「影响 78% 的网站」是仓库作者自述的估算,各平台受影响结论也出自仓库转述的 Wiz 验证;HTTP 头里的版本号无法确认是否含回迁补丁。把缓解当降压、把升级当根治,这个顺序不要反。

一图速览:

原始出处:https://github.com/ikow/php2shell-poc

本文由 AI 辅助生成(AI-assisted content)。