PHP的libxml流组件中发现一个高危漏洞,可能影响依赖DOM或SimpleXML扩展处理HTTP请求的Web应用程序。该漏洞编号为CVE-2025-1219,源于处理重定向资源时对content-type
标头的错误处理,可能导致文档解析错误和验证绕过等安全风险。
受影响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升级至上述已修复版本:
- 使用
php -v
命令检查当前版本 - 通过包管理器更新系统,或从php.net下载更新后的二进制文件
- 更新后重启所有依赖PHP的服务
CVE-2025-1219暴露了PHP使用libxml流处理HTTP重定向时的关键缺陷,对通过HTTP请求解析文档的应用程序构成风险。该漏洞再次凸显定期更新软件以应对新兴安全威胁的重要性。
参考来源:
Critical PHP Vulnerability Let Hackers Bypass the Validation To Load Malicious Content
4A评测 - 免责申明
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。
不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。
本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。
如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!
程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。
侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)