PHP 关键安全更新 (php2shell):PrestaShop 店铺所有者现在应该采取的行动

两个 PHP 严重漏洞 (CVSS 9.2) 影响几乎所有 PrestaShop 店铺。了解哪些 PHP 版本已修复以及今天该做些什么。

作者:Presta Support 已发布 已审核

一个显示 php -v 的终端窗口,带有“立即更新”按钮,旁边是一个青柠绿的安全盾牌

2026 年 10 月 21 日,PHP 项目发布了针对 PHP 本身两个严重漏洞的修复程序。两者的 CVSS 评分为 9.2,发现它们的的安全研究人员将其称为 php2shell。该问题并非出在 PrestaShop 或任何模块中,但由于每个 PrestaShop 店铺都在 PHP 上运行,因此它实际上影响了每一个店铺。以下内容包括:当前情况、哪些 PHP 版本已修复以及您今天应该做什么。

问题是什么?

这两个漏洞存在于 PHP 运行时中,即在 PrestaShop 自身代码运行之前运行的那一层。根据官方公告,攻击者可以利用它们来崩溃 PHP 进程、读取敏感数据,或者在最坏的情况下,在无需登录的情况下在您的服务器上运行代码。

  • CVE-2026-109618: 当 PHP 内存耗尽时,请求数据可能会处于半初始化状态,随后的清理操作会将这些不完整的数据视为有效数据。
  • CVE-2026-109619: 内部请求状态在其内存被释放后仍然可以存活,因此同一 PHP 工作进程上的后续请求可能会使用该过时的状态。

每个提供网页请求服务的 PHP 安装都面临风险:PHP-FPM、带有 mod_php 的 Apache、php-cgi、FrankenPHP 和 LiteSpeed。使用 mod_php 的风险最高。

为什么 PrestaShop 更新没有用?

更新 PrestaShop 或您的模块无法修复此问题。应用程序内部的保护无法阻止在应用程序代码运行之前发生的攻击。唯一的真正修复方法是更新服务器上的 PHP 版本。

哪些 PHP 版本已修复?

PHP 分支 修复版本
PHP 8.5 8.5.12
PHP 8.4 8.4.27
PHP 8.3 8.3.36
PHP 8.2 8.2.35

对于 PHP 7.4、8.0 和 8.1,PHP 项目发布了最低限度的反向移植。请注意,Linux 发行版有时会在不改变版本号的情况下应用修复,因此看起来较旧的版本可能实际上已经打过补丁。这就是为什么您应该向托管商确认,而不是仅凭版本号判断。

您现在应该做什么

1. 检查您的 PHP 版本

在 PrestaShop 后台,转到高级参数 > 信息。在那里您可以看到您的店铺运行在哪个 PHP 版本上。

2. 请您的托管商提供书面确认

联系您的托管服务商,询问是否已将 CVE-2026-109618 和 CVE-2026-109619 的修复补丁应用到您的服务器。并要求提供书面回复。

3. 您自己管理服务器吗?

  • 安装来自您的发行版或 PHP 官方版本的更新 PHP 软件包。
  • 重启每个 PHP 进程:PHP-FPM 池、Apache、LiteSpeed 和 FrankenPHP 工作进程。已安装但未加载的更新无法保护您。
  • 在发布当天,PHP 项目建议不要等待由志愿者维护的 rpms.remirepo.net 存储库,而是推荐使用发行版软件包或从源码构建。
  • 使用 Docker?请在更新的基础镜像上重新构建您的镜像并再次部署。

4. 仍然在使用 PHP 8.1 或更旧版本?

询问您的托管商您的 PHP 版本是否已打补丁。将 PrestaShop 升级到支持较新 PHP 的版本是一项独立的、长期的工作,而不是紧急修复。规划参考:PrestaShop 9 支持 PHP 8.1 到 8.5,而 PHP 8.2 将于 2026 年 12 月 31 日到达生命周期终点。PrestaShop 1.7 和 8.x 店铺通常仍在 PHP 7.x 或 8.1 上运行。

如果您暂时无法更新的临时措施

这些措施适用于技术团队。请先在测试副本上进行测试;它们可以降低风险,但不能替代 PHP 更新。

针对 CVE-2026-109618:

  • 调低 post_max_size:建议如果您的店铺不接受上传,则设为 8M;如果接受,则设为 32M。保持 upload_max_filesize 低于该值。
  • 还在您的 Web 服务器或反向代理中强制执行请求大小限制。

针对 CVE-2026-109619:

  • 在 php.ini、PHP-FPM 池或服务器配置中设置 session.upload_progress.enabled=0,并重启所有工作进程。仅使用 ini_set() 或 .user.ini 是不够的。
  • 在 PHP 8.5 上,同时设置 fatal_error_backtraces=0 并重启工作进程。

使用 error_reporting、display_errors 或 @ 隐藏错误没有用。完整的措施列表可在 PHP 官方安全公告中找到。

网络应用防火墙 (WAF) 有用吗?

Cloudflare 已经推出了针对 php2shell 的专用 WAF 规则,自 10 月 21 日起默认启用。在付费计划中,请检查托管规则集是否设置为 block。请记住,WAF 仅保护流经它的流量:请确保您的服务器仅接受来自您的 WAF 提供商的网络流量。WAF 是额外的防护层,不能替代 PHP 更新。

需要帮助吗?

不确定您的服务器是否已经打补丁,或者您仍在使用旧的 PHP 版本?我们可检查您的 PHP 版本和配置,向您的托管商提出正确的问题,并帮助您规划过渡到受支持的 PHP 和 PrestaShop 版本。阅读更多关于我们安全服务的信息、计划升级或向我们提问。

来源:build.prestashop-project.org 上的“Critical PHP security updates: what PrestaShop users need to know”(2026 年 10 月 21 日),以及针对 CVE-2026-109618 和 CVE-2026-109619 的 PHP 安全公告。

  • 安全
  • PHP
  • PrestaShop
  • 托管