找回密码
立即注册
搜索
发回帖 发新帖

6419

积分

0

好友

784

主题
发表于 5 小时前 | 查看: 4| 回复: 0

补丁原定 10 月 22 日发,因为利用信息提前流出,被硬生生提前到了北京时间 10 月 21 日 22:00。这篇只讲清楚发生了什么、坑在哪、你现在该做什么。

一句话事件

10 月 20 日,Hacker News 一个匿名帖把 PHP Core 两个远程代码执行漏洞捅了出来,编号 CVE-2026-109618 和 CVE-2026-109619,PHP 官方给出的 CVSS v4.0 评分都是 9.2(Critical)。社区把这组漏洞统一称为 PHP2Shell。

watchTowr 当天确认泄露内容属实,并说已经复现了其中至少一个;长亭在 PHP 8.5.11 + Apache 2.4.68 环境下 3/3 稳定打出 SIGSEGV。截至发稿,公开渠道还没有在野利用报告,但 PHP2Shell 的演示视频已经在外网传开了。

k_firsov 的 X 原帖截图如下:

k_firsov在X平台发布PHP2Shell漏洞泄露预告的推文截图

随后有安全研究员基于泄露信息成功完成了 RCE,完整利用过程见下图:

PHP2Shell工具在终端执行远程命令并在浏览器成功回显的截图

PHP 官方新闻档案也提前放出了紧急安全更新预告:

PHP官方新闻档案页面中关于10月21日紧急安全补丁的公告截图

漏洞到底是什么

根因目前指向 PHP Core 的 session 上传进度处理机制,也就是 session.upload_progress 这条路径。

长亭的分析大致是这样:PHP 在解析 multipart/form-data 请求时,会在上传过程中反复切换会话状态。在特定请求顺序和会话状态组合下,某个内存对象会在后续处理代码还没跑完之前就被提前释放,上传进度更新逻辑随后又回头访问它——典型的 UAF(释放后重用)。

  • release 版本:进程直接崩(SIGSEGV)
  • debug / ASAN 版本:能看到引用计数异常
  • 完整利用链跑通后,就是任意代码执行

关键在于,这段逻辑跑在 PHP 解释器层。应用代码(WordPress、Laravel 那些)的入口函数还没开始执行,请求就已经被解析完了。所以这不是某个插件、某个 CMS 的洞,而是运行时自己的洞。

为什么这次动静这么大

三个信号叠在一起,圈内直接拿它跟 Log4Shell 比:

1. 跨部署方式通吃。 泄露演示里,Apache mod_php 和 PHP-FPM 两种最主流的跑法都被打穿。也就是说,“我们用的是 FPM,跟 mod_php 不一样”这种自我安慰不成立——洞在两边共用的 PHP 核心代码里。

2. 版本跨度夸张。 演示横幅标的是 PHP ≥ 5.4.0,等于近 12 年的版本全在射程内。官方还没正式确认这个范围,但泄露信息和 watchTowr 的口径一致。目前官方仍在维护的分支只有 8.2 / 8.3 / 8.4 / 8.5,PHP 8.2 今年 12 月 31 日也要 EOL。公网能探测到、愿意暴露 PHP 版本的主机大约 150 万台,其中 59% 跑的是 8.1 及更老的分支——这些机器官方大概率不会给补丁。

3. 演示效果直接。 流出的 PHP2Shell 视频里,输入目标 URL 和要执行的命令,结果直接回显,权限是 Web 服务默认的 www-data。覆盖了 WordPress、Drupal、Joomla、Magento、Laravel、Symfony、MediaWiki、phpBB、WHMCS 九个主流应用/框架。www-data 听着不像 root,但读数据库配置、写 WebShell、拿站点数据、当内网跳板,足够了。

影响谁

凡是跑 PHP 的都先自查,别只盯着网站:

  • 公网 Web 服务器、共享主机、主机面板(宝塔、Plesk 这类,面板 PHP 和系统 PHP 是两套,都要查)
  • 电商、论坛、CRM、内部管理系统
  • CLI 脚本、crontab 任务、队列 Worker——它们可能跑着另一个版本的 PHP
  • 容器里的 PHP 实例

现在该做什么

补丁发布前(今晚 22:00 之前)

  1. 盘资产:把所有 PHP 实例的版本、部署方式、安装来源列出来。发行版自带、面板集成、第三方源、容器镜像、自行编译,补丁渠道都不一样。

  2. 临时关上传进度:在 php.ini、.user.ini 或 .htaccess 里加一行:

    session.upload_progress.enabled = Off

    然后 reload PHP-FPM 或重启 Apache。如果业务没用到上传进度条,这一步能切断目前已被复现的那条触发路径。

  3. 顺手打开 session.use_strict_mode = 1,降低攻击者指定 session ID 的空间。

  4. WAF / 反代层对 multipart/form-data 请求加限流,重点保护不需要上传的接口。

  5. PHP 8.1 及更老的 EOL 版本,该下线的下线,该隔离的隔离,别指望官方补丁。

补丁发布后

  1. 对照官方公告确认受影响版本和修复版本,按官方渠道升级。
  2. 必须重启进程。二进制换了,内存里跑的还是旧代码:mod_php 重启 Apache,PHP-FPM 重启对应进程池,常驻 CLI 逐个重启。别拿 php -v 的输出当修复完成的依据。
  3. 容器环境重新打镜像,全量滚动更新,只重启容器没用。
  4. 留好 Web 服务器和 PHP 的异常日志,盯 worker 崩溃、异常子进程、异常文件写入。

这些措施,别浪费时间

  • disable_functions / open_basedir:脚本层限制,洞在解释器原生代码里,执行流在进函数调用前就被劫持了,没用。
  • 封 SSH 端口:攻击入口是 80/443,封了反而挡住自己应急。
  • 指望 WAF 通用规则拦 0day:能当辅助,别当主力。

时间线

时间(北京) 事件
10 月 20 日 Hacker News 匿名帖泄露两个 PHP RCE;PHP 官方发预告
10 月 20 日晚 PHP2Shell 利用演示视频在外网流传
10 月 21 日 watchTowr、长亭等机构相继确认并复现
10 月 21 日 22:00 PHP 官方发布安全补丁(原定 22 日,因泄露提前)

最后一句

细节还没完全落地,受影响版本清单和精确触发条件要等今晚官方公告。但资产盘点、临时缓解、升级窗口这三件事,今晚之前就该做完——别等补丁发出来了才开始找自己机器上跑的是哪个 PHP。后续更细的技术分析和讨论,可以到 云栈社区 一起跟进。

参考




上一篇:2026美国网络安全岗位招聘量暴跌26%,AI安全工程师激增268%
下一篇:AI Agent 开始碰短信和信用卡,权限出错谁来买单?
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-10-22 06:36 , Processed in 0.064464 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表