我们的 AI 引擎 Neutron 在加州大学伯克利分校的 CyberGym 基准测试中取得了 97.1% 的成绩。 了解更多

深度解析

深度解析

PHP2Shell:PHP RCE 漏洞引发数百万次利用尝试(CVE-2026-109618)

CISA 于 10 月 26 日将两个 PHP2Shell 漏洞加入已知遭利用漏洞目录,联邦机构修补截止日期为 10 月 29 日:这是 PHP 引擎中无需身份验证的 RCE,已在 8.5.12、8.4.27、8.3.36 和 8.2.35 中修复。

要点速览

PHP2Shell 是研究人员和厂商对 PHP 请求生命周期中一对引擎级远程代码执行漏洞的称呼。

  • PHP 引擎自身的两个内存安全漏洞,CVE-2026-109618(内存不足处理破坏请求状态)和 CVE-2026-109619(过期全局状态残留至下一请求),让未经身份验证的远程攻击者以 Web 工作进程身份执行代码。漏洞位于应用之下:干净的 WordPress、Drupal 或 Joomla 安装同样暴露。
  • 每个处理 Web 请求的未修补 PHP 安装都受影响:PHP-FPM、Apache mod_php、php-cgi、FrankenPHP 和 LiteSpeed。PHP 安全团队将两者评为严重,CVSS v4.0 为 9.2,并确认在默认限制下,可通过 HTTP 对 mod_php 实现完整远程代码执行。
  • 利用尝试在披露后数小时内激增,到 10 月 22 日已达数百万次(Cloudflare)。Amazon 的 MadPot 蜜罐在 10 月 17 日就看到了首次尝试,比披露早四天。
  • CISA 于 10 月 26 日将两者加入已知遭利用漏洞(KEV)目录,联邦机构修补截止日期为 10 月 29 日。
  • 10 月 24 日,Adel Karimi 确认针对蜜罐的远程代码执行:“现在已经确认是具备可用内存泄露能力的 RCE,而不只是崩溃后出现一个可疑进程。”公开利用代码于 10 月 25 日赢得 StealMyBitcoin 挑战。截至 10 月 27 日,尚无真实受害者失陷得到公开确认(Sophos、Previdian、Wordfence)。
  • 立即更新至 PHP 8.5.12、8.4.27、8.3.36 或 8.2.35;KEV 收录使此事有了明确截止日期。PAN-OS 10.2、11.1、11.2、12.1 和 12.2 内嵌受影响的 PHP;Palo Alto Networks 已发布 11 条版本线的热修复,预计其余将在 10 月 30 日前发布。如果今天无法更新,以下缓解措施只能争取时间。

我是否受影响?

如果以下两项都成立,您就受影响:

  • 安装运行 PHP 5.4 或更高版本,并通过 PHP-FPM、Apache mod_php、php-cgi、FrankenPHP 或 LiteSpeed 处理 Web 请求。从不解析请求体的纯 CLI 安装不在已演示的路径内。
  • 对于 PHP 8.2 至 8.5,版本早于所属分支的 2026 年 10 月 21 日安全发布。PHP 7.4、8.0 和 8.1 已停止支持,原则上受影响;安全团队为它们发布了最小化源码回移补丁。根据 Sysdig,PHP 5.4 至 7.3 原则上也受影响,但 PHP 项目没有提供回移补丁。

即使应用从不调用请求体 API,也不要假定自己安全:已确认的 mod_php 利用在请求启动期间触发,早于任何应用特定代码的执行。

检查主机及每个容器和 CI 镜像中运行的版本:

php -v
php -i | grep -E '^(memory_limit|post_max_size|session.upload_progress.enabled)'
apachectl -M 2>/dev/null | grep -i php      # Apache mod_php loaded?
php-fpm -v                                  # FPM pool version
docker ps --format '{{.Image}}' | sort -u   # images behind running containers
docker exec <container-name> php -v         # PHP inside a running container
docker images | grep php                    # locally pulled PHP image tags

对于 CI,检查流水线实际构建的镜像,例如 docker run --rm <registry>/<image>:<tag> php -v。

