发布网友 发布时间:2024-10-18 06:07
共1个回答
热心网友 时间:2024-10-18 08:05
hutool XML反序列化漏洞(CVE-2023-24162)概述
Hutool库中的XmlUtil类中的readObjectFromXml方法存在一个漏洞,当处理恶意XML数据时,可能导致任意代码执行。这个漏洞源于对XMLDecoder.readObject方法的直接调用,当不当处理用户输入时,攻击者可以利用它执行恶意操作。
要重现这个问题,首先在Maven仓库搜索Hutool,添加依赖到pom.xml,然后在项目目录下创建一个bean.xml文件,代码中包含恶意XML内容。
尽管漏洞分析相对简单,但理解XML反序列化的工作原理需要深入研究。关键方法包括XmlUtil的readObjectFromXml(String, File, InputSource)和XMLDecoder的readObject。漏洞根源在于Java核心库中的XMLDecoder.readObject,避免使用Hutool的readObjectFromXml方法可以防止漏洞。
最新版本的hutool-all已移除readObjectFromXml方法,通过直接移除漏洞点来防止此类攻击。
漏洞触发时,XML解析过程会通过一系列步骤,如ProcessBuilder的start方法,最终在DocumentHandler的endElement方法中,通过StringElementHandler和VoidElementHandler的endElement方法,实现了命令执行。这个过程涉及复杂的XML解析逻辑和handler调用链。
调试显示了多个ElementHandler和NewElementHandler的endElement方法调用,直到最终的ObjectElementHandler#getValueObject,触发命令执行。
建议读者自行调试以获取更深入的理解。