PHP官方发布紧急安全更新:修复两项严重漏洞,可导致远程代码执行(RCE)

来源:互联网 时间:2026-10-22

PHP 内核一次修掉两个 CVSS 9.2 的未认证 RCE,社区代号 PHP2Shell。这是近几年离站长最近的高危事件:不针对任何 CMS,也不需要你代码里有 bug。

一、发生了什么

2026 年 10 月 21 日 14:00 UTC,PHP 官方发布紧急版本 8.5.12、8.4.27、8.3.36、8.2.35,修复 CVE-2026-109618 与 CVE-2026-109619。原定次日协调披露,结果前一天就在 Hacker News 泄露,官方被迫抢跑。Cloudflare、watchTowr、Unit 42 已报告利用尝试与在野利用,CISA 同日发出紧急告警。

二、为什么说站长躲不掉

漏洞在 PHP 解释器里,不在主题、插件或 Composer 包里,业务代码改不动它。更麻烦的是攻击发生在应用脚本执行之前——登录校验、框架中间件全来不及,哪怕站点只有一个 hello world 的 php 文件也在射程内。触发只需要一个普通 multipart POST 请求,而会话上传进度功能自 PHP 5.4 起默认开启。

三、影响与修复版本

PHP 分支

修复版本

说明

8.5

8.5.12

活跃维护

8.4

8.4.27

活跃维护

8.3

8.3.36

仅安全更新

8.2

8.2.35

支持到 2026-12-31

8.1 及以下

无官方发布版

7.4/8.0/8.1 仅有源码回移

 

四、自查:三个最容易踩的坑

五、升级与临时止血

唯一完整修复是升级到对应分支的修复版,并重启所有常驻 worker。暂时不能升级的,把下面几项写进 php.ini 或 FPM 池(必须请求解析前生效,ini_set() 和 .user.ini 都来不及):

session.upload_progress.enabled = Off

memory_limit = -1            ; 用 php_admin_value 锁死,别让应用改回去

post_max_size = 8M           ; 需要上传的业务用 32M

fatal_error_backtraces = 0   ; 仅 PHP 8.5

不要用 RLIMIT_AS / RLIMIT_DATA 代替内存限制,它制造的底层分配失败正好踩回漏洞路径;关掉 display_errors、降低 error_reporting 也防不住第二个漏洞,诊断信息在你看到它之前就已经读到脏状态。WAF 侧拦截含 PHP_SESSION_UPLOAD_PROGRESS 的 multipart 请求,并限制字段名长度与 multipart 分段、头部数量(含无有效 Content-Length 的请求)。

六、判断是否已经被拿下

成功利用不一定会让 worker 崩溃,甚至可能返回 200,所以要三层信号关联看:

一旦对上了,先断网隔离、保全日志和内存现场,不要急着重启——重启会把证据一起清掉。

这次事件被多方拿来和 Log4Shell 类比,区别在于:Log4j 你可以换掉,PHP 你换不掉。用共享主机的站长只有一条路:向服务商索要确切的 PHP 包版本,“我们已知悉”不算答案。另外别乱跑网上流传的“PHP2Shell 一键修复脚本”和 EXP,那是二次中毒的捷径。

相关文章

标签:

A5创业网 版权所有