【问题标题】:How to quickly check AWS Lambdas with Log4j2 library如何使用 Log4j2 库快速检查 AWS Lambda
【发布时间】:2022-01-23 10:17:00
【问题描述】:

在拥有超过 100 个使用 Java 8 运行时的 Lambda 函数的环境中,我如何快速检查是否有任何 Lambda 使用了 Log4j 2 易受攻击的版本?

【问题讨论】:

  • 这取决于你如何构建你的 lambda。希望答案是他们都使用相同的版本,这是在你的父 pom 中设置的 :-)

标签: java amazon-web-services aws-lambda log4j2


【解决方案1】:

检查您的构建脚本及其输出会容易得多,但假设您不能这样做......

要检查现有功能,您需要下载功能代码。如果您运行 aws lambda get-function,您应该会看到一个 Code 元素,其 URL 指向 AWS 服务器(例如,prod-04-2014-tasks.s3.us-east-1.amazonaws.com)。这是一个公共 URL,您可以使用 wgetcurl 从中下载 Lambda 的部署包。

然后,解压缩部署包。如果它包含 JAR 文件,只需查找是否存在易受攻击的 Log4J 版本。

但是,如果它是只包含类文件的“uberjar”,那么您需要查看文件MessagePatternConverter.class 上的日期。如果是在 2021-12-05 之前,那么您很容易受到攻击。查找日期为 2021-12-20 以获取最新版本 (2.17.0)。

【讨论】:

    【解决方案2】:

    AWS 很可能已经为您提供了保障。

    来自https://aws.amazon.com/security/security-bulletins/AWS-2021-006/

    AWS Lambda

    AWS Lambda 在其托管运行时或基础中不包含 Log4j2 容器图像。因此,这些不受该问题的影响 在 CVE-2021-44228 和 CVE-2021-45046 中描述。

    对于客户功能包含受影响的 Log4j2 的情况 版本,我们已对 Lambda Java 托管运行时应用了更改 和基础容器镜像(Java 8、AL2 上的 Java 8 和 Java 11) 有助于缓解 CVE-2021-44228 和 CVE-2021-45046 中的问题。 使用托管运行时的客户将应用更改 自动。

    使用容器镜像的客户需要从最新版本重建 基础容器镜像,然后重新部署。

    独立于这一变化,我们强烈鼓励所有客户 功能包括更新到最新版本的 Log4j2。 具体来说,使用 aws-lambda-java-log4j2 库的客户 他们的功能应该更新到版本 1.4.0 并重新部署他们的 职能。此版本更新了底层 Log4j2 实用程序 依赖于版本 2.16.0。更新后的 aws-lambda-java-log4j2 二进制文件可在 Maven 存储库中获得,其源代码为 在 Github 上可用。

    【讨论】:

    • 谢谢@Yannik。作为一个对Java了解不多的人,如何验证一个函数是否包含受影响的Log4j2版本。
    • 你在使用容器镜像@Gnay 吗?否则我会假设 AWS 对 Java 运行时应用的更改就足够了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多