CVE-2020-17521 | Apache Groovy漏洞通告
發布時間 2020-12-070x00 漏洞概述
CVE ID | CVE-2020-17521 | 時 間 | 2020-12-07 |
類 型 | 權限升級/信息泄露 | 等 級 | 高危 |
遠程利用 | 否 | 影響范圍 |
0x01 漏洞詳情
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/