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