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

2019-06-26 约 78 字 预计阅读 1 分钟

声明:本文 【CVE-2019-2729:使用白名单修复Oracle WebLogic中的RCE漏洞】 由作者 Pinging 于 2019-06-26 09:24:00 首发 先知社区 曾经 浏览数 53 次

感谢 Pinging 的辛苦付出!

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

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

CVE-2019-2725和CVE-2019-2729的根本原因

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

/_async/*
/wls-wsat/*

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

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

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

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

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

Python概念验证能够使用ysoserial生成的Jdk7u21payload生成攻击流量。

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

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

CVE-2019-2729:CVE-2019-2725的Bypass

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

<array method =“forName”>标记,绕过<class>标记的黑名单。

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

代码段显示如何使用白名单来修复CVE-2019-2729

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

实践

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

  • 使用Oracle的紧急补丁升级到产品的非易受攻击版本

  • 通过删除warwls-wsat.war防止访问易受攻击的组件,然后重新启动WebLogic服务(阻止访问易受攻击的URL)

  • 仅限受影响的通信端口访问受信任的主机

  • 通过入侵防御系统主动监控,检测和阻止恶意流量

  • 添加多层安全机制,例如虚拟补丁,这些机制优先利用已知,未知和未公开的漏洞; 和应用程序控制,可防止未经授权或可疑的应用程序执行

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

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

关键词:[‘安全技术’, ‘漏洞分析’]


author

旭达网络

旭达网络技术博客,曾记录各种技术问题,一贴搞定.
本文采用知识共享署名 4.0 国际许可协议进行许可。

We notice you're using an adblocker. If you like our webite please keep us running by whitelisting this site in your ad blocker. We’re serving quality, related ads only. Thank you!

I've whitelisted your website.

Not now