验证集群的Log4j版本

验证的版本Log4j集群上安装,如果需要升级。

写的亚当Pavlacka

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

砖最近发表一篇博客Log4j 2脆弱性(cve - 2021 - 44228)的研究和评估。砖不直接使用Log4j版本已知受此影响的脆弱性在砖平台在某种程度上我们理解可能是脆弱的。bob体育客户端下载

如果使用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扫描仪是第三方提供的开源软件。bob下载地址砖没有表示任何形式的关于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。

这篇文章有用吗?