前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用白名单修复Oracle WebLogic中的RCE漏洞(CVE-2019-2729)

使用白名单修复Oracle WebLogic中的RCE漏洞(CVE-2019-2729)

作者头像
C4rpeDime
发布2022-04-25 19:43:10
1.9K0
发布2022-04-25 19:43:10
举报
文章被收录于专栏:黑白安全黑白安全

Oracle WebLogic最近在其软件中披露并修补了远程代码执行(RCE)漏洞,其中许多漏洞是由于不安全的反序列化造成的。Oracle 在2019年6月18日的带外安全补丁中解决了最新的漏洞CVE-2019-2729 .CVE -2019-2729的CVSS评分为9.8,这使其成为一个关键漏洞。此漏洞相对易于利用,但需要Java Development

Oracle WebLogic最近在其软件中披露并修补了远程代码执行(RCE)漏洞,其中许多漏洞是由于不安全的反序列化造成的。Oracle 在2019年6月18日的带外安全补丁中解决了最新的漏洞CVE-2019-2729 .CVE -2019-2729的CVSS评分为9.8,这使其成为一个关键漏洞。此漏洞相对易于利用,但需要Java Development Kit(JDK)1.6。默认情况下,WebLogic版本10.3.6随JDK 1.6一起提供。

cve-2019-2729基本上是CVE-2019-2725的旁路。然而,这个安全问题首次出现在2017年4月24日,即CVE-2017-3506。我们仔细研究了CVE-2019-2729,看看这类漏洞是如何得到纠正的 - 特别是通过列入黑名单或列入白名单 - 以及为什么它已经成为一个反复出现的安全问题。

CVE-2019-2725和CVE-2019-2729的根本原因 WebLogic服务器中的上下文传播使得在支持的协议中携带应用程序上下文信息成为可能。此信息通过可扩展标记语言序列化Java(XML)对象传递。默认情况下,以下URL通过简单对象访问协议(SOAP)请求接受上下文信息: / _async / * / wls-wsat / *

序列化的XML数据包含在SOAP请求的<work:WorkContext>标记中。WorkContext信息的反序列化在WorkContextXmlInputAdapter   类中实现,如图1所示。

使用白名单修复Oracle WebLogic中的RCE漏洞(CVE 2019 2729) 漏洞修复 CVE 2019 2729 WEB安全  第1张
使用白名单修复Oracle WebLogic中的RCE漏洞(CVE 2019 2729) 漏洞修复 CVE 2019 2729 WEB安全 第1张

图1. WorkContextXmlInputAdapter类,其中实现了WorkContext信息的反序列化

如上所示,XMLDecoder类用于反序列化上下文信息。应该注意,XMLDecoder是一个不应该与不受信任的输入一起使用的类。正如其他研究工作所证明的那样,它允许对任意类型进行任意方法和构造函数调用。由于使用XMLDecoder的风险以及作为CVE-2017-3506的缓解,已在WorkContextXmlInputAdapter中添加了validate()函数,以在反序列化之前过滤掉恶意标记。

cve-2019-2725的情况下,漏洞之前的validate()函数如图2所示。

使用白名单修复Oracle WebLogic中的RCE漏洞(CVE 2019 2729) 漏洞修复 CVE 2019 2729 WEB安全  第2张
使用白名单修复Oracle WebLogic中的RCE漏洞(CVE 2019 2729) 漏洞修复 CVE 2019 2729 WEB安全 第2张

图2. CVE-2019-2725之前的validate()函数

如上所示,RCE所需的许多标签被有效列入黑名单。但是,validate()无法考虑<class>标记,这可以允许攻击者使用任意构造函数参数启动任何类。这可以以多种方式使用以实现任意代码执行。一个示例是启动UnitOfWorkChangeSet对象,该对象接受字节数组作为构造函数参数。

使用白名单修复Oracle WebLogic中的RCE漏洞(CVE 2019 2729) 漏洞修复 CVE 2019 2729 WEB安全  第3张
使用白名单修复Oracle WebLogic中的RCE漏洞(CVE 2019 2729) 漏洞修复 CVE 2019 2729 WEB安全 第3张

图3.显示一旦初始化,UnitOfWorkChangeSet如何不加思义地对一个字节数组进行去序列化的代码片段

如图3所示,UnitOfWorkChangeSet将在初始化时不加区分地反序列化该字节数组。例如,具有精心设计的恶意序列化对象的字节数组可用于实现任意代码执行。然后,可以使用Python片段(如图4所示)生成攻击流量。

