PHP2Shell 之夜:两个 9.2 分未授权 RCE 漏洞,补丁刚刚发布,PHP 8.1 以下没份

凯叔爱分享 2026-10-21 38 10/21

先说结论:补丁已经发布了,就在今晚 22:00(北京时间)。PHP 核心爆出两个 CVSS 9.2 分的远程代码执行漏洞,不用登录就能打,应用代码还没开始跑就已经中招。修复版本是 PHP 8.5.12 / 8.4.27 / 8.3.36 / 8.2.35,现在就能升。PHP 8.1 及更旧的版本没有官方修复——官方原话:没有任何完整的临时缓解办法,升级是唯一安全的选择。还没升的,先拉到第四节看临时缓解清单。

PHP2Shell 漏洞之夜:服务器机房红色警报概念图

一、事情是怎么闹大的

正常的漏洞披露流程是补丁和公告同一天出,这次全乱套了:

  • 10 月 20 日晚,有人在 Hacker News 发帖,称两个 PHP RCE 漏洞将在 10 月 22 日披露,还流出一张名为 "PHP2Shell" 的攻击工具截图,横幅宣称支持 PHP 5.4.0 以后的所有版本。帖子很快被删,但截图已经传遍 X 和 Mastodon;
  • 安全公司 watchTowr 随后证实外泄属实,并表示已成功复现其中一个漏洞,但在补丁发布前不公开细节;
  • PHP 官方当晚(20 日 19:33 UTC)紧急发预告:把原定 22 日的发布提前一整天,并明说如果细节进一步外泄或出现真实攻击,还会再提前;
  • 10 月 21 日早上,Cloudflare 报告已观测到针对 PHP 站点的早期攻击,并给所有套餐(包括免费版)上线了临时 WAF 规则,但其 CTO 强调这只是权宜之计;荷兰 DigiD、议会网站等多家政府服务干脆预防性下线;
  • 今晚 22:00,补丁和完整技术细节准时发布,安全公司 Sansec 此前预判:补丁一出,15 分钟内就会出现大规模扫描。

二、两个漏洞到底是什么

漏洞在 PHP 解释器本身,不在 WordPress 或任何某个应用里,所以只要服务器对外跑 PHP 就在射程内——PHP-FPM、Apache mod_php、php-cgi、FrankenPHP、LiteSpeed 官方点名全中,其中 mod_php 风险最高,已有演示利用:一个未登录的请求,在你的应用代码运行之前就能触发。

CVE-2026-109618(内存溢出型):请求处理到一半内存不够(OOM)会打断 PHP,此时内部请求数据只初始化了一半,后续清理流程却把这堆"半成品"当有效数据用,攻击者可以借此劫持执行流程。

CVE-2026-109619(残留状态型):某个请求用过的内部状态,在内存已经释放后还残留着;同一个工作进程处理下一个请求时,可能在正常初始化重置它之前先踩到这块过期状态。官方确认的触发路径包括 session 的上传进度功能(session.upload_progress),PHP 8.5 上还涉及错误回溯(fatal_error_backtraces)。

说人话:这两个洞都不需要账号、不需要你网站上有上传功能配合,属于"请求发过去,服务器就可能执行对方的代码"这一档。

三、影响范围:谁有补丁,谁没有

  • 有官方修复:PHP 8.5.12、8.4.27、8.3.36、8.2.35(今晚已发布,Linux 发行版和 LTS 厂商已提前拿到补丁,先查发行版的包);
  • 没有官方修复:PHP 8.1 及更旧版本——官方已停止维护,不会出更新版;
  • 一个破例:官方这次额外提供了 PHP 7.4、8.0、8.1 的最小源码移植补丁,给自己编译 PHP、或没有 LTS 厂商可依靠的人打,但不会有现成安装包;
  • 一个大坑:常用的第三方源 Remi(rpms.remirepo.net)今晚不会发布更新,官方点名建议改用发行版官方包或源码编译,别傻等 Remi;
  • 曝露面:安全机构 Mallory 估算全球约 130 万台对外主机在跑 PHP,其中约 88.4 万台跑的是已停止支持的版本——这批机器没有现成补丁可打;
  • 顺带一提,PHP 8.2 也将在 2026 年 12 月 31 日停止维护,升版本尽量一步到 8.3 以上。

四、站长现在就该做的事

1. 先查版本。服务器上执行 php -v,或看面板里的 PHP 版本。低于 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12 的,全在未修复范围内。

2. 能升立刻升。升级到上面对应的修复版本;用发行版包管理的先更新系统包,用 Remi 源的按第三节说的换路径,不要等。

3. 用虚拟主机或托管面板的,去催服务商。这不是网站代码层能修的,必须在服务器层面更新 PHP。你催得越早,排队越靠前。

4. 暂时升不了的,把官方临时缓解做上(只能减少曝露,不能替代升级):

  • 用 php_admin_value 把 memory_limit=-1 锁死在 FPM 池或 Apache 配置里,并检查没有别的地方把它改回有限值——这是针对 109618 的主要缓解;
  • 调低 post_max_size:不需要上传的站设 8M,需要上传的设 32M,且 upload_max_filesize 小于它;有条件的话在 Web 服务器层再限制请求体大小、表单字段数等;
  • 关掉 session.upload_progress.enabled=0(写在 php.ini 或 FPM 池配置里,别指望 ini_set),然后重启所有 PHP 工作进程——这是针对 109619 的主要缓解;
  • PHP 8.5 额外关掉 fatal_error_backtraces=0 并重启进程。

5. 套了 Cloudflare 的别高枕无忧。WAF 规则只在流量全走 Cloudflare 时有效,攻击者知道你源站真实 IP 就能绕过去;官方和 Cloudflare 自己都说这只是止血。

五、网传说法核对

  • "CVSS 10.0 满分"——外泄帖的说法,官方评分是 9.2(CVSS v4.0),已经够高了,不用再加码;
  • "PHP 5.4 起全部中招"——出自外泄工具的横幅,官方未确认完整受影响版本清单;官方口径是所有对外提供 Web 服务的 PHP 安装都有风险,修复覆盖 8.2 起、移植补丁给到 7.4 起,更老的版本连移植都没有;
  • "59% 主机还在跑旧版"——和 Mallory"约 88.4 万 / 130 万台"的估算口径接近,量级可信;
  • "15 分钟内全网开扫"——这是 Sansec 的预判不是已发生的事实;但 2024 年 PHP 的 CVE-2024-4577 漏洞在披露后极短时间内就出现大规模利用,前车之鉴摆在那,没人敢赌这次会慢。

最后提醒一句:WordPress、WooCommerce、Discuz、各类自建站和内部系统全是 PHP 的地盘,跟版本新旧无关、跟你装没装安全插件也无关。今晚升不了版本的,至少先把第四节的缓解做上,明早第一件事继续推升级——补丁已经在桌上了,剩下的就是比谁手快。

信息来源:PHP 官方安全公告(php.net,含 GHSA-w8hw-w9fx-j79w、GHSA-6wmf-4rv5-p3rp)、Sansec、Patchstack、The Hacker News 事件报道。

- THE END -

凯叔爱分享

10月21日22:13

最后修改:2026年10月21日
0

非特殊说明,本博所有文章均为博主原创。

共有 0 条评论