PHP 与 Node.js 漏洞修复记录

💡 原文中文,约4600字,阅读约需11分钟。
📝

内容提要

作者针对PHP2Shell严重漏洞(CVE-2026-109618/109619,CVSS 9.2,可未授权RCE)进行应急处理。该漏洞源于PHP请求处理的内存管理问题,影响所有PHP应用,且攻击早于公开披露。作者在Ubuntu服务器上将PHP升级至修复版本(如24.04的8.3.6-0ubuntu0.24.04.13),同步更新Node.js修复Brotli漏洞,并重启FPM与PM2服务;另一台服务器则重装26.04以清理维护债务。

🔎

延伸解读

漏洞影响范围:底层PHP环境才是关键

文章强调,PHP2Shell漏洞涉及PHP解释器自身,而非特定CMS或框架。这意味着使用WordPress、Typecho、Laravel等程序并不能规避风险。只要底层PHP运行环境受影响,且存在可被攻击者访问的请求入口,就需要检查和更新。因此,维护者应优先关注PHP运行时的补丁状态,而不是仅依赖应用层防护。

Ubuntu版本号陷阱:phpinfo()可能误导判断

使用Ubuntu APT安装PHP时,不应直接以上游版本号判断是否修复。Ubuntu会将安全补丁回移到发行版原有软件包版本中,phpinfo()仍可能显示原版本号。文章建议通过apt命令核查已安装包版本,并对照Ubuntu安全公告USN-8948-1给出的修复基线,例如24.04对应8.3.6-0ubuntu0.24.04.13。

攻击早于披露:需排查历史异常请求

亚马逊安全团队披露,其蜜罐系统在漏洞公开披露前已观测到疑似利用PHP2Shell的攻击尝试。这意味着不能认为漏洞公开后才出现攻击活动。对于直接暴露在公网的PHP服务,除了尽快安装补丁,还应留意此前是否存在异常请求或入侵迹象,以判断是否已被利用。

维护不止PHP:Node.js Brotli漏洞同样需处理

文章记录,同一时间Node.js也发布了安全更新,修复包括Brotli解码器越界写入在内的多项问题,其中CVE-2026-111497被评定为High级别,可能导致远程代码执行。因此,服务器维护不仅涉及PHP,也有必要检查Node.js运行时及其相关进程,并升级到官方修复版本,如22.x的22.23.4、24.x的24.22.1等。

❓

Q&A

PHP2Shell 漏洞的 CVE 编号和严重程度是什么?

PHP2Shell 漏洞对应两个 CVE 编号:CVE-2026-109618 和 CVE-2026-109619,CVSS v4.0 评分均为 9.2,属于严重级别。

PHP2Shell 漏洞的根因是什么?

根因与 PHP 请求处理过程中的内存管理有关:CVE-2026-109618 是 PHP 在处理内存耗尽等异常时可能继续处理未完整初始化的内部请求数据;CVE-2026-109619 是 PHP 在复用工作进程时可能使用已释放的内部状态,导致释放后使用(Use-After-Free)问题。

使用 WordPress 或 Laravel 能避免 PHP2Shell 漏洞影响吗?

不能。该漏洞涉及 PHP 解释器自身,而不是特定的 CMS 或框架。只要底层 PHP 运行环境受影响,并且存在可被攻击者访问的请求入口,就需要检查和更新对应的运行环境。

Ubuntu 24.04 上修复 PHP2Shell 漏洞的软件包版本是多少?

根据 Ubuntu 安全公告 USN-8948-1,Ubuntu 24.04 LTS 的修复软件包版本为 8.3.6-0ubuntu0.24.04.13。

Node.js 的 Brotli 漏洞是什么,修复版本有哪些?

Node.js 修复了包括 Brotli 解码器越界写入在内的安全问题,其中 CVE-2026-111497 涉及 Brotli 解码过程,官方评定为 High 级别,可能导致远程代码执行。修复版本包括:Node.js 22.x 为 22.23.4,24.x 为 24.22.1,26.x 为 26.12.1。

在 Ubuntu 上如何更新 PHP 并重启服务?

执行 sudo apt update 刷新索引,然后使用 sudo apt install --only-upgrade 升级 PHP 相关软件包(如 php8.3-cli、php8.3-fpm 等),最后执行 sudo systemctl restart php8.3-fpm 重启 FPM 服务。

🏷️

标签

➡️

继续阅读