【开源组件系列】CVE-2022-0265 Java开源组件安全之Hazelcast XXE漏洞

admin 2022年4月20日08:36:37代码审计评论25 views958字阅读3分11秒阅读模式
漏洞信息


Hazelcast是一套可扩展的开源数据分发平台。在上一篇文章中:


CVE-2022-26133 Atlassian Bitbucket Data Center反序列化漏洞

QCyber,公众号:且听安全【最新漏洞预警】CVE-2022-26133 Atlassian Bitbucket Data Center反序列化漏洞


利用Hazelcast接口反序列化漏洞实现了Bitbucket Data Center RCE。分析完漏洞之后,我对Hazelcast分发平台产生了兴趣,通过进一步研究,顺手复现了今年爆出的一个XXE漏洞,通报如下:



【开源组件系列】CVE-2022-0265 Java开源组件安全之Hazelcast XXE漏洞


漏洞分析



引入`5.1-BETA-1`版本jar包。漏洞触发点位于`AbstractXmlConfigRootTagRecognizer`:


【开源组件系列】CVE-2022-0265 Java开源组件安全之Hazelcast XXE漏洞


构造函数通过`SAXParserFactory`实例化xml解析对象`saxParser`,然后在函数`isRecognized`中调用`parse`完成xml解析,没有任何限制,这是一个非常典型的XXE漏洞。


搜索`AbstractXmlConfigRootTagRecognizer#isRecognized`函数被调用情况,发现在Hazelcast配置类`com.hazelcast.config.Config`中用于加载配置的函数`loadFromStream`存在对`isRecognized`的调用:


【开源组件系列】CVE-2022-0265 Java开源组件安全之Hazelcast XXE漏洞


当我们通过`loadFromString`函数加载Hazelcast配置,并且配置内容可控时,将导致出现XXE漏洞。


漏洞复现


构造如下Hazelcast启动代码:


【开源组件系列】CVE-2022-0265 Java开源组件安全之Hazelcast XXE漏洞


启动:


【开源组件系列】CVE-2022-0265 Java开源组件安全之Hazelcast XXE漏洞


触发XXE:


【开源组件系列】CVE-2022-0265 Java开源组件安全之Hazelcast XXE漏洞


调用栈如下:


【开源组件系列】CVE-2022-0265 Java开源组件安全之Hazelcast XXE漏洞


修复方式


【开源组件系列】CVE-2022-0265 Java开源组件安全之Hazelcast XXE漏洞


修改`SAXParserFactory`对象实例化方式为`XmlUtil.getSAXParserFactory`:


【开源组件系列】CVE-2022-0265 Java开源组件安全之Hazelcast XXE漏洞


添加了安全配置:


setFeature(dbf, "http://apache.org/xml/features/disallow-doctype-decl");



由于传播、利用此文档提供的信息而造成任何直接或间接的后果及损害,均由使用本人负责,且听安全团队及文章作者不为此承担任何责任。



【开源组件系列】CVE-2022-0265 Java开源组件安全之Hazelcast XXE漏洞


点关注,不迷路!

【开源组件系列】CVE-2022-0265 Java开源组件安全之Hazelcast XXE漏洞

原文始发于微信公众号(且听安全):【开源组件系列】CVE-2022-0265 Java开源组件安全之Hazelcast XXE漏洞

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月20日08:36:37
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  【开源组件系列】CVE-2022-0265 Java开源组件安全之Hazelcast XXE漏洞 http://cn-sec.com/archives/928821.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: