CrowdStrike发布log4j漏洞扫描工具CAST

CrowdStrike发布log4j漏洞扫描工具CAST

最近发现的Log4j 漏洞有很大的潜力使全球组织面临新一波的网络安全风险,因为威胁行为者希望利用此最新漏洞使用远程代码执行 (RCE) 来执行其恶意负载。

每个组织都面临的一个直接挑战就是试图准确了解您的应用程序在何处使用了这个非常流行的 Java 库——但您并不是独自面临这个挑战。

该CrowdStrike服务团队一直忙于开发一个社区的工具,可以用来寻找Log4j的代码库,以帮助组织快速版本扫描文件系统,了解他们需要的补丁,以减轻他们的风险。

免费的 CrowdStrike 工具(称为CrowdStrike 档案扫描工具,或“CAST”)通过扫描一组给定的 JAR、WAR、ZIP 和 EAR 文件来执行有针对性的搜索,然后对匹配的文件类型执行更深入的扫描针对 Log4j 库的一组已知校验值。我们帮助组织在磁盘上的任何位置找到受影响的 Log4j 库的任何版本,即使它深深嵌套在多个级别的存档文件中。

CAST 搜索大约 6,500 个已知易受攻击版本独有的 SHA256 校验和。它将遍历 ZIP 格式存档中的文件或目录,以查找这些文件的每个实例。在开发该工具时,我们仔细考虑了以下几点:

  • 运行扫描时请注意资源消耗,以尽量减少对最终用户系统的影响。
  • 故意允许更多的误报性结果,让系统所有者决定给定的结果是否需要进一步调查。 
    • 我们可能会看到更高的误报,因为我们识别出任何 Log4j 易受攻击版本的痕迹,即使该漏洞已通过从部署中删除一个或多个类来解决。
  • 结果应该非常可靠,因为它们基于加密校验和。
  • 允许将该工具与预索引(例如,“定位”)文件系统一起使用,以避免扫描并在命令行上简单地将路径传递到已知文件。 
    • 例如,locate -0 *.jar | xargs -0 ./cast
  • 提供调整内存使用的能力——例如: 
    • -recursion 0 禁用扫描子档案 
    • -recursion 1 只扫描 1 个子归档深度  
    • -maxmem 1000000 将子存档扫描限制为 1MB(压缩)

该工具有意采用单线程,因为我们必须注意资源消耗并允许用户或管理员管理自己的资源。一个线程将(根据我们的经验)足够快地扫描文件系统。可以通过执行该工具的多个副本同时扫描多个目录,但文件系统负载可能会对用户造成明显影响。

忠于 CrowdStrike 的跨平台重点,我们开发了 CAST 作为可以在Windows、Mac 和 Linux系统上运行的工具,我们正在 CrowdStrike 服务项目中使用该工具来帮助需要支持的客户来查找 Log4j 实例。 

只需将二进制文件下载到您的磁盘,然后使用您要扫描的目录或文件执行二进制文件,即可轻松部署该工具。

例如:

./cast /opt /srv /path/to/java/application

CrowdStrike Falcon®客户还可以选择使用 Falcon 传感器中的 Falcon 实时响应 (RTR) 功能来部署和运行该工具。CAST 中包含一个配套的 PowerShell 脚本“Find-VulnerableLog4J”。该脚本旨在通过 RTR 在 Windows 系统上执行,并向系统管理员和事件响应者提供可操作的信息。

我们的事故响应者知道法医分流是一个持续的过程铸造日益细密的渔网,并确定需要进一步调查系统。因此,CAST 被设计为首次使用的工具,将调查范围缩小到少数具有已知漏洞的机器(或路径)。

CAST 在定位易受攻击的 Log4j 库时以 JSON 文件的形式返回报告。组织可以使用此输出来了解 Log4j 库在其环境中的位置,以便他们可以优先考虑需要使用 Apache 发布的最新安全更新修补的系统。

CrowdStrike发布log4j漏洞扫描工具CAST

CrowdStrike 调查人员使用我们的 Humio 解决方案加载和分析数据,但您可以使用任何可视化解决方案(例如 ELK)。您还可以使用您选择的编程语言或 JSON 查询语言处理数据——这些事件旨在是可移植的。

最后,CrowdStrike 建议您完整记录您的 Log4j 补丁过程,以简化未来补丁应用程序的可重复性。自从最初发现 Log4j 漏洞以来,Apache 已在撰写本文时发布了三个安全更新(补丁)。在流程早期修补系统的组织可能需要重新应用最新的补丁,因此需要完整记录流程。

我们希望您发现本博客中的资源和工具对您有用,因为您在寻找自己环境中的 Log4j 漏洞的过程中投入了自己的网络。在击败试图利用此漏洞攻击我们的对手时,我们站在一起。 

其他资源

CAST简介

这个工具是一个快速扫描器,可以在文件系统中寻找易受攻击的 log4j 版本。请在此处查看我们的博客文章以获得更详细的讨论。

目前,它扫描一组给定的目录以查找 JAR、WAR、ZIP 或 EAR 文件,然后扫描其中与一组已知校验和匹配的文件。

用法

该工具目前有两个动词:“version”和“scan”

# ./cast version
version: 0.5.1, commit: d8d184fc49315e19f0d37015ed95ae500b2cca1d, date: 2021-12-22T19:41:22Z, builtBy: unknown
# ./cast scan -h
用法 ./cast:
  -maxmem uint
         maximum sub-archive size to recurse (default 104857600)
  -recursion uint
         maximum in-memory in-archive recursion (0 disables) (default 3)
  -xdev
         do not cross device boundaries (POSIX-only)

这些选项应该是不言自明的,但要进行一些说明:

  • maxmem 仅以字节为单位指定,目前没有人为大小
  • 递归 0 将禁用子存档扫描,但仍会检查它遇到的任何第一层 ZIP 存档的内部。
  • xdev 目前只在 POSIX 平台上工作

针对 ZIP 文件和一组目录运行的示例

./cast scan -maxmem 1000000 -recursion 1 ~/tmp/zzz.zip /tmp ./

请注意,您可以指定要递归的单个文件和/或目录。这可以利用预先索引的文件系统,例如:

locate -0 *.jar | xargs -0 ./cast scan

样本输出

{"container":"~/tmp/zzz.zip","member":{"path":"/log4j-core-2.13.3.jar/org/apache/logging/log4j/core/net/JndiManager.class","size":4885,"modified":"2020-05-10T12:08:46Z"},"sha256":"c3e95da6542945c1a096b308bf65bbd7fcb96e3d201e5a2257d85d4dedc6a078"}
{"container":"~/tmp/zzz.zip","member":{"path":"/log4j-core-2.13.3.jar/org/apache/logging/log4j/core/util/NetUtils.class","size":4315,"modified":"2020-05-10T12:08:44Z"},"sha256":"f96e82093706592b7c9009c1472f588fc2222835ea808ee2fa3e47185a4eba70"}

下载地址

GitHub

项目地址

GitHub

转载请注明出处及链接

Leave a Reply

您的电子邮箱地址不会被公开。