Google 云平台和 PCF 上的 Log4j 漏洞 (CVE-2021-44228)

Log4j Vulnerability (CVE-2021-44228) on Google Cloud Platform and PCF

目前已经发布了很多建议的步骤,用于根据 Spring Blog 从依赖项中排除 log4j-core 库或升级到最新(version 2.15 以上)版本。是否有任何推荐的工具可用于保护部署在 Google App Engine 或 Pivotal Cloud Foundry(PCF) 中的 spring 应用程序以保护而不是修补它们以进行重新部署?

另一个必要的问题是,如果我的应用程序(微服务 spring 应用程序)使用另一个微服务作为它的某些服务,如果它依赖于另一个微服务,并且该微服务是否已经使用易受攻击的,这是否会使我的应用程序容易受到攻击log4j-core 的版本?

第一个问题的简短回答可能是。您可以通过使用 WAF 中的规则丢弃 ${jndi://ldap 模式来保护您的 application/service。然而,这个(base64 编码等)的变化太多了,它不会万无一失。如果您担心依赖关系,您应该设置 JVM 参数并重新部署您的应用程序以防止查找作为解决方法。

关于你的第二个问题 - 如果第二个微服务被传递相同的输入并且它正在记录,那么答案是肯定的。

关于你的第一个问题,你可以设置一个环境变量来禁用 log4j 中的替换查找:

LOG4J_FORMAT_MSG_NO_LOOKUPS=true

请注意,这仅适用于 log4j >= 2.10。

我相信您可以在 PCF 中设置环境变量而无需重新部署服务(当然,需要重新启动),因此不需要新版本。参见:https://docs.pivotal.io/pivotalcf/2-3/devguide/deploy-apps/environment-variable.html and https://cli.cloudfoundry.org/en-US/v6/set-env.html

为了查看您的 spring-boot 应用程序是否易受攻击,您可以使用我为此目的创建的 spring-boot 测试:https://github.com/chilit-nl/log4shell-example - 你可以使用和不使用环境变量测试您的应用程序,看看它是否有任何影响(假设您的应用程序当前易受攻击)。