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存储库中大约有17,000个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零日漏洞:所有你需要知道的——博客
Log4j Log4Shell漏洞解释——网络研讨会
Log4j Log4Shell漏洞问答——博客
Log4j检测与JFrog OSS扫描工具——博客