Google Cloud Platform 和 PCF 上的 Log4j 漏洞 (CVE-2021-44228)

Posted

技术标签:

【中文标题】Google Cloud Platform 和 PCF 上的 Log4j 漏洞 (CVE-2021-44228)【英文标题】:Log4j Vulnerability (CVE-2021-44228) on Google Cloud Platform and PCF 【发布时间】:2022-01-17 03:54:10 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

LOG4J_FORMAT_MSG_NO_LOOKUPS=true

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

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

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

【讨论】:

非常感谢,我会试一试并告诉你。 非常感谢您的帮助和指导。它有帮助!【参考方案2】:

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

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

【讨论】:

以上是关于Google Cloud Platform 和 PCF 上的 Log4j 漏洞 (CVE-2021-44228)的主要内容,如果未能解决你的问题,请参考以下文章

用于配置 OAuth2 同意和凭据的 Google Cloud Platform API

两个 Firebase 只链接到一个 Google Cloud Platform?

google-cloud-platform:外部 DNS 配置不起作用

使用 Terraform 和启动脚本创建专用网络 - Google Cloud Platform

使用Google Cloud Platform的Fastai

Google Cloud Platform:集成云源存储库和ReadTheDocs