安全公告:PHP 核心高危漏洞(PHP2Shell)影响ZenDAS运行环境,请尽快升级补丁

2026-10-27 15:32:44
张玉洁
原创
133
摘要:PHP2Shell 漏洞影响ZenDAS服务端 PHP 运行环境,请按公告完成修复,暂时无法修复的可先采取临时缓解措施。9.x 及以下版本补丁尚在处理中,可先升级至最新已发布的 10.x 并应用修复;计划近期发布的 11.1 将内置修复后的 PHP 运行时。

2026 年 10 月 21 日,PHP 官方紧急发布安全更新,修复两个位于 PHP 解释器内核的高危漏洞(CVE-2026-109618、CVE-2026-109619,社区合称 PHP2Shell)。两个漏洞均可在未认证的情况下导致远程代码执行,CVSS v4.0 评分 9.2,为严重等级漏洞。攻击者无需登录、无需任何交互,即可在受影响的服务器上执行任意代码,也可能读取 PHP 工作进程内存中的密码、Token、密钥等敏感数据。

需要特别说明的是:本次漏洞不在ZenDAS自身代码中,而位于ZenDAS服务端所依赖的 PHP 运行时。 不同ZenDAS版本的 PHP 运行时来源不同:

  • ZenDAS 3.2 及以下版本:不使用 FrankenPHP,PHP 运行时由 Zbox(Apache + PHP)或用户自己的 Web 环境提供
当前情况 处理建议
正在使用ZenDAS 3.2 及以下版本,且运行时尚未修复 按本公告第四节下载并修补适配的 PHP 运行时文件。
暂时无法替换运行时文件或完成升级 先实施第五节临时缓解措施,并尽快安排后续修复。

一、受影响的部署

  • 使用未修复 PHP 运行时的ZenDAS服务端部署,包括源码包 / 手动部署和一键安装包;
  • 3.2 及以下版本(以 3.2 为例:Linux Zbox 内置 PHP 7.4.30、Windows Zbox 内置 PHP 7.4.30、Windows XAMPP 集成包内置 PHP 7.0.19),以及源码包部署在未修复的系统 PHP 上;
  • 受影响 PHP 版本:低于 PHP 8.2.35 的 8.2.x、低于 PHP 8.3.36 的 8.3.x、低于 PHP 8.4.12 的 8.4.x、低于 PHP 8.5.12 的 8.5.x;PHP 8.1 及更早分支已停止维护,同样受漏洞影响。

本次修复仅涉及服务端。ZenDAS浏览器不依赖 PHP 运行时,不属于本次漏洞影响范围,无需因本漏洞升级。

二、3.2 及以下版本修复方法

1. 版本与运行时现状

3.2 及以下版本PHP 运行时由安装包或用户自己的 Web 环境提供。

PHP 7.x 已停止维护,官方没有为 7.0 / 7.2 / 7.4 发布包含本次修复的正式版本。

您可根据实际情况选择以下处理方式:

Linux 一键安装包补丁

zendas-php2shell-php74zts-linux-amd64-universal-20261103-r2.tar.gz 

补丁说明

该补丁不修改ZenDAS程序和数据库,而是整体替换 zbox 内的 PHP 运行时:

  1. 将 PHP 7.4.30 ZTS 替换为 PHP 7.4.33 ZTS;
  2. 在 PHP 7.4.33 源码上应用 PHP 官方针对 EOL 分支的最小缓解提交 712e60f9edfd03f0960fc4fc3c2c375f42b90aa2(Avoid state corruption via bailout,修复 CVE-2026-109618、CVE-2026-109619);
  3. 同步替换 Apache mod_php 模块、OPcache、ionCube Loader,以及 mbstring / zip / sqlite3 所需的兼容库,保证版本匹配。

修复后 PHP 提供 max_multipart_body_parts 指令,默认值为 -1;该指令与上游对 Zend 分配器、HashTable、VM 在 bailout 时的状态一致性修复共同构成本次修复。

重要说明:这是面向已停止维护版本的过渡修复方案,不等于 PHP 官方恢复对 7.x 的长期支持。PHP 7.4 同样已 EOL。

执行以下命令安装

# amd64
# 安装前校验补丁包。
sha256sum zendas-php2shell-php74zts-linux-amd64-universal-20261103-r2.tar.gz
tar xzf zendas-php2shell-php74zts-linux-amd64-universal-20261103-r2.tar.gz
cd zendas-php2shell-php74zts-linux-amd64-universal-20261103-r2
sha256sum -c SHA256SUMS
# 见下方注意事项中的安装前准备。
sudo ./install.sh --check
sudo ./install.sh
sudo ./verify.sh

注意事项

  • 如果 sha256sum xxb-php2shell-php74zts-linux-amd64-20261023.tar.gz 的结果应为  7eb102bd1db0a1760145ae83303de8ced78853cd4194394e745521c0409fd5eb ,校验一致后进行后续步骤,如不一致请停止安装并重新下载。
  • 如果 sha256sum -c SHA256SUMS SHA256SUMS 中任何一项显示 FAILED,说明压缩包损坏或被篡改,请重新下载,不要继续安装。
  • 执行 sudo ./install.sh --check 通过时输出:
[php2shell] Current PHP state: 7.4.30 ZTS false
[php2shell] Compatibility check passed; no files changed
[php2shell] Run 'sudo ./install.sh' to install the patch

出现以下任一提示时请停止,不要安装:

unsupported ZenDAS version: # 版本不在已验证清单内;
Unexpected baseline ...:# 目标 PHP 运行时不是本包支持的基线(可能被自行升级或替换过);
OPcache is configured:php.ini # 主动配置了OPcache;
target already contains ... with different content:# /opt/zbox/run/lib 下已有不同版本的兼容库;
unexpected baseline PHP state:# PHP 版本或线程模式不符。
  • 安装前准备

在维护窗口执行,安装过程会短暂停止 zbox;

确认 /opt/zbox 有足够磁盘空间(修复包解压后约 40 MB,备份另需约 40 MB);

确认当前没有正在进行的升级、备份或大量文件上传;

不要手工只替换其中一个文件,PHP、Apache 模块、OPcache、ionCube 必须成套替换。

  • 执行 sudo ./install.sh 成功时输出:(请记录最后一行输出的备份目录,便于必要时的回滚)
[php2shell] Patch installed successfully
[php2shell] PHP state: 7.4.33 ZTS '-1'
[php2shell] Backup and rollback script: /opt/zbox/backup/php2shell-XXXXXXXXTXXXXXXZ

脚本会先备份原运行时到/opt/zbox/backup./php2shel1-<UTC时间>/,再按当前运行状态处理:

    Apache正在运行:停止Apache,替换文件后重新启动Apache;

    Apache未运行:只替换休眠的Apache文件,不启动Apache;

    全程不停止、不重启、不修改FrankenPHP。

  • 执行 sudo ./verify.sh 全部通过时输出:
 [verify]OK   PHP state:7.4.33 ZTS -1
 [verify]OK   Apache process <PID>loaded /opt/zbox/run/apache/modules/libphp7.so
 [verify]OK   http://127.0.0.1:80/zendas/returned 200
 [verify]All checks passed

Windows 一键安装包补丁


补丁说明

该补丁不修改ZenDAS程序、数据库和授权文件,只替换 ZenDAS 内的 4 个 PHP 运行时文件:

  1. 将 PHP 7.4.30 ZTS 替换为 PHP 7.4.33-pl1 ZTS,并应用 PHP 官方针对 7.4 分支的最小缓解提交 712e60f9edfd03f0960fc4fc3c2c375f42b90aa2(Avoid state corruption via bailout,修复 CVE-2026-109618、CVE-2026-109619);
  2. 替换 bin\php\php7ts.dll(PHP 核心)、bin\php\php7apache2_4.dll(Apache 模块)、bin\php\php.exe、bin\phxxb-php2shell-php74zts-win64-manual-20261026-r2.zipp\php-win.exe;
  3. 保留现有 php.ini、ionCube、mbstring、curl、gd、ldap、sockets、OPcache 等配置和扩展。新核心与原有 7.4 ZTS 扩展的 API、线程模式和编译器一致,扩展无需重编。

升级步骤

1. 下载补丁包到Windows

2. 停止ZenDAS服务

3. 进入ZenDAS服务指定目录:<E:\ZenDAS\bin>


4. 备份bin目录下的php程序目录,比如改名叫 php_bak,按如下图步骤所示将补丁包放到bin目录下解压。

5. 重新打开zendas.exe,检查小球面板php服务是否更新,成功更新后启动服务即可。

五、临时缓解措施

如果暂时无法替换 PHP 运行时文件,可修改对应的 php.ini,将以下配置项改为指定值(没有的请追加),然后重启所有工作进程:

  • 3.2 Linux Zbox:/opt/zbox/etc/php/php.ini;
  • 3.2 Windows Zbox:zbox\bin\php\php.ini;
  • 3.2 源码包 / 手动部署:系统 php.ini,或 PHP-FPM 池 / Apache 虚拟主机配置。
memory_limit = -1
post_max_size = 32M
upload_max_filesize = 16M
session.upload_progress.enabled = 0
  • 不需要上传文件时,post_max_size 可设为 8M;需要文件上传时保持 32M,并确保 upload_max_filesize 小于 post_max_size。
  • 如有反向代理或网关,建议在代理层同时限制请求体大小、表单字段数、multipart 分片数、请求头数量和嵌套深度。
  • 使用 PHP-FPM 时,建议通过 php_admin_value[memory_limit] 设置;Apache mod_php 可使用 php_admin_value memory_limit -1,避免被应用中的 ini_set() 覆盖。
  • 修改后必须重启 XXD / Zbox / Apache / PHP-FPM,使所有工作进程加载新配置。

这些措施只能降低风险,不能完全消除漏洞。PHP 官方指出,只有更新到修复版本才是完整的解决方案;因此仍建议尽快替换为修复后的 PHP 运行时。

文章分类