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

在非常受欢迎的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 ', ' gradle. shell ')中是否将易受攻击的Log4j版本列为项目的依赖项。构建“等等)。一个更准确,但公认更耗时的方法是检查Log4j是否作为传递依赖项(' gradle -q依赖项'或' mvn依赖项:树')被包括在内。有些令人惊讶的是,这种方法也是不完整的,需要进行更深入的调查,以确保最终产品不包含易受攻击的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 0-Day漏洞:所有你需要知道的——博客
Log4j Log4Shell漏洞解释——网络研讨会
Log4j Log4Shell漏洞问答——博客
Log4j检测与JFrog OSS扫描工具——博客
