正在加载...
1492 字
7 分钟
PHP 核心曝高危 RCE 漏洞:CVE-2026-109618/109619(CVSS 9.2)修复版本已发布,立即升级
2026-10-21

🚨 补丁已发布,立即升级:PHP 官方已于北京时间 10 月 21 日 22:00 如约发布安全更新,修复两处可被未认证攻击者远程执行代码的核心漏洞。官方明确表态:没有任何完整的临时缓解手段,升级是唯一安全的选择。如果你的服务器对外提供 PHP 服务,请立即处理。

事件回顾#

PHP 官方安全团队于 10 月 20 日预告(Upcoming Critical PHP Security Release),并于 10 月 21 日 14:00 UTC(北京时间 22:00) 准时发布了正式安全公告(Security advisory)。

本次修复的是两处位于 PHP 核心解释器的远程代码执行漏洞,在 CVSS v4.0 评分体系下均达到 9.2 分(Critical 级别):

漏洞编号类型技术成因
CVE-2026-109618RCE(OOM 内存破坏)内存耗尽(OOM)处理可能中断 PHP 执行,此时内部请求数据仅部分初始化,请求清理阶段可能把无效数据当作有效数据处理
CVE-2026-109619RCE(残留全局状态)请求持有的内部状态在其底层内存被释放后仍可存活,同一 worker 进程处理的后续请求可能在正常初始化重置之前使用这些残留状态

详细技术分析见官方 Advisory:GHSA-w8hw-w9fx-j79w、GHSA-6wmf-4rv5-p3rp。

谁处于风险中:所有处理 Web 请求的 PHP 安装,包括 PHP-FPM、Apache mod_php、php-cgi、FrankenPHP、LiteSpeed。官方认为 mod_php 风险最高——已有演示证明:一条未认证请求即可在任何应用代码运行之前触发攻击。这意味着 Laravel、Symfony、ThinkPHP 等框架的鉴权、WAF 规则、中间件都无法拦截。

修复版本#

PHP 官方支持的分支(请立即升级到以下版本):

分支修复版本备注
PHP 8.58.5.12当前最新稳定分支
PHP 8.48.4.27
PHP 8.38.3.36
PHP 8.28.2.35⚠️ PHP 8.2 将于 2026 年 12 月 31 日 EOL,届时不再有安全修复,请规划升级

停更(EOL)版本的修复渠道:

PHP 官方已停止维护 PHP 8.1 及更早版本,但鉴于漏洞严重性,官方罕见地提供了最小化源码 Backport,供自行编译或无法使用 LTS 供应商的用户使用:

同时,宝塔面板已第一时间打包了修复版本,使用宝塔的用户可直接在面板中升级:

分支宝塔修复版本
PHP 7.47.4.34
PHP 8.08.0.27
PHP 8.18.1.35

此外,各 Linux 发行版与 LTS 供应商已提前拿到补丁,请检查你的发行版仓库获取更新包(Debian/Ubuntu/CentOS 等通过 backport 修复 8.1 及更早版本的软件包)。

如何升级#

  1. 查清当前版本:php -v,或在站点根目录放置 <?php phpinfo(); 页面查看(用完删除);
  2. 升级到修复版本:
    • 官方分支用户:从官方下载页获取新版源码重新编译,或等待发行版推送更新包;
    • 宝塔用户:面板 → 软件商店 → 对应 PHP 版本 → 升级到上表中的修复版本;
    • Docker 用户:拉取已更新的官方镜像重建容器;
  3. 升级后重启 PHP-FPM / 重载 Web 服务,并验证 php -v 输出的版本号已更新;
  4. 不要只升级不重启——残留的旧 worker 进程仍携带漏洞代码。

无法立即升级?官方缓解措施(仅降低风险,不能替代升级)#

官方明确说明:以下措施只能封堵特定攻击路径,不能让安装变得安全。请务必尽快完成升级。

针对 CVE-2026-109618(OOM 内存破坏):

  • 设置 memory_limit=-1(最好用 FPM pool 的 php_admin_value 或 Apache 配置固化,防止应用覆盖),并确认没有其他 pool/目录/应用配置重新设置了有限上限。这移除了”可控的 PHP 内存上限失败”路径,但底层分配失败仍可能触达漏洞路径;
  • 调低 post_max_size:无需文件上传的应用设为 8M;需要上传的设为 32M,并保持 upload_max_filesize 小于 post_max_size。同时在 Web 服务器/代理层限制解码后的请求大小、输入字段数、multipart 分片数、Header 数量与嵌套深度——这些限制必须覆盖没有有效 Content-Length 的请求;
  • 用容器或 cgroup 限额作为可用性边界(最好只 kill 受影响的 worker)。不要用 RLIMIT_AS / RLIMIT_DATA 替代,它们本身会引发漏洞所需的分配失败。

针对 CVE-2026-109619(残留全局状态):

  • 设置 session.upload_progress.enabled=0 并重启所有 worker。必须在请求解析之前生效(php.ini、FPM pool 或服务器配置),不要依赖 ini_set() 或 FPM 的 .user_ini。这只能封堵已确认的 session 路径,其他变体仍然存在;
  • PHP 8.5 用户可设 fatal_error_backtraces=0 并重启所有 worker(仅封堵已确认的 fatal backtrace 路径);
  • 移除那些在初始化之前就产生诊断信息的无效/过时的按请求配置。用 error_reporting、display_errors 或 @ 隐藏报错是没有用的;
  • 修复攻击者可触发的 Fatal Error 和执行超时,包括回调函数、上传/导入处理和清理阶段的失败。

排查是否已被利用#

如果补丁发布前你的 PHP 服务长期暴露在公网(尤其是 mod_php),建议排查:

  • 访问日志中的异常 POST 请求、异常 multipart 请求、无 Content-Length 的畸形请求;
  • 异常的 PHP-FPM / Apache worker 崩溃与重启记录(OOM 相关);
  • 服务器上异常的新进程、异常的计划任务、陌生的 PHP 文件(webshell)。

参考链接#


本文首发于补丁发布前的预告阶段,已于 2026-10-22 更新:补充两处漏洞的技术成因、官方修复版本(8.5.12 / 8.4.27 / 8.3.36 / 8.2.35)、EOL 分支官方 Backport、宝塔修复版本(7.4.34 / 8.0.27 / 8.1.35)及官方临时缓解措施。

PHP 核心曝高危 RCE 漏洞:CVE-2026-109618/109619(CVSS 9.2)修复版本已发布,立即升级
https://www.tr0.cn/php-cve-2026-109618-rce/
作者
小森
发布于
2026-10-21
许可协议
CC BY-NC-SA 4.0