Palo Alto Networks 将 PAN-OS 10.2、11.1、11.2、12.1 和 12.2 列为因内嵌 PHP 而受影响。暴露仅涉及管理平面:HTTPS Web UI 和 XML API。PAN-OS 在管理接口上,或任何附加了管理配置文件的数据平面接口上提供这些服务。GlobalProtect 门户和网关、Clientless VPN 及强制门户不受影响。

截至 10 月 27 日,已有十一条版本线发布热修复;完整列表见公告表格及下方时间线。其余九条版本线预计于 2026 年 10 月 27 至 30 日发布。Palo Alto 将自身产品影响评为高危,CVSS 为 8.7。其 Cortex XCORE SaaS 也曾受影响,已于 10 月 21 日修复。

分支 受影响版本 修复版本
PHP 8.5 8.5.0 至 8.5.11 8.5.12
PHP 8.4 8.4.0 至 8.4.26 8.4.27
PHP 8.3 8.3.0 至 8.3.35 8.3.36
PHP 8.2 8.2.0 至 8.2.34 8.2.35
PHP 7.4、8.0、8.1 全部(已停止支持) PHP 安全团队已发布源码回移补丁
PHP 5.4 至 7.3 全部(已停止支持,原则上受影响) PHP 项目未提供;迁移至受支持分支

暴露情况来自实际测量,而非估算。Qualys 分析了 12,000 家客户的匿名数据:

  • 披露后 12 小时内,仅 199,000 个 PHP 实例得到修补。
  • 约 1.1 亿个实例,即 Qualys 测量的 PHP 实例的百分之 71,运行已停止支持的 PHP 5.4 至 8.1,永远不会获得厂商补丁。
  • 另有 4400 万个实例运行受支持分支,但尚未应用修复。

Censys 在公开仪表板中跟踪这种修补滞后在互联网暴露服务上的表现,截至 10 月 27 日,统计到仍运行受影响版本的 PHP 服务超过 3251 万个。

如何修复?

更新至所在分支的修复版本。优先使用发行版软件包,以保持 SAPI 集成一致:

# Debian and Ubuntu (upgrades every installed php* package and Apache's mod_php)
sudo apt update
sudo apt install --only-upgrade $(dpkg -l 'php*' 'libapache2-mod-php*' | awk '/^ii/ {print $2}')
# RHEL, CentOS Stream, Rocky, Alma, Fedora
sudo dnf update 'php*'
# Containers: rebuild on a fixed tag and recreate the service
docker pull php:8.4.27
docker compose build --pull && docker compose up -d

更新后重启所有 PHP 工作进程和 Web 服务器。如果您从源码构建或运行已停止支持的分支,请使用安全团队提供的 7.4、8.0 和 8.1 回移补丁,或迁移至受支持分支。

如果暂时无法更新,PHP 公告中的以下措施可减少特定攻击路径。没有任何一项能让安装完全安全,公告对此有明确说明。

对于 CVE-2026-109618,移除可控的内存限制,并缩小输入面:

; PHP-FPM pool (for example www.conf); php_admin_value stops apps from overriding it
php_admin_value[memory_limit] = -1
php_admin_value[post_max_size] = 8M   ; use 32M if you need file uploads

对于 Apache mod_php,在 Apache 配置中设置相同值:

php_admin_value memory_limit -1
php_admin_value post_max_size 8M

另外:

  • 保持 upload_max_filesize 小于 post_max_size。
  • 在 Web 服务器或代理上限制解码后的请求大小、输入字段数、multipart 分段数、请求头数和嵌套深度,包括没有可用 Content-Length 的请求。

不要使用 RLIMIT_AS 或 RLIMIT_DATA:强制 mmap() 失败会直接触达易受攻击的 bailout 路径。

对于 CVE-2026-109619,在 php.ini 中设置:

session.upload_progress.enabled = 0
; PHP 8.5 only:
fatal_error_backtraces = 0

在 PHP-FPM 池中改用池配置语法,然后重启工作进程:

php_admin_value[session.upload_progress.enabled] = 0
; PHP 8.5 only:
php_admin_value[fatal_error_backtraces] = 0

还有三个步骤:

  • 不要依赖 ini_set()、.user.ini、error_reporting、@ 或 display_errors=Off;公告指出,消费状态的代码会在这些设置生效之前运行。
  • 删除按请求应用的无效或已弃用 INI 设置,并修复攻击者可触发的致命错误和执行超时。
  • 如果性能允许,考虑使用 pm.max_requests = 1。

