PHP高危漏洞CVE-2025-1219可绕过验证加载恶意内容(附修复方案)

网络安全 潘老师 3周前 (03-31) 60 ℃ (0) 扫码查看

近期,PHP的libxml流组件中被曝出存在一个高危漏洞,编号为CVE-2025-1219,这一漏洞可能会对众多依赖DOM或SimpleXML扩展来处理HTTP请求的Web应用程序造成严重影响。

一、受影响的PHP版本

该漏洞影响范围较广,涉及多个PHP版本,具体如下:

  • 8.1.32以下版本;
  • 8.2.28以下版本;
  • 8.3.18以下版本;
  • 8.4.5以下版本 。

二、漏洞技术细节

这个漏洞的触发场景是在HTTP流包装器处理重定向的时候。在正常情况下,系统在执行后续请求之前,应该对先前捕获的标头进行清除操作。然而,出现漏洞的系统并没有这么做,而是将多个请求的标头追加到了同一个数组中。最终,这个数组里包含了所有请求的标头,并且最后请求的标头排在数组末尾。

在确定响应字符集时,系统会调用php_libxml_input_buffer_create_filename()php_libxml_sniff_charset_from_stream()函数,去扫描这个数组,寻找content-type标头。但问题在于,系统是按照从上至下的顺序处理标头的,一旦遇到首个content-type标头,就会停止扫描。根据PHP的相关报告,这个被系统最先捕获到的标头,有可能并非对应最终包含待解析HTML正文的响应。这就会导致文档可能以错误的字符集进行解析,从而引发一系列安全隐患。

攻击者正是利用了这一特性,通过操纵字符集检测,来改变文档的解析方式。例如,文档可能会被错误解读,原本的内容含义发生改变;若文档解析出现错误,验证流程也可能会被绕过;另外,在使用->saveHtml()等方法导出文档时,可能会保留原始字符集,进而产生意外输出。特别是那些使用PHP的DOM或SimpleXML扩展处理HTTP请求的应用程序,更容易受到该漏洞的攻击。

三、漏洞验证实例展示

下面通过一个概念验证(PoC)来具体展示该漏洞的利用方式。首先,有一个重定向脚本(redirect.php),它会发送指定字符集(utf-16)的content-type标头,然后重定向到其他资源。当通过PHP的DOMDocument或SimpleXML扩展访问时,系统会错误地使用初始的content-type标头进行解析,而不是最终响应的标头。这样的行为会导致解析错误和验证绕过,比如导出的HTML内容在被篡改之后,仍然保留着原始字符集。

四、漏洞修复与缓解措施

值得庆幸的是,PHP开发团队已经意识到了这个问题,并在以下版本中进行了修复:

  • PHP 8.1.32;
  • PHP 8.2.28;
  • PHP 8.3.19;
  • PHP 8.4.5 。

为了防范CVE-2025-1219漏洞带来的风险,建议用户尽快将PHP升级到上述已修复的版本。具体操作步骤如下:

  1. 使用php -v命令检查当前的PHP版本,确认是否在受影响范围内。
  2. 通过系统的包管理器进行更新,或者直接从php.net下载更新后的二进制文件。
  3. 在完成更新后,重启所有依赖PHP的服务,确保更新生效。

CVE-2025-1219漏洞的出现,揭示了PHP在使用libxml流处理HTTP重定向时存在的关键缺陷,这对那些需要通过HTTP请求解析文档的应用程序构成了不小的风险。


版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/safe/16641.html
喜欢 (0)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】