当前位置:首页 >  站长 >  建站经验 >  正文

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

 2026-10-22 09:08  来源: 互联网   我来投稿 撤稿纠错

  一键部署OpenClaw

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 仅有源码回移

 

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

  • • 别只敲 php -v。CLI 和承载请求的 FPM、mod_php 常是两个二进制、两份 php.ini。放一个临时页面输出 PHP_VERSION、PHP_SAPI、php_ini_loaded_file(),读完马上删。
  • • 发行版号不等于上游号。Ubuntu 24.04 的修复包是 php8.3 8.3.6-0ubuntu0.24.04.13,页面上仍显示 8.3.6,按 8.3.36 去比对会误判成未修复。要查包版本和 changelog 里的 CVE。
  • • 面板与容器。宝塔显示的版本未必是真在跑的版本;改完必须重启 PHP 服务,只重启站点没用。Docker 要 docker build --pull 重建,缓存的基础镜像不带补丁。

五、升级与临时止血

唯一完整修复是升级到对应分支的修复版,并重启所有常驻 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,所以要三层信号关联看:

  • • 请求层:单个字段名达到兆级、表单体里带裸空字节的空字段名、异常 multipart POST。
  • • 日志层:Allowed memory size ... exhausted ... in Unknown on line 0(Unknown on line 0 说明挂在请求初始化阶段);Apache 密集出现 child pid exit signal Segmentation fault (11)。
  • • 进程层:php-fpm、httpd、apache2 派生出 sh、bash、curl、nc;Web 根目录与 /tmp、/var/tmp 出现陌生 php 文件;crontab 多出不认识的条目。

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

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

申请创业报道,分享创业好点子。点击此处,共同探讨创业新机遇!

相关标签
php漏洞

相关文章

热门排行

信息推荐