【发布时间】:2022-01-17 13:15:10
【问题描述】:
众所周知,log4j 漏洞已经出现。我们如何才能在我们自己的项目中缩小这一差距?我们有机会在 gradle 上推送一个版本吗?
【问题讨论】:
众所周知,log4j 漏洞已经出现。我们如何才能在我们自己的项目中缩小这一差距?我们有机会在 gradle 上推送一个版本吗?
【问题讨论】:
我自己的帮助解决方案
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")
}
}
【讨论】:
这是我们在 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"
}
}
这是为了在我们能够升级到引入固定版本本身的 Spring Boot 版本之前就位。
【讨论】:
截至 2021-12-16 此线程中的其他答案已过时。不要直接使用其他答案。
2.15
请记住始终从下面列出的资源中查看最新信息
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 文件。
我已相应地在下面更新了我的消息。
补救措施:
CVE-2021-45046 ... CVE-2021-44228 ... CVE-2021-45105
虽然大多数需要知道的人可能已经知道足够多的知识来做他们需要做的事情,但我想我还是会把这个放在以防万一......
基本上是
zip 命令提供了一种止损选项,默认情况下,大多数 Linux 发行版都附带该命令。
zip -q -d "$LOG4J_JAR_PATH" org/apache/logging/log4j/core/lookup/JndiLookup.class.zip
.zip 扩展名)\\path\\to\\unzippedFolder\\org\\apache\\logging\\log4j\\core\\lookup\\JndiLookup.class
.jar
如果您只有 1 或 2 个 JAR 文件要处理并且您不介意安装 7-zip 或者您有 PowerShell 可用,这很好。但是,如果您有很多 JAR 文件,或者您不想安装 7-zip 并且无权访问 Power Shell,我创建了一个开源 VBS 脚本,无需安装即可为您执行此操作任何附加软件。 https://github.com/CrazyKidJack/Windowslog4jClassRemover
阅读自述文件和发行说明https://github.com/CrazyKidJack/Windowslog4jClassRemover/releases/latest
【讨论】: