CVE-2020-13942 | Apache Unomi远程代码执行误差通告

宣布时间 2020-11-19

0x00 误差概述

CNVD   ID

CVE-2020-13942

时      间

2020-11-19

类     型

RCE

等      级

严重

远程使用

是

影响规模

Apache Unomi < 1.5.2

 

0x01 误差详情

 

image.png

Apache Unomi是一个Java开源客户数据平台,旨在管理客户和会见者的数据,并个性化客户体验。

2020年11月17日,Apache Unomi被披露保存严重清静误差(CVE-2020-13942),其CVSS评分为10分。

由于Apache Unomi允许远程攻击者使用包括恣意类的MVEL和OGNL表达式发送恶意请求,最终可导致攻击者使用Unomi应用程序权限远程执行代码。

 

误差细节:

Unomi依赖于诸如OGNL或MVEL之类的表达式语言(EL),以允许用户制订重大而详尽的盘问。其基于EL的条件来会见存储数据。

在1.5.1之前的版本中,攻击者通过注入可以对Unomi举行RCE的攻击。攻击者能够通过发送单个请求在Unomi服务器上执行恣意代码和OS下令。此误差CVE ID为CVE-2020-11975,现在虽然已经修复,但修复并不充分,可被容易绕过。

CVE-2020-11975的补丁中引入了SecureFilteringClassLoader函数,该函数依赖allowlist和blocklist检查表达式中使用的类。SecureFilteringClassLoader依赖这样一个不准确的假设:MVEL和OGNL表达式中的每个类都是使用ClassLoader类的loadClass()要领加载的。SecureFilteringClassLoader笼罩了ClassLoader loadClass要领,并引入了allowlist和blocklist检查。事实上,除了挪用loadClass()要领外,尚有多种加载类的要领,这会导致清静绕过,并使Unomi遭受RCE攻击。

Unomi 1.5.1中,允许评估条件使用MVEL表达式,该条件包括恣意类。在某些情形下,MVEL表达式使用已实例化的类(例如Runtime或System),而无需挪用loadClass()。

以下HTTP请求的条件是带有MVEL表达式的参数(script::Runtime r = Runtime.getRuntime(); r.exec(”touch /tmp/POC”);)。Unomi会剖析该值,并以MVEL表达式的形式执行script ::之后的代码。以下示例中的表达式会建设一个Runtime工具并运行“ touch” OS下令,该下令会在/tmp目录中建设一个空文件。

image.png

除此之外,尚有一种要领可以在OGNL表达式中加载类,而无需触发loadClass()挪用。以下HTTP请求能够获取运行时并使用Java Reflections API执行OS下令。

image.png

以上两种方法能够绕过1.5.1中引入的清静控制。别的,Unomi包括大宗数据并与其它系统细麋集成,因此通常是攻击者的理想目的。

 

0x02 处置惩罚建议

现在Apache Unomi已经宣布了1.5.2更新版本。建议实时升级。

缓解步伐:

只管阻止将数据放入表达式诠释器中。

下载链接:

http://unomi.apache.org/download.html

 

0x03 参考链接

https://securityboulevard.com/2020/11/apache-unomi-cve-2020-13942-rce-vulnerabilities-discovered/?

https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-13942

 

0x04 时间线

2020-11-02  Unomi宣布清静更新

2020-11-19  VSRC宣布清静通告

 

0x05 附录

 

CVSS评分标准官网:http://www.first.org/cvss/

 

 

 

image.png