Gradle/Java:如何安全升级log4j?

Pep*_*ria 10 java security logging gradle

鉴于最近的 Log4J漏洞, 在 gradle 项目中升级传递依赖项的最安全方法是什么?我的项目没有明确使用 log4j(它使用 logback),但它有许多依赖项带来了易受攻击的版本(< 2.15.0)。首先,如果我的SLF4J使用logback,是否需要升级任何东西?如果我要升级,如何强制 2.15 而不是旧版本出现在类路径中?

Lun*_*box 12

将以下内容添加到您的gradle.build文件中:

\n
configurations.all {\n  resolutionStrategy.eachDependency { details ->\n    if (details.requested.group == \'org.apache.logging.log4j\') {\n      details.useVersion \'2.21.1\'\n      details.because \'zero-day exploits suck\'\n    }\n  }\n}\n\ndependencies {\n\xe2\x80\xa6\n}\n
Run Code Online (Sandbox Code Playgroud)\n

请注意,正如文档指出的:

\n
\n

以下机制允许您编写直接注入解析引擎的规则。因此,它们可以被视为强力解决方案,可能隐藏未来的问题(例如,如果添加新的依赖项)。因此,一般建议是仅在其他方法不够时才使用以下机制。

\n
\n

我意识到OP要求“最安全”的方式来升级依赖项——我选择将其解释为最有可能消除零日漏洞。尽管如此,我确实认识到这种强力方法并不能保证库之间的兼容性,但这应该确保您的依赖树/构建中不会出现易受攻击的 log4j 版本。

\n

当然,您应该在进行gradle dependencies更改后运行,以确保更改已生效并且没有任何存在问题的挥之不去的版本。

\n

更新:删除了版本比较,如此处推荐

\n

更新:版本增加至2.21.1

\n