被誉为“世界上最好的语言”的 PHP 今日被曝存在两个远程代码执行漏洞,编号分别为 CVE-2026-109618 和 CVE-2026-109619,风险等级均为高风险。
![]()
据介绍,攻击者无需身份验证,即可通过发送特制的 multipart POST 请求触发漏洞,造成内存破坏,最终实现远程代码执行,严重情况下可能导致服务器被完全控制。
具体来看,CVE-2026-109618 与 PHP 处理内存耗尽(OOM)错误时的异常退出机制有关。在特定情况下,内存分配失败可能导致请求内存处于无效状态,后续处理过程中进而引发内存破坏和远程代码执行。
另一个漏洞 CVE-2026-109619 则与 PHP 工作进程跨请求保留的全局状态有关。由于部分状态未在请求内存释放前完全重置,后续请求可能访问已经失效的内存,进而引发释放后使用等内存安全问题,最终可能导致远程代码执行。
攻击者成功利用上述漏洞后,可以 Web 工作进程账户的身份执行任意代码,可能造成服务器完全沦陷、敏感数据泄露或恶意软件植入等后果。
![]()
以下 PHP 版本存在漏洞:
针对上述漏洞,PromptTree 建议用户及时开展安全自查,评估业务是否受到影响,并尽快升级至对应安全版本。升级前应做好数据备份,避免修复过程中出现意外。
PHP 8.5.12、8.4.27、8.3.36 和 8.2.35 修复了两个可能导致未经身份验证的远程代码执行的严重漏洞。强烈建议所有 PHP 用户立即更新。
所有提供 Web 服务请求的 PHP 安装均面临风险,包括 PHP-FPM、带有 mod_php 的 Apache、php-cgi、FrankenPHP 和 LiteSpeed。PHP 安全团队认为 mod_php 的风险最高,因为已有演示表明,未经身份验证的请求可以在任何应用程序代码运行之前触发攻击。
请更新至 PHP 8.5.12、8.4.27、8.3.36 或 8.2.35 版本。源代码下载请访问 PHP 官方下载页面,Windows 源代码和二进制文件也在同一页面上。
Linux 发行版和 LTS 供应商已提前收到补丁,请向您的供应商查询更新的软件包。
PHP 8.1 及更早版本已停止接收 PHP 项目提供的更新。部分发行版和长期支持(LTS)供应商会提供向后移植的修复程序,详情请联系您的供应商,或升级到受支持的版本。
鉴于这些漏洞的严重性,PHP 安全团队为 PHP 7.4、PHP 8.0 和 PHP 8.1 提供了最小的源代码向后移植,以帮助从源代码构建或无法访问 LTS 供应商的用户。
虽然只有更新才能彻底解决问题,但以下措施可以减少特定攻击途径带来的风险,但并不能保证安装安全。
针对 CVE-2026-109618(内存溢出 RCE):
memory_limit=-1 内存限制,最好采用应用程序无法覆盖的方式,例如在 FPM 池或 Apache 配置中通过 php_admin_value 设置,并检查是否有任何池、目录或应用程序重新设置了内存限制。这可以消除可控的 PHP 内存限制故障,但底层分配故障仍然可能触发漏洞。post_max_size。对于不需要文件上传的应用,设置 post_max_size = 8M;如果需要文件上传,则设置 post_max_size = 32M。保持 upload_max_filesize 低于某个 post_max_size 阈值。考虑在 Web 服务器或代理级别强制限制解码后的请求大小、输入字段数量、多部分请求体数量、请求头数量和嵌套深度。这些限制还必须涵盖没有可用参数的请求 Content-Length。RLIMIT_AS、RLIMIT_DATA 等其他方法,因为这可能会导致易受攻击的分配失败。针对 CVE-2026-109619(过时全局状态 RCE):
session.upload_progress.enabled=0 并重启每个工作进程。使用在请求解析之前应用的 FPM 池或服务器配置中的 php.ini。不要依赖 ini_set() 或 FPM .user.ini。这会阻塞已确认的会话路径,但不会阻塞其他变体。fatal_error_backtraces=0 并重启每个 worker。这只会阻塞已确认的致命回溯路径。--hash-extends 隐藏诊断信息,并确保 error_reporting 和 display_errors 不会帮助攻击者。