PHP 官方 10 月 21 日紧急发布 8.5.12、8.4.27、8.3.36、8.2.35,修复内核级漏洞 CVE-2026-109618 与 CVE-2026-109619,代号 PHP2Shell。攻击者无需账号,仅靠一个 HTTP 请求即可在 Apache mod_php 上执行任意代码,当日法国、荷兰、比利时、澳大利亚多国政府站点被迫下线。
事件概述:泄露早于补丁一天
公告编号 GHSA-w8hw-w9fx-j79w 与 GHSA-6wmf-4rv5-p3rp。8 月,Calif 用 GPT-5.6 Sol 审计 PHP 源码时发现问题,OpenAI 同日独立报告,数周后 Wiz 独立复现。细节却在补丁前一天的 20 日泄露,watchTowr 与 Cloudflare 都称补丁公开前已观测到利用尝试。
技术细节:OOM 路径缺陷与跨请求残留
CVE-2026-109618:longjmp 在半初始化内存上跳转
PHP 在请求超出内存上限时用 longjmp() 跳出上下文。若此时请求内存只完成部分初始化,关闭流程就会把这段垃圾数据当合法状态读取。公告点名多种低成本触发方式:不带可用 Content-Length 的 multipart 体、超量分段头部、空文件控件。修复改为在 VM 安全点触发软 OOM,并在更高阈值硬 _exit()。
CVE-2026-109619:worker 全局状态 UAF
常驻 worker 保留错误、会话、扩展等全局状态,其中指针可能指向上一个请求已释放的堆。请求 A 因致命错误、OOM 或关闭期诊断留下残留,同 worker 上的请求 B 在初始化前读到它即为释放后重用。已确认路径包括 PHP 8.5 默认开启的 fatal_error_backtraces 与会话上传进度。
影响评估:CVSS 9.2,暴露面看 SAPI
PHP 安全团队评分 CVSS v4.0 9.2(AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H),Red Hat 的 CVSS 3.1 为 8.1。网传「10.0 满分」出自无出处论坛帖,不可采信,但 9.2 已足以让 NSA 建议「不能立即打补丁就下线」。
- Apache mod_php:两个漏洞均确认在默认限制下未认证 RCE,风险最高;
- PHP-FPM:可受影响,会话上传进度路径已验证;
- FrankenPHP、LiteSpeed、php-cgi:列为可能或存在风险。
Wiz 估计 PHP 支撑全球约七成网站,称其「可能是软件史上最严重的漏洞之一」;PHP 基金会工程师 Volker Dusch 将其比作 2014 年的心脏滴血。法国 ANSSI 要求地方政府站点下线,巴黎警察总局在列;荷兰 DigiD、比利时外交部、澳大利亚 cyber.gov.au 均预防性关停。
修复建议
升级到 8.5.12、8.4.27、8.3.36 或 8.2.35(8.2 于 2026 年 12 月 31 日停止支持)。8.1 及更早不再发版,仅有 7.4/8.0/8.1 的最小源码回补。发行版常不改版本号回补,要比对发行版公告判断。
php -v
curl -sI https://example.com/ | grep -iE '^(server|x-powered-by):'
公告明确否定存在通用配置层缓解:网传「关闭 session.upload_progress 即可」不成立,SAPI 层 multipart 解析器里还有第二个独立 UAF,任意 multipart POST 都能触发。临时处置只能摘除对外服务。面板、CMS、镜像与设备是否内置受影响 PHP,可参照 NCSC-NL 的 php2shell 清单。