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