驗證集群的Log4j版本

驗證的版本Log4j集群上安裝,如果需要升級。

寫的亞當Pavlacka

去年發表在:2022年5月16日

磚最近發表一篇博客Log4j 2脆弱性(cve - 2021 - 44228)的研究和評估。磚不直接使用Log4j版本已知受此影響的脆弱性在磚平台在某種程度上我們理解可能是脆弱的。Beplay体育安卓版本

如果使用Log4j集群內(例如,如果您正在處理用戶控製字符串通過Log4j),使用可能容易受到攻擊如果你有安裝,使用,或影響版本也取決於一個影響版本的安裝服務。

這篇文章解釋了如何檢查您的集群安裝的Log4j版本2和如何升級這些實例。

刪除

警告

免責聲明:本文中提供的建議反映磚的最好的理解方法,使這些決定。因為我們不控製你的代碼,我們不能保證,如果你找不到Log4j遵循這些說明或使用建議的掃描儀,影響Log4j代碼在代碼中不存在。

檢查Log4j 2是安裝

檢查手動安裝

手動檢查庫安裝在您的集群(AWS|Azure|GCP)。

如果你安裝了顯式的Log4j版本通過Maven 2,它是列在集群中的UI (AWS|Azure|GCP)。

掃描路徑

掃描來檢查類路徑的Log4j版本2。

  1. 開始您的集群。
  2. 附加一個筆記本到您的集群。
  3. 運行這段代碼掃描你的類路徑:
    scala % {scala.util進口。{嚐試,成功,失敗}導入. lang。ClassNotFoundException (forname (“org.apache.logging.log4j.core試試。記錄器”,假,this.getClass.getClassLoader)){匹配成功案例(loggerCls) = >選項(loggerCls.getPackage){匹配情況下一些(pkg) = > println (s”版本:${包裹。getSpecificationTitle} $ {pkg.getSpecificationVersion}”)情況下沒有= > println(“無法確定Log4J 2版本”)}失敗案例(e: ClassNotFoundException) = > println(“不能裝入Log4J 2類”)情況下失敗(e) = > println (s“意想不到的錯誤:$ e”)把e}}
  • 如果Log4j 2不存在在您的類路徑中,可以看到結果是這樣的:
    無法加載Log4J 2類
  • 如果Log4j 2存在在您的類路徑中,您應該看到這樣的結果,其中包括Log4j 2版:
    版本:Apache Log4j 2.15.0核心
刪除

信息

這種方法不確定情況下,Log4j類陰影或包含的過渡形式。

掃描所有用戶安裝jar

定位上的所有用戶安裝jar文件您的集群並運行一個掃描儀檢查脆弱Log4j 2版本。

  1. 開始您的集群。
  2. 附加一個筆記本到您的集群。
  3. 運行這段代碼來識別jar文件的位置:
    % scala org.apache.spark進口。_ val sparkEnv = sparkEnv。得到val字段= SparkEnv.get.getClass.getDeclaredField (driverTmpDir) field.setAccessible(真正的)println (s”你的罐子是安裝在$ {field.get (sparkEnv) .asInstanceOf[選項[String]] . get} \ n”)
  4. 代碼顯示jar文件的位置。
    你的罐子是安裝在/ local_disk0 /火花- 1 - a6be695 - 9318 - 463 - 256 c - b966 c32e3771c / userfiles - 582 - ca64b - 93 - c9 - 444 - c - 85 - b8 - 7779 - bd2c5e52
  5. jar文件下載到您的本地機器上。
  6. 運行一個掃描器Logpresso2檢查脆弱Log4j版本。
刪除

警告

免責聲明:Logpresso掃描儀是第三方提供的開源軟件。磚沒有表示任何形式的關於Logpresso的功能和質量。

升級你的Log4j版本2

通過集群升級界麵

  • 如果您手動安裝Log4j 2通過集群UI,確保它是版本2.17或更高版本。在這種情況下,不需要操作。
  • 如果您手動安裝Log4j 2通過集群UI,它等於或低於2.16,您應該卸載的圖書館集群(AWS|Azure|GCP)和安裝版本2.17或更高版本。
刪除

信息

如果Log4j 2是一個傳遞依賴另一個圖書館,圖書館使用Log4j 2升級到一個安全的版本。你也可以排除Log4j 2包拉在一個過時的圖書館,並明確地包含了一個安全的Log4j版本2。這是不能保證工作。

通過命令行升級

如果您已經安裝了Log4j 2通過命令行(或通過SSH),使用相同的方法來Log4j 2升級到一個安全的版本。

升級自定義構建jar

如果你在自定義構建jar包括Log4j 2, Log4j 2升級到一個安全的版本,重建你的罐子。

重新更新jar集群。

重新啟動集群升級之後

重新啟動集群升級之後Log4j 2。