首页>安全>正文

PHP两个RCE漏洞提前泄露后的应急升级决策

Feng 45 阅读 安全

补丁时间被硬生生提前了。PHP 安全团队原定周四披露,消息在 Hacker News 上被人捅出来之后,紧急把发布挪到周三 10 月 21 日 14:00 UTC。触发条件写得很清楚:任一漏洞细节公开,或出现野外利用证据,保留提前发布的权利。这次是前者。

泄露的起点是一条 Tell HN 帖子,发帖人 petecooper,10 月 20 日 15:20 UTC,自称有可靠消息源,说两个 CVSS 10.0 的 PHP RCE 即将披露、波及 PHP 5 及以后所有版本。发帖人自己承认拿不出证据,帖子后来被标记,但截图已经在 X 和 Mastodon 上传开了。watchTowr 随后确认属实,并称已成功复现 CVE-2026-109618,补丁发布前不公开技术细节。

PHP两个RCE漏洞提前泄露后的应急升级决策

两个编号:CVE-2026-109618 和 CVE-2026-109619,均为远程代码执行。官方给的 CVSS v4.0 是 9.2,泄露消息里说的是满分 10.0。数字有出入,结论没分歧——尽快修。

影响面为什么比编号更棘手

watchTowr 和多位研究者的分析指向同一个结论:这两个 RCE 覆盖 PHP 5、6、7、8 全系。问题在于,只有 PHP 8 会拿到官方补丁。PHP 5 和 PHP 7 多年前就 EOL 了,安全团队没有义务也没有计划为它们回补。互联网上跑着 PHP 5/7 的老系统数量不小,这批机器在补丁发布后依然无药可医。

安全研究员 Florian Roth 的提醒很直白:没有补丁可打,就是长期暴露。这不是”晚几天修”的问题,是”永远修不了”的问题。

PHP两个RCE漏洞提前泄露后的应急升级决策

保密期泄露改变了什么

Embargo 是厂商、发行版、托管商、安全公司之间协调出来的时间窗,目的是让补丁和公告同步实现,给防守方留出抢修窗口。一旦严重度和日期提前曝光,手里已经攥着漏洞情报的攻击者就精确知道了自己还剩多少时间。这次泄露直接压缩了这个窗口,PHP 团队的反应是把发布提前一天。

截至目前,没有观察到野外利用,漏洞也不在 CISA 的已知被利用漏洞目录里。但这只是当下状态,不是保证。

升级到 PHP 8 之前先看清分支

原文说”立即升级 PHP 8″,方向对,颗粒度不够。PHP 8 内部各小版本的安全支持状态差别很大,升到一个已经停止安全维护的分支,等于换个姿势继续裸奔。

按 PHP 官方支持策略,8.1 的安全支持已于 2025 年 12 月 31 日结束;8.2 的安全支持持续到 2026 年 12 月 31 日;8.3 到 2027 年 12 月 31 日;8.4 到 2028 年 12 月 31 日。也就是说,这次补丁发布时,8.1 已经出局,8.2 处在安全支持末期。生产环境如果还在 8.1,应该直接跳到 8.3 或 8.4,而不是在 8.2 上做过渡。

跨大版本升级的兼容性风险要提前评估。8.0 到 8.1 的弃用项、8.2 对动态属性的限制、8.3 的 json_validate() 新增、8.4 的属性钩子和隐式可空参数弃用,都可能让老代码在升级后报错。先在预发环境跑一遍完整测试套件,比在生产上直接换包安全得多。

补丁实现后怎么确认真的生效

升级动作做完不等于漏洞已修。发行版仓库的同步有延迟,容器镜像可能缓存了旧层,多 PHP 版本共存的机器上 CLI 和 FPM 用的未必是同一个二进制。几个校验动作值得固定下来。

先确认实际运行的版本:

php -v
php-fpm -v

再确认加载的配置文件路径,避免改了一个 ini 而实际生效的是另一个:

php --ini

如果是通过包管理器安装,查一下已安装版本和可用更新:

# Debian/Ubuntu
dpkg -l | grep php
apt list --upgradable 2>/dev/null | grep php

# RHEL 系
rpm -qa | grep php
dnf check-update php\*

容器环境里,注意基础镜像的 tag 是否指向了新构建。php:8.3-fpm 这类浮动 tag 在补丁发布后重新拉取才会更新,本地缓存的旧镜像不会自动变。用 docker pull 强制刷新,再核对容器内 php -v 的输出。

结果判定标准很简单:CLI 和 FPM 报告的版本号都落在含本次修复的构建上,且与包管理器记录一致。任何一处对不上,就还没修完。

旧版本系统的现实选择

PHP 5/7 没有官方补丁,也没有可用的临时缓解措施。这不是危言耸听,是官方明确表态:workaround 不存在,打补丁是唯一防线,而旧版本连这条防线都没有。

还在跑 PHP 5/7 的机器,可选路径只有两条。一是尽快迁移到受支持版本,工作量大但一劳永逸;二是如果短期迁不动,至少把这类系统从公网撤下来,用反向代理或网络策略限制访问来源,缩小暴露面。后者不是修复,只是拖延暴露时间,别把它当成解决方案。

PHP两个RCE漏洞提前泄露后的应急升级决策

PHP两个RCE漏洞提前泄露后的应急升级决策

时间线梳理

10 月 20 日 15:20 UTC,Tell HN 帖子出现。同日,watchTowr 确认漏洞真实并完成复现。PHP 团队决定把发布从周四提前到周三 10 月 21 日 14:00 UTC。补丁发布后,PHP 8 用户升级即可;PHP 5/7 用户面对的是无补丁状态。

对管理员来说,动作顺序应该是:先确认自己跑的是哪个 PHP 分支、哪个小版本,再决定是打补丁还是迁移,最后用命令行核对补丁是否真正实现。泄露已经发生,窗口被压缩,剩下的时间不多。

ID:6778

Feng
这位作者很神秘,还没有填写简介。