Quarkus 不受 Log4J 漏洞的影响

正如大家所知,Java 社区被 Apache Log4J 2 日志库中的一个普遍存在的漏洞所震撼。您可以在 CVE-2021-44228 中找到有关此漏洞的更多详细信息。

由于 Quarkus、其扩展和依赖项不使用 log4j version 2 核心库,因此它不受此漏洞的影响。在大多数情况下,您可能拥有的任何 Quarkus 支持的项目都不需要采取纠正措施。Quarkus 确实暴露了 log4j API jar,其本身并不容易受到攻击。这纯粹是一个兼容性和转换层,它将调用映射到不同的日志后端(JBoss Logging)。因此,任何对 log4j API 的直接使用都不会受到影响。

安全扫描中的误报

然而,执行安全扫描的工具还不够智能,无法区分传递性依赖与实际捆绑和/或配置在您的应用程序中的内容。

因此,我们确实看到来自这些工具的报告,它们错误地声称 Quarkus 或其生态系统中的某些扩展受到了影响,尽管实际上它们并没有。

此类发现的例子包括 Camel NSQ、Camel CordaVert.x,它们在其传递性依赖项中包含 log4j-core.jar,但在使用 Quarkus 时从未使用过或以任何形式激活过。

您会看到我们更新 Quarkus 和 Quarkus 扩展以减少这些误报。作为 Quarkus 的用户和消费者,您的应用程序不会暴露于 log4j 漏洞。

红帽产品安全公告

您会在 红帽产品安全公告 中看到“Quarkus 的红帽集成 Camel 扩展”受到影响的提及。之所以这样分类,是因为在红帽的产品化构建过程中,由于 Maven 依赖项的传递性,log4j-core.jar 被包含在生成的 Maven 存储库 zip 文件中。这意味着如果您使用 Camel Quarkus,您不会受到 log4j 漏洞的影响,但红帽产品在技术上“附带”了 log4j-core.jar,因此被标记为受影响。

Camel 团队正在进行更新,以从该 Maven 存储库 zip 文件中移除 log4j。作为 Quarkus 或 Camel Quarkus 的用户,您不会受到影响。

建议

虽然 Quarkus 本身不使用或允许使用 Log4j 核心实现库,但基于 Quarkus 或任何其他通用 Java 框架构建的应用程序总有可能通过自定义代码绕过默认提供的日志记录功能。

作为额外的预防措施,我们建议审核您的应用程序依赖项和/或将 log4j2.formatMsgNoLookups 系统属性设置为 true。后者将防止此漏洞的任何意外包含。一种简单的方法是将 -Dlog4j2.formatMsgNoLookups=true 添加到 Quarkus 命令行。

但是,最好的做法是,如果您出于任何原因在类路径中拥有 log4j-core 并已配置日志记录,请确保将其升级到 2.16 或更高版本。

在此漏洞出现后,我们看到了其他类似问题的出现——虽然不如 log4j 漏洞严重,但我们正在积极监控,如果情况发生变化,我们将更新此博客和 我们在官方 Quarkus Github 讨论中的公告主题

我们赞赏 Java 和安全社区,尤其是 Log4J 2 的贡献者们对这个关键问题的迅速响应。

我们特别向 Sonatype 的 OSS 存储库托管致以热烈的问候和赞赏,它使真正受到此漏洞影响的项目能够快速发布。