该 FPM 设置仅有助于防范 CVE-2026-109619,因为它阻止第二个请求到达同一工作进程;它对 CVE-2026-109618 无效,后者在单个请求内完成触发和状态消费。

根本原因是什么?

两个漏洞都源于 PHP 的 bailout 机制,即从引擎深处中止请求的 longjmp(),与长生命周期工作进程在请求之间保留的状态相结合。

CVE-2026-109618:PHP 遇到内存不足(OOM)错误时,使用 longjmp() 中止请求。请求内存有时尚未完全初始化就已经可访问。如果此时分配失败,公告指出:“PHP 未正确处理这次提前退出,使请求内存处于无效状态。失败的分配不必与这块无效内存有关。请求关闭过程随后可能读取它,或依据它进行分支判断。”

攻击者不需要真正耗尽系统内存。multipart 解析中的几个特殊行为,使单个 HTTP 请求可以按需耗尽 memory_limit:

  • 没有可用 Content-Length 的 multipart 请求体可以通过初始 post_max_size 检查,同时持续输入数据。
  • 单个分段可携带不受数量限制的请求头,其内存表示远大于线上传输格式。
  • 空文件控件会创建元数据数组,却不计入 max_file_uploads。

CVE-2026-109619:工作进程保留的全局状态(错误、会话、对象和扩展状态)会临时指向请求拥有的内存,必须在释放请求堆前重置。两种故障模式破坏了这种重置:

  • 致命错误,包括内存耗尽或 Maximum execution time exceeded,可能在重置之前放弃某项操作。
  • 较晚出现的非致命诊断可能重新填充已清除的错误状态。

随后堆被释放,但工作进程的全局状态仍引用它。

两个已确认的消费路径会在下一请求初始化前读取此过期状态:

  • 应用 INI 设置期间触发的警告。在 mod_php 中,.htaccess 和 Apache php_value 在 php_request_startup() 之前运行。
  • 会话上传进度处理,它会在正常会话初始化之前访问会话状态。此功能默认开启,无需调用 session_start()。

如何利用?

CVE-2026-109618 的攻击是一个特制 multipart 请求,在启动期间耗尽 memory_limit。分配失败导致请求内存处于半初始化状态时发生 bailout,随后 mod_php 的关闭过程会在任何应用代码运行之前读取该无效状态。

已有公开 PoC,但它针对 StealMyBitcoin 挑战的 Alpine 构建进行了校准,在其他构建上会中止。目前没有公开发布的利用代码能开箱即用于生产构建。VulnCheck 记录了其自身可用于生产配置 x86-64 系统的利用链,下文会介绍。攻击者基础设施上也存在可用工具。已确认的 mod_php 路径逐步如下:

  1. 攻击者发送特制 multipart 请求,在请求启动期间耗尽 memory_limit:没有可用 Content-Length,并带有一个请求头数量极大的分段,或通过空文件控件创建不计入 max_file_uploads 的元数据数组。
  2. 内存分配失败,PHP 在请求内存半初始化时通过 longjmp() 触发 bailout。
  3. 即使启动失败,mod_php 仍无条件执行请求关闭过程,因此关闭过程会在任何应用代码运行之前处理无效状态。
  4. 经过策略性布置的堆,将对无效状态的读取和分支判断变成控制流劫持,攻击者遂以 Web 工作进程账户身份执行代码。

对于 CVE-2026-109619,攻击需要同一工作进程上的两个请求:

  • 生产者与消费者:生产者请求公开请求拥有的状态,然后因致命错误终止(OOM、超时、解析失败)。消费者请求在初始化重置之前访问过期状态。
  • 已演示的最强情况:启用 fatal_error_backtraces 时发生致命错误,会存储关闭过程从未重置的回溯状态。
  • 会话路径:上传提前初始化会话和解码器状态,OOM 中断了重置,下一请求的上传进度处理便消费悬空指针。

