【安全圈】PHP2Shell落地,防火墙管理口正在被打开

· 2026-10-29 19:00 · 20 阅读

安全圈 2026-10-29 19:00 江苏

10月26日午后学习通大面积宕机:登录排队、考试中断、作业丢失,官网502。客服称系统维护已完成,这已是一年内第3次

关键词

漏洞

核心事实:10 月 29 日,Palo Alto Networks 更新公告,确认有攻击者正在利用 PHP2Shell 打暴露在公网的管理接口。两个编号 CVE-2026-109618 与 CVE-2026-109619,PHP 官方 10 月 21 日已在上游修复。此前 Dream 披露,疑似中国背景的攻击者把这两个洞和 Linux 内核本地提权漏洞 Fragnesia 串起来,在美国、日本、台湾、韩国拿下 25 台服务器的 root。

🔍 这两个洞出在 PHP 自己的内存管理上

两个漏洞都归到 CWE-1325,内存分配顺序控制不当。听起来抽象,拆开看就两步。

CVE-2026-109618:PHP 用 longjmp() 处理内存耗尽(OOM)错误,借此退出当前上下文、中止请求处理。有些上下文没把这条路径算进去,在分配内存之前把请求内存留在了未初始化状态。随后的请求清理流程会读这块内存、或者基于它做分支判断。多种 OOM 策略可以稳定触发,最终走到远程代码执行。

CVE-2026-109619:PHP 有多种全局状态会临时指向请求内存。某些场景下,全局状态没被正确重置,或者重置之后又被重新填充。于是请求内存已经释放了,全局状态还指着它。后续请求在完全初始化之前读到这份陈旧状态,同样能被打成代码执行。

评分有出入,值得留意:Synology 与 PHP 官方口径是 CVSS 3.1 基础分 9.8,向量 AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H。The Hacker News 在报道里引用的评分是 9.2。两个数都算严重,但别在汇报里混用,尤其别拿 9.8 去套某个具体产品的定级。

⚙️ 从 PHP 到 root:多了一个内核洞

Dream 的记录里,攻击者拿 PHP2Shell 进来之后没停手,接上了 CVE-2026-46300,代号 Fragnesia,CVSS 7.8,Linux 内核本地提权。两个洞的组合效果写在 CISA 的入库说明里:可以植入 PHP Web Shell,并以 root 身份执行命令。

25 台服务器里,有 3 台属于美国某政府相关环境。Dream 的描述是:受影响的设备运行某大型厂商防火墙软件的特定版本,攻击者随后对 Active Directory 发起攻击,取回的痕迹证实了凭证提取和目录枚举。

Dream 没点名是哪家防火墙。但结合公告时间线,加上思科和 Fortinet 都没有报告自家产品遭恶意利用,外界基本把这批事件和 Palo Alto 对上了号。这个推断目前只有时间线支撑,没有厂商互相确认。

🎯 PAN-OS 的暴露面在哪

Palo Alto 说得很明确:只影响管理 Web 界面,包括 HTTPS Web UI 和 XML API 服务。数据面接口只有在挂了管理配置文件(management profile)的情况下才会被波及。

不需要特殊配置就能中招。风险最高的情况,是管理口的访问被允许来自公网 IP。

受影响版本横跨五个分支、20 个维护版本:PAN-OS 12.2 的 12.2.4-h1 之前;12.1 的 12.1.4-h13、12.1.7-h11、12.1.10-h3 之前;11.2 的 11.2.4-h23、11.2.7-h23、11.2.10-h16、11.2.13-h4、11.2.16-h1 之前;11.1 的六个维护版本;以及 10.2 的五个版本。部分修复的预计可用时间是 10 月 29 日和 30 日。

拿不到修复版本的,官方给的临时办法是把 MGT 口的入站流量绕到 DP 口上,比如在数据面接口启用管理配置文件来提供管理访问。这是权宜之计,不是修复。

📦 受影响的不只是防火墙

