近日接各领域安全通报,PHP被披露其存在远程代码执行漏洞,漏洞编号分别为CVE-2026-109618, CVE-2026-109619,代号“php2shell”,可导致未经身份验证的远程攻击者通过发送特制的multipart POST请求,触发内存破坏并最终实现远程代码执行,从而完全控制服务器。
为避免师生相关业务受影响,建议尽快开展安全自查,如在受影响范围,应及时进行更新修复,暂无可供更新补丁时应增加防护措施和限制服务范围,避免被外部攻击者入侵。
漏洞详情
PHP是一种开源的通用计算机脚本语言,其目标是允许网络开发人员快速编写动态页面,应用范围相当广泛,可在多数的服务器和操作系统上运行。
1.PHP远程代码执行漏洞(CVE-2026-109618)
在PHP中,由于PHP在处理内存耗尽(OOM)错误时使用 longjmp() 提前退出当前上下文。在某些上下文中,请求内存在完全初始化之前就处于可访问状态,若此时内存分配失败,PHP未能正确处理提前退出,导致请求内存处于无效状态。攻击者可通过构造包含大量头部、嵌套字段名或空文件控件的multipart请求,在看似不超过post_max_size限制的情况下耗尽memory_limit,触发OOM。在Apache mod_php等无条件调用请求关闭过程的SAPI中,关闭过程会处理这些无效状态,最终导致内存破坏和远程代码执行。
2.PHP远程代码执行漏洞(CVE-2026-109619)
在PHP中,由于PHP工作进程会保留指向前一个请求内存的全局状态(如错误、会话、对象和扩展状态),但在请求内存释放前未完全重置该状态,导致释放后使用。当某些输入、配置、会话或错误处理操作在下一个请求正常初始化之前运行时,它们会访问这些未被重置的陈旧状态。攻击者可通过构造特定的堆布局,利用跨请求的生命周期漏洞(例如致命错误导致状态未被重置,或后续诊断信息重新填充了已清理的错误状态),在同一个工作进程处理的两个请求中分别充当生产者和消费者,最终实现未经身份验证的堆释放后使用、内存泄露或远程代码执行。
风险等级
高风险
漏洞风险
未经身份验证的远程攻击者利用该漏洞可在服务器上以Web工作进程账户身份执行任意代码,可能导致服务器完全沦陷、敏感数据泄露或恶意软件植入等危害。
影响版本
PHP < 8.2.35
PHP < 8.3.36
PHP < 8.4.27
PHP < 8.5.12
安全版本
PHP >= 8.2.35
PHP >= 8.3.36
PHP >= 8.4.27
PHP >= 8.5.12
修复建议
官方已发布漏洞补丁及修复版本,请评估业务是否受影响后,升级至安全版本。
建议在升级前做好数据备份工作,避免出现意外。
来源:腾讯云安全、 奇安信CERT