两家厂商记录了可用工具:

  • SOCRadar:在暴露的攻击者服务器上发现一个自称适用于 mod_php 下 PHP 8.4.26 的一键利用工具。它回收工作进程,通过会话 cookie 泄露地址以绕过 ASLR,并利用会话上传进度执行 shell 命令。该服务器还存放了针对约 20 个站点的筛选脚本,截至 10 月 22 日,没有站点满足利用前提。
  • VulnCheck:将两个 CVE 串联,通过内存泄露绕过 ASLR,并在启用 ASLR、采用生产建议设置 display_errors=off 的 x86-64 PHP 8.4.26 上实现代码执行。VulnCheck 表示,据其所知,没有其他公开或商业利用能做到同样的事。

CVE-2026-109618 的利用链如何运作?

mod_php 上从 OOM 到代码执行的完整顺序如下:

flowchart LR A["特制 multipart 请求
无 Content-Length,分段头数量巨大"] --> B["请求体解析在启动时
耗尽 memory_limit"] B --> C["longjmp() bailout 使请求内存
停留在半初始化状态"] C --> D["mod_php 仍然执行
请求关闭过程"] D --> E["关闭过程读取无效状态
并据此进行分支判断"] E --> F["堆控制带来以 Web 工作进程
身份执行代码的能力"] style C fill:#f8d7da

攻击者能做什么?

成功利用可让未经身份验证的远程攻击者以 Web 工作进程权限执行代码:读取 API 密钥、数据库凭据、环境变量及工作进程可访问的文件,并如 VulnCheck 所述,获得进一步推进攻击的立足点。所需条件包括:

  • 能通过网络访问 PHP 端点,除此之外别无要求。无需身份验证或用户交互。
  • 将 CVSS 攻击复杂度提升为高的条件:工作进程跨请求存活;对于 OOM 路径,还需要攻击者可达到的有限 memory_limit,或能被迫失败的内存分配。
  • 对于 CVE-2026-109619,配对请求必须落在同一工作进程上;根据公告,增加工作进程和回收频率会降低可靠性,但无法消除该条件。

哪些厂商受影响?

内嵌 PHP 的产品继承了这一暴露,厂商公告名单也已大幅扩展。Palo Alto Networks 确认 PAN-OS 10.2、11.1、11.2、12.1 和 12.2 因内嵌 PHP 而受影响。它将自身产品影响评为高危,CVSS 为 8.7,截至 10 月 27 日已有 11 条版本线发布热修复,其余预计于 2026 年 10 月 27 至 30 日发布。

除 PAN-OS 外,明确提及 PHP2Shell 影响的公告现已覆盖数十家厂商,包括:

  • 网络和安全:Arista Networks、F5、Huawei、NETGEAR、SonicWall
  • 基础设施和存储:Broadcom、Dell、HPE、IBM、QNAP、Synology、Veeam
  • 软件和 SaaS:Citrix、Ivanti、Okta、Salesforce、Splunk

Drupal、Craft CMS 和 WordPress 等 CMS 项目也发布了公告。

在工业领域,SecurityWeek 报道了以下状态:

  • Schneider Electric 修补了 EcoStruxure Security Expert 1.48.4.0,以及 ProLeiT LINEoptimize 和 EcoStruxure Control Engineering 产品。
  • Siemens 将 Ruggedcom APE1808 列为因内嵌 PAN-OS 而受影响,并发布了不受影响产品列表。
  • 一款内嵌 DokuWiki 的 ABB 制造执行系统被标记为受影响。
  • B&R 将截至 R4.4-65 的 APROL 发行版列为受影响。
  • Rockwell Automation 和 Johnson Controls 仍在评估。

如果您运营这些厂商的设备,验证修补状态现在意味着检查其公告,而不只是检查 PHP 版本。

修复为什么有效?

一个提交 3584a98bda(“避免 bailout 导致的状态破坏”,编写于 2026 年 10 月 18 日,10 月 21 日合并)同时修复两个 CVE。其提交信息准确列出了两项变化:

- 将 OOM 时的 bailout 替换为 UnwindExit
- 正确重置启动期间可能访问的各种全局状态

对于 OOM 路径,补丁移除了以 longjmp() bailout 响应 OOM 的方式。软 OOM 现在会被记录,并推迟到下一个 VM 安全点处理:

EG(delayed_oom).message = zend_string_init(buf, strlen(buf), /* persistent */ true);
GC_MAKE_PERSISTENT_LOCAL(EG(delayed_oom).message);
zend_string_addref(script_filename);
EG(delayed_oom).filename = script_filename;
EG(delayed_oom).lineno = script_lineno;
EG(delayed_oom).state = ZEND_OOM_STATE_PENDING;
zend_atomic_bool_store_ex(&EG(vm_interrupt), true);

关闭过程不再能观察到部分初始化的状态,因为 OOM 会在执行器状态一致的位置处理。补丁还在 memory_limit 之上增加了硬内存限制:默认是 memory_limit 的两倍;如果该限制超过 1 GiB,则为 memory_limit 加 1 GiB。若分配将越过此值,进程会立即通过 _exit() 结束,而非展开执行栈。

对于过期状态路径,补丁在每个请求结束时重置请求拥有的全局状态。下一请求在正常初始化之前读取的任何状态,都不再指向已释放内存。例如,执行器关闭现在会清除错误和异常状态:

/* may be used by zend_error_zstr_at before init_executor */
EG(record_errors) = false;
EG(num_errors) = 0;
EG(errors) = NULL;
EG(error_handling) = EH_NORMAL;
EG(exception) = NULL;

修复完整覆盖已演示的路径,公告指出,更广泛的状态重置属于预防措施:重置还覆盖其他错误、异常、对象和扩展状态类别,但它们是否可达,取决于各应用的生产者和消费者。

如何检查是否已遭入侵?

关注日志和会话文件中的以下五类信号。任何一项都值得调查,且都不需要访问应用代码。

  • 在 Web 服务器和 PHP-FPM 日志中:成批缺少 Content-Length 或其值不可用的 multipart 请求;从未到达应用代码的请求导致工作进程反复段错误或被 OOM 终止;攻击者可访问路由上出现 Maximum execution time exceeded。
  • PHP 会话文件包含意外代码:VulnCheck 观察到一个位于中国的 IP 试图通过服务端会话文件投放 Web shell。
  • multipart 请求中的会话上传进度字段:赢得 StealMyBitcoin 的 PoC 在上传进度解析中触发 OOM 阶段,已观察到的扫描探测也使用这些字段。因此,session.upload_progress.enabled = 0 是已证实与实际攻击路径相关的缓解措施。
  • Mirai 家族的后续流量:Sophos 将尝试与 Potassium 僵尸网络变种关联,其中包括连接 134.199.154.64 的 TCP 50792 端口,以及对 thunder.godofthunder.st 的 DNS 查询;Wordfence 发布了其跟踪的源 IP。
  • Web 工作进程枚举环境变量和凭据,多家厂商将此描述为这轮扫描的目标。

截至 10 月 27 日,尚无真实受害者失陷得到公开确认。利用证据在 10 月 24 日和 26 日得到加强,但已确认演示针对的是配置为可利用的目标,并非受害者。

Adel Karimi 于 10 月 24 日在其单工作进程 mod_php 蜜罐上验证了完整远程代码执行。他报告称:“解码后的 cookie 转储为 800 KiB,使用公开利用代码的偏移从该转储推导出的函数地址,出现在后续执行载荷中。”

StealMyBitcoin 挑战设置了一个刻意保留漏洞的 PHP 8.4.26 目标,奖金为 0.0251 BTC,于 10 月 25 日在开始 19.28 小时后被攻破。公开 PoC 泄露堆地址和代码地址、绕过 ASLR,并伪造 HashTable,在最多 20 个请求内到达 zif_system。其偏移针对挑战的 Alpine 构建校准,在其他构建上会在代码地址泄露阶段中止。

Palo Alto Networks 的 Unit 42 于 10 月 25 日报告,一个欧洲政府实体通过这些漏洞遭到入侵,随后在同一天撤回了这一归因。该公司告诉 The Hacker News,它看到了“针对某欧洲政府机构的攻击,在一个易受攻击的 PHP 应用上下文中执行”,但“无法确认初始访问与特定 PHP2Shell CVE 存在关联”。

时间线

  • 自 2012 年起:根据 Sysdig 分析,易受攻击代码路径从 PHP 5.4 起就已存在。
  • 2026-10-17:Amazon MadPot 蜜罐网络事后观察到的首次利用尝试,比披露早四天。
  • 2026-10-20:PHP 预告将于 10 月 21 日 14:00 UTC 发布严重安全更新,两个漏洞的 CVSS v4.0 均为 9.2。
  • 2026-10-21:PHP 发布 8.5.12、8.4.27、8.3.36 和 8.2.35,以及公告 GHSA-w8hw-w9fx-j79w 和 GHSA-6wmf-4rv5-p3rp。Previdian 在 13:05 UTC 记录首次利用尝试;Cloudflare 在发布后 45 分钟内统计到数万次尝试,到 10 月 22 日早些时候已达数百万次。Palo Alto Networks 发布 PAN-OS 公告。
  • 2026-10-22:英国确认预防性下线了 32 项数字服务,NCSC 发出约 50,000 份警告;Sophos 记录了公开概念验证及 Potassium 的尝试。
  • 2026-10-23:SOCRadar 记录攻击者服务器上的一键利用工具;Censys 统计仍有超过 3440 万个 PHP 服务易受攻击;PHP 针对相关且仍未修复的 CVE-2026-115560 发布信息公告,建议在下一个常规版本发布前使用 session.upload_progress.enabled=0。
  • 2026-10-24:Palo Alto Networks 更新公告,给出各分支热修复预计于 10 月 27 至 30 日发布;Adel Karimi 确认单工作进程 mod_php 蜜罐上的完整远程代码执行,包括可用的内存泄露,以及根据泄露地址构造并执行的载荷。
  • 2026-10-25:本文首次发布。Palo Alto Networks 发布前三个 PAN-OS 热修复(10.2.18-h13、11.1.16-h4、11.2.10-h16);Unit 42 报告一个疑似通过这些漏洞失陷的政府实体,并在当天撤回;刻意保留漏洞的 PHP 8.4.26 目标 StealMyBitcoin 挑战在 19.28 小时后,被一个可绕过 ASLR 的公开 PoC 攻破。
  • 2026-10-26:再发布四个 PAN-OS 热修复(11.1.4-h38、11.1.6-h40、11.1.10-h36、11.1.13-h16);CISA 将 CVE-2026-109618 和 CVE-2026-109619 加入 KEV 目录,联邦机构截止日期为 10 月 29 日。
  • 2026-10-27:Palo Alto Networks 发布 10.2.13-h27、10.2.16-h12、12.1.7-h11 和 12.2.4-h1,已发布版本线增至十一条;oss-security 讨论显示,运行自定义 PHP 5.4 至 5.6 构建的运营方正在自行回移修复;本文更新 KEV 收录及厂商公告列表。

常见问题

PHP-FPM 与 mod_php 的暴露程度相同吗?

两者都受影响,但方式不同。mod_php 是已确认无需应用特定前提的目标,因为即使启动失败,它仍会执行请求关闭过程。FPM 在启动失败时退出子进程,这阻断了该特定顺序;但公告验证了另一条 FPM 路径,即在应用执行期间公开状态,再由后续上传进度请求消费,源码分析也表明 FPM 仍可能受到 OOM 路径影响。

禁用错误显示或日志能保护我吗?

不能。公告明确指出,在 PHP 决定是否报告、显示或记录警告之前,以及 error_reporting、@ 或 display_errors 生效之前,就已经访问全局状态。这些设置只改变您看到什么,不改变引擎如何处理过期状态。

我的站点运行干净且最新的应用代码,安全吗?

不安全。漏洞位于引擎,因此应用层的良好维护不会改变暴露情况。Sysdig 指出,任何 WordPress、Drupal 或 Joomla 站点都暴露,无论代码质量如何;Censys 于 10 月 23 日统计仍有超过 3440 万个 PHP 服务易受攻击。

第三个漏洞 CVE-2026-115560 呢?

它确实存在,但范围较窄,截至 10 月 27 日仍未修复。利用要求应用在配置中将 session.serialize_handler 设为 php_binary 或 php_serialize,并在运行时调用 session_start() 之前,通过 ini_set() 将其切回 php,同时会话上传进度仍开启。PHP 将在下一个常规发行版中修复;在此之前,保持 session.upload_progress.enabled=0,这也是 10 月 21 日公告针对 CVE-2026-109619 已经建议的设置。

在野环境中有可用利用代码吗?

应按漏洞已经遭到利用处理。CISA 于 10 月 26 日将两者加入 KEV 目录,这代表它确认正在发生利用;Karimi 的蜜罐于 10 月 24 日记录了完整 RCE。尚无真实受害者失陷得到确认。

VulnCheck 的利用链可用于生产配置的 x86-64 系统。StealMyBitcoin 的获胜利用针对的是刻意保留漏洞、偏移经过校准的构建。应按各自实际证明的能力理解它们,而非将其视为受害者数量,并在 KEV 截止日期前修补。

如果 PHP 仅用于 CLI 脚本,还需要修补吗?

已演示的攻击路径需要请求体解析,因此纯 CLI 安装不在其中。仍应更新:修复版本包含状态重置加固,而且 CLI 主机以后常会增加 Web 端点。

盘点 PHP 暴露情况

使用 Ostorlab Attack Surface Discovery 盘点您拥有的面向互联网的域名和主机。将其 PHP 版本及设备公告与上述受影响范围对照,包括已停止支持的分支和内嵌 PHP,然后验证每个实例的补丁。

参考资料

  • PHP 安全公告,“安全公告:严重远程代码执行漏洞,请立即更新”,2026 年 10 月 21 日,含两个 CVE 的描述和不完整临时措施列表:https://www.php.net/archive/2026.php#2026-10-21-5 (核查于 2026 年 10 月 25 日)
  • GHSA-w8hw-w9fx-j79w,“通过 OOM 状态破坏实现 RCE”,含完整 OOM 策略、SAPI 受影响情况及补丁说明:https://github.com/php/php-src/security/advisories/GHSA-w8hw-w9fx-j79w (核查于 2026 年 10 月 25 日)
  • GHSA-6wmf-4rv5-p3rp,“通过过期全局状态实现 RCE”,含生产者与消费者模型、已确认情况和缓解措施:https://github.com/php/php-src/security/advisories/GHSA-6wmf-4rv5-p3rp (核查于 2026 年 10 月 25 日)
  • CVE-2026-109618 记录,含 CVSS v4.0 9.2 向量及致谢(报告者为 Calif.io 的 Ryan、Wiz、OpenAI;修复开发者为 Arnaud Le Blanc、Ilija Tovilo 和 Jakub Zelenka):https://cveawg.mitre.org/api/cve/CVE-2026-109618 (核查于 2026 年 10 月 25 日)
  • CVE-2026-109619 记录,含 CVSS v4.0 9.2 向量:https://cveawg.mitre.org/api/cve/CVE-2026-109619 (核查于 2026 年 10 月 25 日)
  • 修复提交 3584a98bda,“避免 bailout 导致的状态破坏”,替换 OOM bailout,并重置启动时访问的全局状态:https://github.com/php/php-src/commit/3584a98bda (核查于 2026 年 10 月 25 日)
  • PHP 关于会话上传进度和 CVE-2026-115560 的信息公告,2026 年 10 月 23 日:https://www.php.net/archive/2026.php#2026-10-23-1 (核查于 2026 年 10 月 25 日)
  • CISA KEV 目录:CVE-2026-109618 和 CVE-2026-109619 于 2026 年 10 月 26 日加入,截止日期为 2026 年 10 月 29 日,含联邦机构必须执行的措施及 BOD 26-04 引用:https://www.cisa.gov/known-exploited-vulnerabilities-catalog (2026 年 10 月 27 日通过目录 JSON 数据源核查)
  • The Hacker News,“CISA 确认两个可实现远程代码执行的 PHP2Shell 漏洞正在遭利用”,2026 年 10 月 27 日,含 Karimi 的蜜罐 RCE 引文、Censys 的 3251 万数据和扩展后的厂商公告列表:https://thehackernews.com/2026/10/cisa-confirms-active-exploitation-of.html (核查于 2026 年 10 月 27 日)
  • Adel Karimi 的 PHP2Shell 蜜罐证据报告,包括 10 月 24 日确认 RCE 的数据集:https://github.com/0x4D31/honeypot-data (通过 The Hacker News 和 SecurityWeek 引用,核查于 2026 年 10 月 27 日)
  • StealMyBitcoin 挑战网站,记录 10 月 25 日在 19.28 小时后被攻破和 0.0251 BTC 奖金,以及获胜公开 PoC 的阶段表和构建校准限制:https://stealmybitcoin.com/ 和 https://github.com/KillaBoi/StealMyBitcoin-PoC (核查于 2026 年 10 月 27 日)
  • SecurityWeek 关于工业厂商检查其产品是否受 PHP2Shell 影响的报道,2026 年 10 月 26 日,含 Schneider、ProLeiT、Siemens Ruggedcom、ABB、B&R、Rockwell 和 Johnson Controls 的状态:https://www.securityweek.com/industrial-vendors-check-their-products-for-php2shell-vulnerabilities/ (通过 The Hacker News 引用,核查于 2026 年 10 月 27 日)
  • oss-security 关于自行回移 PHP 5.4 至 5.6 的 CVE-2026-109618 补丁的讨论,2026 年 10 月 27 日:https://www.openwall.com/lists/oss-security/2026/10/27/1 (核查于 2026 年 10 月 27 日)
  • Palo Alto Networks 关于 CVE-2026-109618 和 CVE-2026-109619 对 PAN-OS 影响的公告,根据 10 月 27 日变更日志已有十一条版本线发布热修复,其余预计于 10 月 27 至 30 日发布:https://security.paloaltonetworks.com/CVE-2026-109618 (核查于 2026 年 10 月 27 日)
  • The Hacker News 报道 Unit 42 于 10 月 25 日撤回对政府实体失陷的归因,含发言人声明:https://thehackernews.com/2026/10/php2shell-exploitation-hits-government.html (核查于 2026 年 10 月 26 日)
  • Sophos 关于公开概念验证和未成功的 Potassium Mirai 变种尝试:https://www.sophos.com/en-us/blog/proof-of-concept-exploit-released-for-php-vulnerabilities-109618-109619 (通过 The Hacker News 2026 年 10 月 23 日报道引用:https://thehackernews.com/2026/10/php2shell-exploit-attempts-hit-millions.html, 核查于 2026 年 10 月 25 日)
  • VulnCheck 关于绕过 ASLR 的利用链及会话文件 Web shell 尝试:https://www.vulncheck.com/blog/php2shell-vulnerabilities (核查于 2026 年 10 月 25 日)
  • SOCRadar 关于攻击者服务器上发现的一键 mod_php 工具:https://socradar.io/blog/php2shell-exploit-tooling-attacker-server/ (核查于 2026 年 10 月 25 日)
  • Previdian 针对两个 CVE 的遥测,首次事件为 10 月 21 日 13:05 UTC,未观察到成功 RCE:https://previdian.com/CVE-2026-109618#telemetry (核查于 2026 年 10 月 25 日)
  • 英国议会记录,确认 32 项数字服务不可用,NCSC 发出约 50,000 份警告:https://hansard.parliament.uk/Lords/2026-10-22/debates/14CB4C6D-4E16-4377-8FCF-C2CF77BB5CC0/details (核查于 2026 年 10 月 25 日)
  • Censys 统计,截至 2026 年 10 月 23 日,易受攻击的 PHP 服务超过 3440 万个:https://php2shell.censys.com/ (核查于 2026 年 10 月 25 日)
  • SecurityWeek,“随着 ASLR 绕过利用出现,Mirai 僵尸网络运营者加入 PHP2Shell 攻击”,2026 年 10 月 23 日,引用 Qualys 对 12,000 家客户的修补分析(12 小时内修补 199,000 个实例;约 1.1 亿个实例,即百分之 71,运行已停止支持的 PHP 5.4 至 8.1;另有 4400 万个运行受支持但未修补的分支):https://www.securityweek.com/mirai-botnet-operators-join-php2shell-attacks-as-aslr-bypass-exploits-emerge/ (核查于 2026 年 10 月 26 日)
  • Qualys 对 2026 年 10 月严重安全发布的分析:https://blog.qualys.com/vulnerabilities-threat-research/2026/10/20/php-announces-critical-security-release-for-two-vulnerabilities (通过 SecurityWeek 2026 年 10 月 23 日报道引用)
  • Amazon 关于 10 月 17 日起针对 MadPot 蜜罐的利用尝试:https://thehackernews.com/2026/10/someone-tried-to-exploit-php2shell-4.html (核查于 2026 年 10 月 25 日)
  • Sysdig 关于易受攻击代码可追溯到 PHP 5.4(2012)的分析:https://www.sysdig.com/blog/php2shell-cve-2026-109618-and-cve-2026-109619-detecting-unauthenticated-remote-code-execution-in-php-core (核查于 2026 年 10 月 25 日)