CVE-2020-17521 | Apache Groovy漏洞通告

发布时间 2020-12-07

0x00 漏洞概述

CVE   ID

CVE-2020-17521

时    间

2020-12-07

类    型

权限升级/信息泄露

等    级

高危

远程利用

影响范围


 

0x01 漏洞详情

 

image.png

 

Groovy 是 Apache 旗下的一门基于 JVM 平台的动态编程语言,在语言的设计上其吸纳了 Python、Ruby 和 Smalltalk 语言的特点,语法简练,开发效率高。

2020年12月06日,Apache发布安全公告,Groovy中存在一个安全漏洞(CVE-2020-17521)。Groovy正在使用JDK中的一种方法,现在将该方法标记为不适用于安全敏感的上下文。另外,Groovy未检查创建临时目录时的相关flag,这将存在安全问题。

此漏洞可能会影响类Unix系统以及旧版的Mac OSX和Windows系统。Groovy可以在这些系统中创建临时目录生成Java Stub以供内部调用,或者通过两种扩展方法(详见参考链接)来创建临时目录,该目录会在系统上的所有用户之间共享。

分析此漏洞的影响时,前提条件如下:

Groovy代码是否在受影响的操作系统上运行?

其他用户是否可以访问运行Groovy代码的机器?

Groovy代码是否使用createTempDir两种扩展方法之一创建临时目录?

如果Groovy使用createTempDir两种扩展方法之一来创建临时目录,Groovy代码在受影响的操作系统上运行,可执行代码被写入或存储在临时目录中,并且其他用户可以访问运行Groovy代码的机器,则存在本地权限提升的风险;如果Groovy使用createTempDir两种扩展方法之一来创建临时目录,Groovy代码在受影响的操作系统上运行,Groovy代码将敏感信息(例如API密钥或密码)写入临时目录,并且其他用户可以访问运行Groovy代码的机器,则将存在信息泄露或修改的风险。

对于固定版本,Groovy 2.5及更高版本现在使用一种更新JDK的方法来修复此漏洞,该方法将创建一个只有Groovy代码的用户才能读取的目录。Groovy 2.4版本也适用于这种方法,除其JDK版本小于JDK7。如果JDK版本在JDK7之前,可以使用fallback implementation来检查是否成功创建了临时目录,但在此种情况下可修改可执行文件或信息,因此仍可能导致敏感信息泄露。Groovy 2.4/JDK 6用户建议使用java.io.tmpdir。

 

影响范围:

Codehaus 2.0-2.4.4

Apache Groovy 2.4.4-2.4.20、2.5.0-2.5.13、3.0.0-3.0.6、4.0.0-alpha-1。

 

0x02 处置建议

目前Apache已经修复了此漏洞,建议参考以下版本及时更新。

Apache Groovy 2.4.21、2.5.14、3.0.7、4.0.0-alpha-2。

缓解措施:

将java.io.tmpdir的系统环境变量设置为执行用户独有。此方法适用于所有操作系统和所有Groovy版本

如果不想升级Groovy,则可以考虑使用JDK的Files#createTempDirectory方法来修复。

 

0x03 参考链接

http://mail-archives.apache.org/mod_mbox/www-announce/202012.mbox/%3CCADRx3PPJFs4x2Oyy-auG+=e2nB+bDx_f_tKR7xn2qXW7518Pgg@mail.gmail.com%3E

https://docs.groovy-lang.org/latest/html/groovy-jdk/java/io/File.html#createTempDir

https://docs.groovy-lang.org/latest/html/groovy-jdk/java/io/File.html#createTempDir(java.lang.String,%20java.lang.String)

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

 

0x04 时间线

2020-12-06  Apache发布安全公告

2020-12-07  VSRC发布安全通告

 

0x05 附录

 

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



image.png