如何修复log4j漏洞- Gradle

gab6jxml  于 2022-11-06  发布在  其他
关注(0)|答案(3)|浏览(172)

众所周知,log4j漏洞已经出现。我们如何在自己的项目中弥补这一差距?我们是否有机会在gradle上推出一个版本?

sg2wtvxw

sg2wtvxw1#

我自己的解决方案

constraints{
        implementation("org.apache.logging.log4j:log4j-core"){
            version{
                strictly("[2.15,3[")
                prefer("2.15.0")
            }
            because("CVE-2021-44228 : Log4j is vulnerable to remote code execution")
        }
    }
zqdjd7g9

zqdjd7g92#

这是我们在spring-boot项目中使用的解决方案,在该项目中,我们使用enforcedPlatform方法管理依赖关系:

dependencies {
  api(enforcedPlatform("org.springframework.boot:spring-boot-dependencies:${springBootVersion}")) {
    exclude(group: "org.apache.logging.log4j")
  }
  api(platform("org.apache.logging.log4j:log4j-bom:2.15.0")) {
    because "https://nvd.nist.gov/vuln/detail/CVE-2021-44228"
  }
}

这是设计到位,直到这样的时间,我们在一个位置,以升级到一个版本的Sping Boot 拉在修复版本本身。

ecbunoof

ecbunoof3#

警告:

截至2021-12-16本帖中的其他答案已过期。请勿直接使用其他答案。

更新时间:2021年12月18日......

请记住,始终从下列资源中查找最新信息

CVE-2021-45105... 2.16.0和2.12.2不再是有效的修正!当前的修正版本是2.17.0(Java 8)和2.12.3(Java 7)。所有其他Java版本必须采取权宜之计(从log4j-core JAR中删除JndiLookup.class文件)。

我已经相应地更新了我下面的消息。


虽然大多数需要知道的人可能已经知道足够做他们需要做的事情,但我想我还是会把这个以防万一...

  • 遵循这些资源中的指导...可能会发生变化,但是

截至2021年12月18日

基本上

  • 如果可能,请删除log4j-core JAR文件
  • 从两台正在运行的计算机立即修复,以及
  • 在源代码/源代码管理文件中,以防止将来的版本/发布/部署覆盖更改
  • 如果由于依赖关系而无法实现,请升级它们
  • 如果您运行的是Java8,则可以升级到log4j 2.17.0+
  • 如果您运行的是Java的早期版本,则可以升级到log4j 2.12.3
  • 如果您运行的是旧版本的Java,则需要升级到最新版本的Java,然后使用最新版本的Log4J
  • 同样,这些更改必须同时发生在运行的计算机和代码中
  • 如果由于某种原因,这两种方法都不可行......则存在从log4j-core JAR中删除JndiLookup.class文件的非补救性权宜之计。
  • 在Linux上,有一个使用zip命令的一行程序,默认情况下,该命令与大多数Linux发行版打包在一起。
  • zip -q -d "$LOG4J_JAR_PATH" org/apache/logging/log4j/core/lookup/JndiLookup.class
  • 在撰写本文时,Windows上的大多数在线指南都建议您执行以下操作(同样......假设您无法执行上述删除JAR或升级选项中的任何一个):
  • 安装类似7-zip的软件
  • 找到所有的log4j-core JAR文件,并对每个文件执行以下操作...
  • 重命名JAR以将扩展名更改为.zip
  • 使用7-zip解压缩JAR(现在扩展名为.zip
  • 从解压缩的文件夹中找到并删除JndiLookup.class文件
  • 路径为\\path\\to\\unzippedFolder\\org\\apache\\logging\\log4j\\core\\lookup\\JndiLookup.class
  • 删除旧的JAR文件(现在扩展名为.zip)
  • 使用7-zip重新压缩文件夹
  • 重命名新的.zip文件夹,将扩展名更改为.jar
  • 还有一些选项可供使用Power Shell
  • Reddit thread: log4j_0day_being_exploited显示器
  • Ctrl+f代表“PowerShell”

如果您只有1或2个JAR文件需要处理,并且您不介意安装7-zip或您有PowerShell来完成此操作,这是没问题的。但是,如果您有很多JAR文件,或者如果您不想安装7-zip,并且无法访问Power Shell,我创建了一个开源VBS脚本,它将为您完成此操作,而无需安装任何其他软件。https://github.com/CrazyKidJack/Windowslog4jClassRemover
阅读README和发行说明https://github.com/CrazyKidJack/Windowslog4jClassRemover/releases/latest

相关问题