PHP 大约支撑着全球 70% 的网站。VirusTotal 的估算里,有超过 510 万台 PHP 主机暴露在公网,其中约 380 万台至少有一个端口对外开放。

NAS 是这个故事里容易被忽略的一环。风险是双份的:操作系统自带一份 PHP,Docker 容器里往往还有各自独立的一份。厂商修了固件,容器镜像里的 PHP 不会跟着更新。

各家进度差得不少。Synology 已经发了 PHP 8.2 与 8.4 的修复包,公告 SA-26:14 在 10 月 29 日做了第三次修订,把 DSM 6.2、7.0、7.1 也补进受影响产品表。QNAP 在 10 月 22 日的公告里承认 QTS 5.2.11 及更早、QTS 6.1.0、多个版本的 QuTS hero 与 QuTScloud,以及 Note Station 3 受影响,但没说补丁什么时候出。TerraMaster 表示还在调查测试,Asustor 的公告页把状态列为"进行中",Ugreen 无法确认。

已经停止支持的设备最麻烦。厂商生命周期结束,漏洞就永远不修。这类机器可以继续当本地存储用,但把管理界面或者其他服务直接暴露到公网,等于把已知漏洞挂在门口。

⏱️ 时间线里最扎人的一段

  • 10 月 17 日

    :亚马逊威胁情报在 madpot 蜜罐里记录到第一次利用尝试,比公开披露早四天。

  • 10 月 20 日

    :PHP 团队提醒管理员准备打补丁。编号、缓解建议等细节在此之前已经泄露到网上。

  • 10 月 21 日

    :补丁发布,8.5.12、8.4.27、8.3.36、8.2.35。Cloudflare、Hadrian、watchTowr、Patchstack 等多家都在披露前就看到了利用尝试,但都判定为失败。

  • 10 月 24 日

    :转折点。Perplexity 的 Adel Karimi 用蜜罐抓到一次真正成功的执行,目标是 Apache mod_php、PHP 8.4.26。响应里吐出一份 800 KiB 的解码 cookie dump,从中算出的函数地址出现在了后续载荷里。

  • 10 月 27 日

    :CISA 把这两个 PHP 洞加进 KEV,联邦机构限期 11 月 10 日之前完成修补。

  • 10 月 29 日

    :Palo Alto 确认管理接口正在被实际利用。

Karimi 自己加了一句限定:证据来自单 worker 的 mod_php 环境,这是对攻击方最有利的配置,不能拿来推断其他 worker 数量、其他 PHP 构建或其他应用上的成功率。这话说得克制,也正是这份记录可信的原因。

⚠️ 还有一个没补丁的

10 月 23 日,PHP 团队又披露了一个 RCE,编号 CVE-2026-115560,暂时没有补丁。利用条件比较苛刻:需要配置和应用代码形成一种不常见的组合。

在补丁出来之前,官方建议把 session.upload_progress.enabled 设为 0。这条配置在 PHP2Shell 补丁发布前也被推荐过,属于同一类攻击面的开关。

✅ 处置清单

  • 先查暴露面

    :管理口、Web UI、API 有没有对公网开。这一条比打补丁还优先,因为它是攻击面的前提。

  • 打补丁,然后重启进程

    :容器镜像要重新构建、重新部署。只更新不重启,跑的还是有漏洞的旧进程。

  • 打不了就断

    :在代理或防火墙层拦掉 Brotli 压缩请求(针对同期的 Node2Shell),或者直接关掉 PHP 的 Brotli 解码功能,直到能升级为止。

  • 查 Web Shell

    :这波攻击的落地痕迹就是 PHP Web Shell。有可疑文件的主机按失陷处理,凭证全部轮换。

  • 别只看 CVSS

    :9.8 还是 9.2 不改变处置动作。真正决定损失的是这个洞打进你环境之后能摸到多少东西。

   END  

阅读推荐

【安全圈】未发布的AI模型,把Chrome到Linux一路打穿

跳转微信打开

本文转载自微信公众号「安全圈」,查看原文。版权归原作者所有,如有侵权请联系删除。