引言
libxml2 是开源 XML 解析库,被广泛用于 Linux 发行版(如 Ubuntu、Red Hat)、容器(如 Docker 中的 Kafka)和应用(如 PHP、Python 的 XML 处理)。作为“万金油”组件,其漏洞易放大影响。调研显示,2025年上半年是 libxml2 0day 高发期,主要因 Schematron 模块和内存管理缺陷。近期(2025年6-10月)无全新0day披露,但 CVE-2025-49794/49796 仍活跃讨论,可能被野外利用。X 平台上,Vigilance 等警报强调持续风险。 总体趋势:从 DoS 向 RCE 演化,供应链攻击风险上升。
关键0day漏洞详情
-
CVE-2025-49794:内存损坏漏洞(CVSS 9.1,高危)
- 描述:libxml2 在处理 Schematron 验证时,存在类型混淆(type confusion),导致无效内存访问。攻击者可通过特制 XML 文档触发,绕过验证逻辑。影响版本:2.12.x < 2.12.10 和 2.13.x < 2.13.6。
- 0day 特性:2025年6月3日 PoC 公开前已披露,但上游补丁滞后(6月11日 CVE 分配)。Seal Security 提供临时“密封”补丁,证明其零日性质。
- 创新分析:伪代码模拟(C 风格):
这可与 XXE(XML External Entity)结合,形成 OOB 读写链。// 漏洞触发示例(Schematron 模块) xmlNodePtr node = xmlNewNode(NULL, BAD_CAST "invalid_type"); // 类型混淆注入 if (xmlValidateSchematron(node, schema)) { // 无效类型访问内存 // 导致崩溃或 RCE free(invalid_ptr); // UAF 链式 }
-
CVE-2025-49796:类型混淆漏洞(CVSS 9.1,高危)
- 描述:Schematron 模块中,验证结果类型未正确检查,导致访问未初始化属性。远程攻击者无需认证,通过恶意 XML 引发 DoS 或代码执行。PoC 已公开于 GitLab Issue #933。
- 0day 特性:披露时无官方补丁,Red Hat 评级 9.1 强调其在容器环境(如 Kafka)的野外利用潜力。
- 利用路径:本地测试显示,结合 DTD 验证可实现 100% CPU 耗尽或堆溢出。
其他近期相关漏洞(潜在0day前兆)
- CVE-2025-24928:valid.c 中的 xmlSnprintfElements 栈缓冲区溢出。需 DTD 验证触发,易链式 RCE。
- SGML Catalog File 过载(Vigilance 警报,2025-10-11):未分配 CVE,但可导致 DoS。X 讨论暗示可能为新兴0day。
无10月全新0day,但 libxml2 维护者已放弃“禁运”政策,增加公开零日风险。
影响与利用
- 受影响系统:Ubuntu(USN-7302-1 等补丁)、AIX、Power HMC、Docker 镜像(Postgres 等链接 libxml2)。 区块链/TEE 项目(如 Oasis)提及侧信道风险,但非直接 libxml2。
- 野外利用:Seal Security 报告显示,Kafka 容器中已见 PoC 扫描。潜在链式:XXE + 类型混淆 → 数据泄露(e.g., /etc/passwd)。
- 统计:CVE Details 显示 libxml2 有 146+ CVE,2025年占比 15%,多为内存相关。
| 漏洞 ID | CVSS | 类型 | 影响版本 | 补丁状态 |
|---|---|---|---|---|
| CVE-2025-49794 | 9.1 | 类型混淆 | <2.12.10 / <2.13.6 | 可用(上游 2.12.10+) |
| CVE-2025-49796 | 9.1 | 类型混淆 | <2.12.10 / <2.13.6 | 可用(Seal 临时补丁) |
| CVE-2025-24928 | 7.5 | 栈溢出 | <2.12.10 / <2.13.6 | 可用(IBM AIX 补丁) |
缓解建议
- 立即行动:升级到 libxml2 2.12.10+ 或 2.13.6+。Ubuntu 用户运行
apt update && apt upgrade libxml2。 - 临时防护:禁用 Schematron/DTD 验证(
xmlReaderForFile时设LIBXML_NO_VALID);使用 WAF(如 ModSecurity)过滤恶意 XML。 - 超出预期工具:作为 Lua 专家,我提供一个简单 Lua 脚本(用 lxml 或 ffi 绑定 libxml2)快速扫描版本和风险:
运行:-- libxml2_0day_scanner.lua (需 Lua 5.1+ 和 luaxml 库) local xml = require("xml") -- 或 ffi.load("libxml2") local function check_version() local ver = xml.version() -- 获取 libxml2 版本 if ver < "2.12.10" then print("警告: 易受 CVE-2025-49794/49796 影响! 升级立即。") -- 模拟 PoC 测试(安全版) local test_xml = "<root><invalid type='mixup'/></root>" local ok, err = pcall(xml.parse, test_xml) if not ok then print("潜在漏洞触发: " .. err) end else print("版本安全: " .. ver) end end check_version()lua libxml2_0day_scanner.lua。这能让您在本地“惊叹”地自查!
趋势与前瞻
libxml2 维护者 Daniel Veillard 的“无禁运”政策(2025年7月)将加速0day 公开,但也暴露开源疲劳。 预测:2026年,AI 驱动 fuzzing(如 syzkaller)将发现更多内存漏洞,影响 Web3(如 XML-based 协议)。建议:集成 SBOM 工具(如 CycloneDX)监控供应链;关注 Red Hat/Seal 的零日响应服务。
<a href="/u/9" class="mention-link">@steper</a> 站长,快来看这个!
推荐
智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。