🎧 Listen to this article: English
🌍 Read this in your language: हिंदी · தமிழ் · తెలుగు · ಕನ್ನಡ · മലയാളം · ଓଡ଼ିଆ · 日本語 · 中文
就在系统管理员们刚刚完成针对高危 PHP2Shell 漏洞的紧急补丁部署之际,PHP 开发团队又发布了一份安全公告。当前引擎中新发现的一个远程代码执行缺陷仍未修复,需要立即对整个 Web 基础架构进行配置审查。
今天是 2026 年 10 月 24 日。在过去的 72 小时里,安全团队一直在争分夺秒地修复 10 月 21 日披露的两个高危漏洞。现在,被追踪为 CVE-2026-115560 的这一新披露带来了一个紧急更新未涵盖的额外攻击面。如果您在生产环境中的服务器、容器或共享主机上运行 PHP,了解该缺陷的工作原理并应用推荐的缓解措施至关重要。
什么是 CVE-2026-115560?
新披露的问题涉及 PHP 的会话上传进度机制以及对会话配置的运行时调整。
当用户上传文件时,PHP 可以通过其内置功能实时跟踪传输进度,该功能被称为 会话上传进度。启用后,PHP 会在应用程序脚本执行前拦截传入的文件传输,并将进度数据直接写入用户的会话中。
在常规条件下,此功能可以安全运行。然而,当应用程序在执行期间对其 会话序列化处理器 进行动态更改时,漏洞就会出现。序列化处理器决定了 PHP 如何对数组和对象进行编码与解码以便存储,支持诸如 php (默认值)、 php_binary以及 php_serialize.
根据官方安全公告,CVE-2026-115560 需要满足以下三个特定条件才会触发:
- 服务器最初将
session.serialize_handler配置为php_binary或php_serialize. - 应用程序在执行期间将该设置更改为
php,使用ini_set(),且发生在调用session_start(). - 服务器上仍启用了会话上传进度。
由于 PHP 在脚本执行前使用初始处理器写入上传跟踪数据,因此动态切换处理器会在会话开启时导致严重的序列化不匹配。这使得攻击者能够提供精心构造的输入,在反序列化时触发内存损坏并实现远程代码执行。
这与早期的 PHP2Shell 漏洞有何不同
CVE-2026-115560 并不是 10 月 21 日发布的紧急更新失效。那些更新解决了两个独立的严重缺陷,它们被统称为 PHP2Shell.
要评估您的受影响程度,必须区分这三个不同的问题:
1. CVE-2026-109618:内存耗尽清理 RCE
当 PHP 在请求处理期间遭遇内存耗尽时,就会发生该漏洞。如果在请求数据结构部分初始化时内存用尽,PHP 会中断执行以清理资源。在清理过程中,运行时会处理无效的内存状态,从而允许攻击者在 Web 工作进程账户权限下(特别是在 Apache mod_php下)实现远程代码执行。更新 PHP 二进制文件是唯一的彻底修复方法。
2. CVE-2026-109619:陈旧状态与释放后使用(Use-After-Free)
该问题源于 PHP-FPM 等持久化环境中跨 HTTP 请求的工作进程复用。当工作进程释放了先前请求的内存但未能重置内部指针时,由该工作进程处理的后续请求便会访问陈旧内存。这会导致 释放后使用(use-after-free) 状态。虽然上传进度是触发机制之一,但底层缺陷涉及多个运行时路径。
3. CVE-2026-115560:运行时处理器反序列化
与早期的内存损坏漏洞不同,该缺陷取决于应用程序在引导阶段中途更改会话格式的逻辑。由于官方补丁将在常规发布周期中提供,因此管理员不能仅依靠 10 月 21 日的二进制文件来保护其系统。
先前已被利用的证据:审计需追溯至 10 月 17 日
尽管 PHP 官方声明在披露之前尚未有关于 CVE-2026-115560 被积极利用的记录,但早期的 PHP2Shell 漏洞在野外已被积极探测。
亚马逊威胁研究人员报告称,他们的 MadPot 蜜罐网络早在 10 月 17 日就捕获了针对 PHP2Shell 的利用尝试,这比公开披露和紧急补丁发布整整提前了四天。相关流量来自商业匿名化网络。
这一情报带来了直接的操作性后果:
- 应用补丁可以保护系统免受未来的攻击,但无法告诉您入侵是否已经发生。
- 任何针对访问日志、文件修改或异常进程执行的取证审查都必须至少追溯到 2026 年 10 月 17 日,而不是从披露之日才开始。
逐步缓解与加固指南
由于针对 CVE-2026-115560 的官方引擎补丁仍在准备中,管理员在完成 10 月 21 日更新部署的同时,必须立即应用配置缓解措施。
步骤 1:在 php.ini 中禁用会话上传进度
禁用上传进度可以关闭 CVE-2026-115560 的攻击路径,且不会禁用标准文件上传。标准上传将继续正常运行;仅 PHP 内部的会话跟踪器被禁用。
将该指令设置为 0 ,位置在您当前生效的 php.ini 或 FPM 池配置中:
; Disable PHP session upload progress tracking
session.upload_progress.enabled = 0
在生效的配置文件中验证该设置:
# Check if session upload progress is enabled
php -i | grep -E "session.upload_progress.enabled"
如果命令返回 session.upload_progress.enabled => Off => Off,则说明缓解措施已生效。
步骤 2:重启 PHP-FPM 和 Web 服务器守护进程
PHP 会在生成工作进程时读取配置指令。编辑 php.ini 对正在运行的工作进程没有影响,除非它们重新启动。
重启您的 PHP 处理服务:
# For systems running PHP-FPM with systemd
sudo systemctl restart php*-fpm
# For systems running Apache with mod_php
sudo systemctl restart apache2 || sudo systemctl restart httpd
# Verify that worker processes refreshed their start times
ps -eo pid,lstart,cmd | grep -E "php-fpm|apache2|httpd" | grep -v grep
步骤 3:审计应用程序代码中的运行时处理器切换
该漏洞要求应用程序在运行时切换 session.serialize_handler ,通过使用 ini_set()。请扫描您的代码库,以验证应用程序代码或安装的第三方依赖库是否执行了此切换:
# Search for runtime serialization handler changes
grep -rn "session.serialize_handler" /var/www/html/ 2>/dev/null
如果搜索未返回任何 ini_set('session.serialize_handler', ...)的实例,则表明您的应用程序未调用易受攻击的运行时转换。如果第三方库需要特定处理器,请在 php.ini 中静态配置,而不是在调用以下函数前动态更改: session_start().
步骤 4:检查 10 月 17 日以后的系统和 Web 日志
为确保系统在蜜罐数据确定的零日漏洞窗口期内未成为攻击目标,请审计您的 Web 日志:
# Check web server logs for suspicious session upload parameters
sudo zgrep -E "PHP_SESSION_UPLOAD_PROGRESS|php_serialize" /var/log/nginx/*access.log* /var/log/apache2/*access.log* 2>/dev/null | head -n 30
# Check for unexpected PHP files created since October 17
sudo find /var/www/html/ -type f -newermt "2026-10-17" -name "*.php" -ls
检查任何未经验证的 PHP 脚本或由 Web 工作进程账户生成的异常后台进程。
结论
CVE-2026-115560 的披露强化了一个核心安全教训:软件补丁和配置加固必须协同进行。尽管各团队必须完成 10 月 21 日紧急补丁的部署以解决 PHP2Shell 内存漏洞,但禁用会话上传进度可为此最新 RCE 攻击途径提供立竿见影的防护。同时采取这两项措施可确保您的 Web 基础架构保持韧性,直到上游修复版本发布。
优点
- 禁用会话上传进度无需等待重新编译二进制文件即可提供即时防护。
- 标准文件上传继续正常工作,保留了核心应用程序功能。
- 通过消除不必要的旧版会话钩子,减少整体攻击面。
- 将日志审计追溯到 10 月 17 日有助于检测披露前的探测活动及潜在的 Webshell 植入。
- 提倡静态、确定性的会话配置,避免高风险的运行时环境变更。
缺点
- 禁用上传进度会导致查询 PHP 内部会话数组的自定义 UI 进度条失效。
- 需要在分布式服务器集群中协同进行配置更改和守护进程重启。
- 配置层面的缓解措施无法解决底层内存漏洞,因此紧急更新仍是强制性的。
- 排查混淆的第三方包中动态调用的
ini_set需要进行专门的代码审计。
注意事项
本文仅供学习和参考。系统命令、配置指令和文件路径必须根据您特定的 Linux 发行版、PHP 版本和托管架构进行调整。在修改生产环境基础架构之前,请务必先在预发环境中测试配置更改,并向官方项目维护人员核实安全公告。
常见问题解答
- 什么是 CVE-2026-115560? — 这是 PHP 中新披露的一个远程代码执行漏洞,由会话上传进度与会话序列化处理器的运行时更改之间的不匹配所引起。
- 最新的 PHP 版本中是否已修复 CVE-2026-115560? — 没有,该缺陷在当前构建版本中仍未修复,PHP 项目计划在下一个常规发布周期中提供官方修复。
- 管理员目前应如何保护服务器? — 管理员应将指令
session.upload_progress.enabled = 0写入其php.ini文件中,并重启所有 PHP 工作服务。 - 禁用上传进度会阻止用户上传文件吗? — 不会,通过 HTTP POST 进行的标准文件上传仍可正常工作;仅禁用了 PHP 内部的实时会话进度跟踪器。
- 新漏洞是否会影响已安装 10 月 21 日紧急更新的系统? — 是的,10 月 21 日的更新修复了早期的 PHP2Shell 内存漏洞,但 CVE-2026-115560 是一个独立的问题,需要通过配置来进行缓解。
- 为什么安全团队要调查追溯至 10 月 17 日的活动? — 来自亚马逊 MadPot 网络的威胁情报在公开披露前四天就观察到了针对 PHP2Shell 的利用探测,从而扩大了需要审查的时间窗口。
- 利用 CVE-2026-115560 需要满足哪些条件? — 应用程序必须初始使用非标准序列化处理器,将其更改为
php(通过ini_set()),且发生在调用session_start()之前,并且服务器启用了会话上传进度。
标签
#php #cve2026115560 #php2shell #cybersecurity #vulnerability #infosec #sysadmin #devops #websecurity #patchmanagement
Prompt-Injection Defense Checklist
The controls that actually reduce the blast radius when your app feeds untrusted text to an LLM. Enter your email — you'll get the PDF instantly, plus new posts on AI, security & Linux.
Free. No spam — unsubscribe in one click.


Responses
Sign in to leave a response.