Log4j漏洞警报:Maven Central中发现了100个暴露的包

Maven Central中的Log4j脆弱包

在非常流行的Apache Log4j库CVE-2021-44228(也称为Log4Shell)和CVE-2021-45046中新发现的漏洞所带来的高风险导致了一场规模和紧迫性不同寻常的安全狂潮。的影响迫使开发人员和安全团队进行调查Log4j漏洞在他们的软件上,揭示了过程中的多种技术挑战。

Log4Shell, JFrog安全研究团队着手帮助开发人员社区尽可能快速有效地应对这种新威胁。当我们分析这个问题时,我们发现使用项目依赖项来检测代码中可能包含的Log4j,虽然很有价值,但并不能检测正在使用的Log4j代码的所有实例。这意味着完全依靠依赖扫描可以不注意脆弱的应用程序。为了提供额外的检测功能,我们发布了specializedLog4j漏洞扫描工具旨在识别源代码和二进制文件中Apache Log4j的存在和使用情况。

在我们最近的博客中:Log4j检测与JFrog OSS扫描工具我们概述了通过扫描包依赖之外的内容来改进Log4j漏洞检测的方法。以下是在使用我们新的OSS工具扫描Maven Central存储库中的Java包时收集到的新发现。

Log4Shell漏洞深度扫描的重要性

检查是否暴露于Log4Shell的明显(但不完整!)方法是查看在构建配置(' pom.xml ', ' gradle. xml ')中是否将Log4j的脆弱版本列为项目的依赖项。构建“等等)。一种更准确、但不可否认更耗时的方法是检查Log4j是否是作为传递依赖项(' gradle -q dependencies '或' mvn dependency:tree ')包含的。有些令人惊讶的是,这种方法也是不完整的,需要进行更深入的调查,以确保最终产品不包含易受攻击的Log4j代码。

扫描完整的依赖项列表可能会错过所包含的Log4j代码的实例的原因是依赖项只指定构建或运行当前工件所需的外部包。如果漏洞代码直接插入到代码库中,那么它就不是依赖项。因此,为了更精确地检测脆弱的Log4j代码,我们需要检查代码本身。

在包中包含Log4j - Maven Central中的发现

先前的研究在美国,发现Maven Central存储库中约有17000个Java包包含易受攻击的log4j-core库作为直接或传递依赖项。我们的调查集中在识别附加的包,其中包含无法通过依赖项扫描检测到的Log4j漏洞——即工件本身中包含易受攻击的Log4j代码的包。

我们调查了Maven Central中包的最新版本,以了解所涉及的数字。总的来说,直接在构件中包含Log4j代码并不像通过依赖项使用Log4j那样普遍。然而,它加起来仍然有数百(~400)个直接包含Log4j代码的包,使这些包容易受到Log4j漏洞的攻击。在超过一半的情况下(约65%),Log4j代码是作为类直接包含的(即直接包含/着色),而不是包含完整的Log4j .jar文件(即fat jar),这通常是它在其余情况下的表现方式。这些数字表明,只寻找完整的.jar文件的工具将错过直接包含Log4j的大多数情况。

另一个要研究的有趣指标是在工件中包含Log4j,但又作为传递依赖项的情况的数量。这两个概念之间没有直接联系:代码包含可能来自一个绑定库的需求,而另一个可能需要Log4j作为外部依赖项。根据我们的观察,在大约30%的情况下,Log4j代码作为类直接包含在工件中,而不是作为完整的.jar文件,它也不会显示在工件的传递依赖项列表中。在依赖树中查找库名称的显式提及或包含完整的.jar文件的工具不会发现这些情况。

建议

JFrog安全研究团队建议所有开发人员格外小心,仔细检查他们的软件产品是否使用未打补丁的Log4j2版本,无论是在他们开发的第一方代码中,还是在他们应用程序中使用的第三方代码中。hth华体会最新官方网站

我们建议使用自动深度扫描工具来加速和简化对Log4j漏洞的检测,同时确保在发布的工件中包含Log4j的所有可能方法都被覆盖。

想了解更多关于Log4j漏洞以及它如何影响您的信息吗?

查看这些来自JFrog安全研究团队的额外资源:2022世界杯阿根廷预选赛赛程
Log4Shell 0日漏洞:您需要知道的一切——博客
Log4j Log4Shell漏洞解释——网络研讨会
Log4j Log4Shell漏洞问答——博客
Log4j检测与JFrog OSS扫描工具——博客