如何检查Java项目是否依赖于有漏洞的Log4j-600学习网
600学习网终身会员188,所有资源无秘无压缩-购买会员
[51CTO.com快速翻译]正如我们所知,它被定义和跟踪为
CVE-2021-44228,也称为Log4Shell中的Log4j漏洞,允许攻击者在目标系统中执行任意代码。因此,如果您的应用程序使用的是Log4j 2.0-alpha1到2.14.1,则应尽快将其更新到最新版本(当前为2.16.0)。
在这方面,瑞士政府发布了一个流程图,可以很好地解释这种脆弱姓。请参见下图:
接下来,让我们深入研究与上图相关的缓解策略。
在Maven项目中,您可以使用以下简单命令在依赖树中搜索log4j核心的相关依赖项,并检查项目是否使用了受影响的依赖项。
此命令使用Maven依赖插件显示项目的依赖树(包括具有传输关系的各种依赖)。命令通过以下参数过滤并输出log4核心的依赖项。因此,如果您的项目依赖于易受攻击的Log4j版本,您将看到以下内容:
在这个例子中,我们可以从输出中看到项目直接使用Log4j版本2.14.1。显然,它是易受攻击的。因此,此项目需要包含以下依赖项:
替换为:
同样,我在MariaDB数据库的JDBC连接器项目中进行了以下测试,并获得了相应的结果:
幸运的是,这个项目不使用Log4j,因此它不易受到Log4Shell攻击。有关MariaDB具体案例的更多信息,请参阅https://dzone。com/articles/is-the-mariadb-jdbc-driver-profected-by-the-log4j-v。
如果您想做进一步的调查,您需要检查有效的POM(项目对象模型)并搜索项目中使用的日志框架。现在让我们将注意力转向MariaDB JDBC连接器项目。我使用Maven的帮助插件来生成有效的POM。因为我使用类似Unix的操作系统(从屏幕截图中可以看到它实际上是macOS),所以我使用以下grep命令(在Windows中,可以使用findstr)来过滤输出:
从mvn获得以下输出:
从输出中可以看出,MariaDB JDBC驱动程序使用Logback作为日志框架。虽然Logback不会受到Log4Shell的影响,但它包含1.2.8和1.3.0-alpha11中的相关漏洞。我检查了它的连接器版本,它是1.3.0-alpha10。虽然Logback作为测试依赖包含在MariaDB驱动程序中,但我在GitHub上发送了一个pull请求来更新它。在这里,我鼓励您对手中的各种开源项目执行类似的操作,以尽早找到易受攻击的依赖项。
在包含大量JAR文件的更复杂的项目中,可以使用Syft和Grype等工具。Syft是一个CLI(命令行界面)工具和Go语言库,可用于从容器映像和文件系统生成软件物料清单(你好OM)。Grype可以通过多级嵌套扫描各种容器图像和文件系统以查找漏洞。这两者可以一起使用。
由开源数据安全平台开发的LunaSec工具可以通过扫描目录和匹配文件哈希来发现是否存在与Log4j依赖相关的漏洞。此工具适用于Windows.Linux和macOS系统。您只需通过以下命令触发相关传输目录中工具的扫描过程:
如果目标是易受攻击的项目,您将获得以下输出:
此外,FullHunt团队还提供了一个名为log4j扫描的开源工具。作为一个自动和全面的扫描仪,它可以用来查找易受攻击的Log4j主机。换句话说,它可以帮助团队扫描自己的基础设施并测试各种WAF(Web应用防火墙)绕过可能导致代码执行的攻击。尽管该工具可以提供多个选项,但其最基本的服务是用户可以将要扫描的URL传递给该工具,以便他们可以直接获得关于检测到的漏洞的报告。例如,可以使用以下命令:
其扫描结果的输出为:
<img src="https://mp.ofwee
600学习网 » 如何检查Java项目是否依赖于有漏洞的Log4j-600学习网