Databricks最近發表了一篇博客Log4j 2漏洞(CVE-2021-44228)研究與評估.Databricks平台沒有直接使用已知受此漏洞影響的Log4j版本,我們認為這種方式可能是脆弱的。Beplay体育安卓版本
Databricks也不使用Log4j 1中受影響的類。X有已知的弱點(cve - 2021 - 4104,cve - 2020 - 9488,cve - 2019 - 17571).然而,如果您的代碼使用這些類之一(JMSAppender或SocketServer),您的使用可能會受到這些漏洞的潛在影響。
如果您的代碼使用Log4j,則應該升級到Log4j 2.17或更高版本。
如果由於技術原因無法升級,可以使用全局初始化腳本(AWS|Azure|GCP)在集群啟動時從Log4j中剝離受影響的類。
配置全局init腳本
AWS
- 轉到管理控製台並單擊全球Init腳本選項卡。
- 單擊+添加按鈕。
- 輸入腳本的名稱。
- 將以下腳本複製到腳本字段。
% sh # !/bin/bash初始化腳本刪除某些Log4J' FILES_TO_DELETE=(org/apache/log4j/net/JMSAppender.class / apache/log4j/net/socketserver .class) find "/databricks" \ -name '*log4j*.jar' \ -exec echo -e "\nProcessing {}" \;-exec zip -d {} "${FILES_TO_DELETE[@]}" \;退出0
- 如果您為您的工作區配置了多個全局初始化腳本,那麼您應該將該腳本配置為在其他腳本之後運行。
- 確保啟用開關已打開。
- 點擊添加.
- 重新啟動所有正在運行的集群。
Azure
- 轉到管理控製台並單擊全球Init腳本選項卡。
- 單擊+添加按鈕。
- 輸入腳本的名稱。
- 將以下腳本複製到腳本字段。
% sh # !/bin/bash初始化腳本刪除某些Log4J' FILES_TO_DELETE=(org/apache/log4j/net/JMSAppender.class / apache/log4j/net/socketserver .class) find "/databricks" \ -name '*log4j*.jar' \ -exec echo -e "\nProcessing {}" \;-exec zip -d {} "${FILES_TO_DELETE[@]}" \;退出0
- 如果您為您的工作區配置了多個全局初始化腳本,那麼您應該將該腳本配置為在其他腳本之後運行。
- 確保啟用開關已打開。
- 點擊添加.
- 重新啟動所有正在運行的集群。
GCP
使用全局初始化腳本API 2.0將以下初始化腳本應用到您工作區中的每個集群。
% sh # !/bin/bash初始化腳本刪除某些Log4J' FILES_TO_DELETE=(org/apache/log4j/net/JMSAppender.class / apache/log4j/net/socketserver .class) find "/databricks" \ -name '*log4j*.jar' \ -exec echo -e "\nProcessing {}" \;-exec zip -d {} "${FILES_TO_DELETE[@]}" \;退出0
應用全局初始化腳本後,重新啟動所有正在運行的集群。
刪除驗證受影響的類不可用
您應該在每個集群上運行一個測試,以確保受影響的類不可用。
測試1
可以對筆記本中受影響的類運行斷言檢查。
%scala assert(this.getClass.getClassLoader().getResource("org/apache/log4j/net/JMSAppender.class") == null)斷言(this.getClass.getClassLoader().getResource("org/apache/log4j/net/SocketServer.class") == null)
如果禁用了受影響的類,則此示例代碼可以成功運行。
如果您沒有禁用受影響的類,這個示例代碼應該返回一個錯誤。
測試2
可以嚐試將受影響的類導入到筆記本中。
%scala import org.apache.log4j.net.JMSAppender import org.apache.log4j.net.SocketServer . jmsappender
如果沒有禁用受影響的類,則此示例代碼可以成功運行。
如果禁用了受影響的類,此示例代碼應該返回一個錯誤。
警告
在一些情況下,您可以重新引入Log4j 1。x版本的JMSAppender或SocketServer。
問題
如果在Log4j 1上安裝帶有傳遞依賴項的Maven庫。X,它的所有類都被重新添加到類路徑中。
解決方案
可以通過將Log4j添加到除外責任字段在安裝Maven庫時。
問題
如果配置了外部Apache Hive轉移庫,Apache Spark將使用Ivy解析和下載正確的轉移庫客戶端庫及其所有的傳遞依賴項,可能包括Log4j 1.x。
為了加速集群啟動,可以將下載的jar緩存到DBFS上,並使用一個初始化腳本從緩存中安裝。如果像這樣緩存jar,則可能Log4j 1。X可以包括在內。
解決方案
您可以配置外部metastore的初始化腳本來刪除受影響的類。