使用白名单修复Oracle WebLogic中的RCE漏洞(CVE 2019 2729) 漏洞修复 CVE 2019 2729 WEB安全  第4张
使用白名单修复Oracle WebLogic中的RCE漏洞(CVE 2019 2729) 漏洞修复 CVE 2019 2729 WEB安全 第4张

通过产生概念的图4的Python验证(PoC),能够使用所述有效载荷Jdk7u21攻击流量ysoserial

当然,由于此漏洞利用需要<class>标记,Oracle会继续将此标记作为CVE-2019-2725的补丁添加到黑名单中。

使用白名单修复Oracle WebLogic中的RCE漏洞(CVE 2019 2729) 漏洞修复 CVE 2019 2729 WEB安全  第5张
使用白名单修复Oracle WebLogic中的RCE漏洞(CVE 2019 2729) 漏洞修复 CVE 2019 2729 WEB安全 第5张

图5.用于修复CVE-2019-2725的<class>标签的黑名单

CVE-2019-2729:CVE-2019-2725的旁路 另一方面,事实证明CVE-2019-2725的旁路并不是那么复杂。实际上,对于JDK 1.6,使用 <array method =“forName”>标记有效地替换了 <class>标记的功能。只需用 <array method =“forName”>标签替换 <class>标签就可以有效地绕过黑名单。

使用白名单修复Oracle WebLogic中的RCE漏洞(CVE 2019 2729) 漏洞修复 CVE 2019 2729 WEB安全  第6张
使用白名单修复Oracle WebLogic中的RCE漏洞(CVE 2019 2729) 漏洞修复 CVE 2019 2729 WEB安全 第6张

图6. <array method =“forName”>标记(突出显示)绕过<class>标记的黑名单

在这种情况下更有趣的是CVE-2019-2729被修补的方式:Oracle选择使用白名单而不是黑名单。这是通过新引入的validateFormat()函数实现的,其中白名单规则在WorkContextFormatInfo中定义。

使用白名单修复Oracle WebLogic中的RCE漏洞(CVE 2019 2729) 漏洞修复 CVE 2019 2729 WEB安全  第7张
使用白名单修复Oracle WebLogic中的RCE漏洞(CVE 2019 2729) 漏洞修复 CVE 2019 2729 WEB安全 第7张

图7.显示白名单如何用于修复CVE-2019-2729的代码段

从图7中可以看出,白名单仍然允许<array>标记,但只允许包含带有“byte”值的“class”属性或带有任何值的“length”属性。

最佳实践 虽然起初它可能看起来不是那么黑白,但通常使用白名单来阻止恶意内容比使用黑名单更有效,特别是在防止可能重新引入安全问题的旁路时。系统管理员,开发人员和IT /安全团队应始终采用最佳实践和缓解措施,其中包括:

  • 使用Oracle的紧急补丁升级到产品的非易受攻击版本
  • 通过删除war和wls-wsat.war防止访问易受攻击的组件,然后重新启动WebLogic服务(阻止访问易受攻击的URL)
  • 仅限受影响的通信端口访问受信任的主机
  • 通过入侵防御系统主动监控,检测和阻止恶意流量
  • 添加多层安全机制,例如虚拟补丁,这些机制优先利用已知,未知和未公开的漏洞; 和应用程序控制,可防止未经授权或可疑的应用程序执行

趋势科技  Deep Security ™和  Vulnerability Protection  解决方案通过以下深度包检测(DPI)规则保护系统和用户:

  • 1009816 - Oracle Weblogic Server远程执行代码漏洞(CVE-2019-2729)

趋势科技服务器深度发现督察  保护客户免受可能利用通过该DDI规则CVE-2019年至2729年的威胁:

趋势科技™TippingPoint威胁防护系统已发布此漏洞的客户屏蔽编写器(CSW)文件,供客户在TMC上下载  。适用的规则如下:

  • C1000001:HTTP:Oracle WebLogic Server远程执行代码漏洞

作者:Sivathmican Sivakumaran(漏洞研究员)

翻译自https://blog.trendmicro.com/trendlabs-security-intelligence/using-whitelisting-to-remediate-an-rce-vulnerability-cve-2019-2729-in-oracle-weblogic/?tdsourcetag=s_pcqq_aiomsg

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-06-28),如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档