PHP2Shell漏洞应对:ONEKEY如何识别受影响固件并验证补丁修复

创提信息
2026/11/04

分享到

转载自www.onekey.com


PHP项目最近披露了两个严重安全漏洞:CVE-2026-109618 和 CVE-2026-109619。这些漏洞被统称为PHP2Shell,在特定条件下,可能导致未经身份验证的远程代码执行。


虽然主要的云和托管服务提供商有机会为漏洞披露做准备,而且整个PHP生态系统也被敦促立即打补丁,但嵌入式设备面临的是不同的挑战。运行易受攻击PHP版本的设备通常会一直处于暴露状态,直到其制造商发布更新的固件并部署这些更新为止。


鉴于嵌入式设备生命周期较长且过时的软件组件普遍存在,PHP2Shell漏洞的影响可能会在最初披露后持续很长时间。


在本文中,我们将介绍如何识别和修复嵌入式固件中的PHP2Shell漏洞,并展示ONEKEY平台如何支持漏洞识别、补丁验证与修复管理。


PHP2Shell漏洞应对

我们建议采取以下措施来应对嵌入式环境中的PHP2Shell漏洞:

1. 识别受影响的固件 — 在你的固件清单中搜索易受攻击的PHP运行环境,包括静态捆绑或自定义构建的版本。

2. 更新PHP — 将已修复漏洞的PHP版本集成到固件中,并发布经过数字签名的固件更新。

3. 限制网络暴露范围 — 禁用不必要的基于PHP的管理界面,或将访问范围限制在可信的管理网络内。

4. 采取临时缓解措施 — 当无法立即更新固件时,请加强PHP配置和HTTP请求处理的安全性。

5. 处理已达到生命周期终点的版本 — 应用经过验证的回溯补丁,或迁移到受支持的PHP分支。

6. 验证修复情况 — 重新分析更新后的固件,以确认存在漏洞的组件已更新或已打补丁。


让我们来看看ONEKEY如何支持该流程的每个阶段。


识别受影响的固件

第一步是了解PHP在您的固件产品组合中的具体分布情况。


ONEKEY支持在整个固件库中搜索特定的软件组件,快速识别包含PHP的产品及固件 版本。


首先,请转到“搜索范围”→“组件”,然后搜索PHP。

11.png

导航至“搜索范围”→“CVE”,然后搜索CVE-2026-109618或CVE-2026-109619。

22.png

这有助于您快速确定哪些固件镜像需要进一步调查,并优先安排修复工作。


请注意,发现存在漏洞的PHP版本并不一定意味着该设备可被利用。实际的安全风险取决于多种因素,例如PHP的使用方式、是否处理Web请求,以及受影响的服务是否可访问等。


PHP已修复版本

如果您的固件包含一个已有安全更新的PHP分支,建议的修复措施是升级到已修复的版本。


2026年10月21日发布的安全更新引入了以下最低修复的上游版本:

PHP 分支

首个修复版本

PHP 8.2

8.2.35

PHP 8.3

8.3.36

PHP 8.4

8.4.27

PHP 8.5

8.5.12

PHP 8.1 及更早版本

上游未发布安全更新;请升级或应用经过验证的回溯补丁

对于嵌入式设备,这通常意味着把修补过的PHP运行环境集成到新的固件镜像中,验证兼容性,然后把更新部署到受影响的产品上。


然而,升级并非总是那么简单,尤其是当设备依赖于上游已不再支持的旧版PHP时。


已停止支持的版本

许多嵌入式设备仍在使用已经停止支持的PHP版本,包括PHP 8.1及更早版本。这些版本不再接收常规的上游安全更新。


如果无法升级到受支持的PHP版本,可能需要需要将相关安全补丁移植到旧版本(Backport),或者向原始设备制造商 (OEM) 获取已修复的固件版本。


这带来了另一个挑战:如何验证存在漏洞的PHP版本是否已经打了补丁?


仅检查版本号是不够的。供应商可能会回溯应用安全修复程序,同时不更改报告的PHP版本,这可能会导致基于版本的漏洞扫描器继续报告相关CVE。


ONEKEY的“自动化影响评估”功能就可以在此派上用场。在2026.10.26版本中,新增了用于识别PHP官方安全补丁的自动化影响评估规则,旨在识别编译后的二进制文件中是否包含PHP的官方安全补丁。

33.png

通过直接在固件二进制文件中检测补丁的证据,ONEKEY即使在报告的PHP版本没有变化的情况下,也能区分已打补丁的实现与可能存在漏洞的实现。


这有助于减少误报,并让安全团队在评估供应商回溯修复的有效性时更有信心。ONEKEY的自动化影响评估结果可关联相应的VEX信息。本例中,评估结果标记为FIX_APPLIED(已应用修复补丁),相关信息可随SBOM导出。



44.png

临时缓解措施

当无法立即部署固件更新或回溯移植的补丁时,临时缓解措施有助于降低遭到利用的风险。


PHP 安全公告建议进行以下几项配置更改:

CVE-2026-109618 — 设置memory_limit=-1,限制HTTP请求和文件上传的大小,并避免依赖RLIMIT_AS或RLIMIT_DATA作为替代的内存控制手段。

CVE-2026-109619 — 设置session.upload_progress.enabled=0;在PHP 8.5 中,设置fatal_error_backtraces=0。


更多详情,请参阅PHP2Shell安全公告和PHP官方安全指南。


重要提示:这些缓解措施并不能完全解决这些漏洞,不应被视为补丁的替代方案。在内存受限的嵌入式环境中,必须对禁用PHP内存限制等更改进行仔细评估,以避免引发稳定性或可用性问题。


如果你决定采用基于配置的缓解措施,ONEKEY查询语言(OQL)可以帮助你检查固件文件并识别相关的PHP配置设置。


你可以在单个固件镜像中执行这些搜索,也可以在整个固件库中搜索,以找出可能仍需关注的配置。

55.png

这提供了一种额外的方法,在等待永久固件修复的同时调查缓解覆盖情况。







验证漏洞修复结果

更新PHP或应用回溯补丁后,最后一步是验证修复措施是否已反映在固件中。


通过ONEKEY,可以分析更新的固件镜像,并将其与之前的版本进行比较,识别软件组件及漏洞检测结果的变化。


例如,通过将最新固件版本与其前一版本进行比较,您可以检查以下内容:

● PHP运行时是否已升级至已修复的版本。

● 此前报告的PHP2Shell漏洞是否已不再被检测到。

● 是否已通过“自动化影响评估”识别出供应商的回溯修复。

● 作为此次更新的一部分,其他软件组件或漏洞发现情况是否发生了变化。


在下面的示例中,固件版本1.0将该补丁回溯移植到了其PHP 7.4版本中。

66.png

可以看到,ONEKEY 通过自动化影响评估识别了已应用的安全补丁,使这两个 PHP2Shell 漏洞不再被判定为影响该固件:

77.png

在第二个示例中,固件中的 PHP 已升级至修复版本,因此相关漏洞不再被检测为影响该固件:

88.png

这种对比可以帮助你验证修复工作,并清楚地记录你的固件安全状态在各个版本之间的变化。



要点总结

PHP2Shell 凸显了嵌入式安全领域中一个反复出现的问题:即使上游已发布修复程序,关键漏洞仍可能在固件中长期存在。


要应对这一挑战,需要能够全面掌握设备上运行的软件情况,具备识别受影响产品的能力,并拥有可靠的方法来验证补丁是否已实际应用。


ONEKEY平台可帮助您:

● 通过搜索软件组件、CVE及相关文件,识别整个固件组合中的安全风险。

● 无需源代码即可评估固件。无论您是设备制造商,还是关键基础设施或工业领域的运营商,ONEKEY都能直接基于固件二进制文件进行漏洞分析,无需访问专有源代码。

● 通过自动化影响评估,识别已打补丁的二进制文件(包括供应商回溯的安全修复程序),从而减少误报。

● 通过OQL搜索固件配置,以调查临时缓解措施。

● 通过比较固件版本并追踪漏洞发现结果的变化,验证修复工作。


请记住:固件清单越完整,对漏洞的可见性就越全面。上传所有产品线和版本的固件,有助于确保过时的组件和未修补的漏洞不会被遗漏。