在本文中,了解如何在您的生产平台中实时发现被利用的 log4j2 漏洞并阻止它
log4j2 缓解简介
log4j2 漏洞(如 OpenSSL Heartbleed 和 Apache Struts 漏洞之前出现的漏洞)向互联网企业发出了深刻的提醒,一旦补丁可用,通过重新部署应用程序来响应漏洞并不够,您还必须能够发现在您的生产平台中实时利用漏洞并阻止它们。在本教程中,我们将向您展示如何使用 Deepfence ThreatMapper 和 ThreatStryker 来帮助您做到这一点。
Deepfence ThreatMapper是一个开源安全可观察性平台,可在跨容器、Kubernetes、云、无服务器环境、VM 和裸机的生产应用程序中寻找漏洞(包括 log4j2),然后根据漏洞利用风险对其进行排名。ThreatMapper 通过进一步计算每个漏洞的利用风险来消除扫描工具产生的噪音和误报,以便您可以针对对应用程序安全构成最大风险的问题。
Deepfence ThreatStryker】扩展了 ThreatMapper ,并测量攻击者在您的应用程序中的独特行为 - 捕获网络流量,识别何时进行攻击,并通过执行您定义的安全策略立即停止它们。
在本文中,我向您展示了一个演示环境,其中包含 Java 应用程序中存在 log4j2 漏洞的容器镜像,攻击者如何远程利用它,以及如何使用 ThreatMapper 和 ThreatStryker 检测和防御真实的 log4j2 攻击时间。
如何使用 ThreatMapper 找到最容易被利用的漏洞,例如 log4j2
安装 ThreatMapper 并开始您的第一次漏洞扫描(请参阅本文中的步骤 1 到 4)后,您可以在 ThreatMapper 控制台的“可利用漏洞”报告中查看最严重的漏洞。
在下图中,我们向您展示了我们对演示环境的扫描的最可利用漏洞报告的上半部分。从发现的所有潜在漏洞中,ThreatMapper 会突出显示风险最大的漏洞,并显示可能被利用的攻击路径。
您可以在下面看到位于 HAproxy 后面的 log4j 容器(在文本中标出以便于参考)。这是可用于利用 log4j2 漏洞的攻击路径。
当您将鼠标悬停在上述攻击路径中的关键节点上时,您将看到有关该漏洞的其他信息(例如节点
deepfenceio/log4j-vulnerable-app:latest具有Attack Vector type: network,Top CVE: CVE-2021-44228可访问于Port: 8080)。
当您向下滚动页面到您的排名列表时,您还可以一目了然地查看其他信息:
当您单击特定漏洞时,您可以更深入地了解并查看表格和 JSON 视图中查看更多信息。
在我们的演示中,我们单击了排名第一的漏洞 log4j 并查看提供的信息。ThreatMapper 提取 50 多种不同的威胁源,并尽可能为您提供针对特定漏洞的最新威胁信息。ThreatMapper 还包括指向外部资源的链接,以获取有关漏洞的最新信息。
例如,在表格视图中,您可以看到有问题的包、它所在的位置(即运行它的容器)、CVSS 分数、修复它的版本以及其他有助于您理解原因的数据一个严重的漏洞以及如何修复它。
如何识别正在进行的 log4j2 攻击并使用 ThreatStryker 阻止它们
了解诸如 log4j2 之类的最可利用漏洞的存在是非常有用的信息。您可以与开发团队一起优先修复这些漏洞,并且您可能希望应用临时 WAF 规则来限制攻击者访问和利用这些漏洞的方式。
但是,攻击者是否已经领先了您一步?
- 攻击者在做什么来尝试寻找漏洞?
- 他们是否已经找到了初始漏洞利用?
- 他们是否使用它横向扩展并在您的应用程序中获得额外的控制权?
- 你怎么能立即阻止他们?
这就是 ThreatStryker 的用武之地。ThreatStryker 建立在 ThreatMapper 执行的静态分析之上,添加运行时检查以确定攻击者为利用潜在漏洞所做的工作。
ThreatStryker 从您的应用程序中捕获两种主要类型的运行时遥测数据:
- 攻击指标:深度数据包捕获,可能表明侦察、横向传播、命令和控制、渗透和其他攻击活动
- 危害指标:主机上捕获的进程和文件系统异常,可能表明攻击者已成功利用易受攻击的组件
ThreatStryker 数据包捕获在后台运行,对来自所有节点和容器的流量进行采样。出于本演示的目的,我们将手动启动数据包捕获,选择要监控的特定进程:
ThreatStryker 的数据包捕获是在没有代理和内核模块的情况下执行的。ThreatStryker 使用 eBPF 来抓取流量,对其进行采样,然后将其与运行时威胁源进行匹配,以识别侦查和其他类型的恶意流量。
在流量分析和检查收集到足够的数据后,您可以查看作为结果生成的警报。
ThreatStryker 使用Cyber Kill Chain 框架的扩展版本来模拟攻击行为。意图阶段将事件映射到网络杀伤链中的阶段,攻击类型和严重性提供了额外的上下文。然后,单击底部列表中的一个警报会显示更深入的信息。
例如,下面是我们在单击尝试获得管理员权限警报后看到的内容。下半部分包括一个桑基图,该图显示了随着时间的推移而展开的恶意活动,以便您可以追踪、应用策略并了解正在发生的攻击。上半部分包括表格和 JSON 视图中收集的触发警报的详细信息列表,您可以垂直滚动查看大量信息,包括数据包有效负载和违规字符串。在下图中,我们看到臭名昭著的 ${jndi:ldap 字符串处暂停了垂直滚动,该字符串是 log4j2 攻击的签名。
上面的示例显示了入站(或入口)流量检查,该检查导致了对 log4j2 漏洞的管理员权限获得尝试的利用警报。但仅检查入站流量是不够的。ThreatStryker 还检查出站(或出口)流量和各种主机上的异常情况。
让我们看看另一个警报,它是由主机检查产生的:Suspicious tracing event process strace /bin/ls -l:23408 trying to ptrace: 23409
不知何故,一个进程正在尝试执行系统跟踪;正常操作中的不常见事件,并且强烈指示攻击者已找到破坏容器或应用程序的方法:
孤立地看,这些事件中的每一个都可能令人担忧,并表明攻击演变的可能阶段。当 ThreatStryker 为事件分配意图和分类时,它会将这些攻击指标和危害指标关联起来,以讲述攻击如何演变以及漏洞利用风险如何增长的故事。
您可以使用一系列监控工具随时间跟踪 ThreatStryker 事件日志,或者您可以在 ThreatStryker 中配置安全措施,以便在达到确定性阈值时介入并消除正在进行的攻击。
在 ThreatStryker 的保护策略仪表板中定义安全策略(隔离策略和网络策略)以阻止正在进行的攻击,如下所示。
在我们的演示环境中,我们还没有设置任何保护策略,所以让我们创建一些。为此,请单击网络策略选项卡,然后单击右上角的添加策略按钮。您将看到一个选项菜单,您可以在其中选择严重性、警报类型、意图类型等。
然后,您可以在您选择的一段时间内阻止入站和出站流量 - 自定义或无限期。
但仅仅阻止攻击继续进行只能解决一半的问题。ThreatStryker 还可以识别主机上可能表明它已被破坏的事件,包括奇怪的文件系统修改、进程活动或以某种方式表明主机或工作负载已被攻击行为污染的其他行为。在这一点上,我们采用隔离政策。隔离策略使您能够根据自己的喜好冻结、阻止、终止或删除主机,以防止受污染的影响进一步传播。
要创建隔离策略,请前往保护策略仪表板上的隔离策略选项卡,然后单击添加策略开始。这是我们在演示环境中创建的示例策略。
总结
总之,ThreatMapper 是一个开源平台,可以学习应用程序的拓扑结构,识别潜在易受攻击的工作负载,并针对 50 多个不同的威胁源扫描这些工作负载,并为您提供有关每个工作负载可能存在的漏洞的实时、准确信息展示。ThreatMapper 然后将其与攻击面相关联,告诉您像 log4j2 这样的漏洞最容易被利用,以便您知道首先要修复什么。
ThreatStryker 建立在 ThreatMapper 创建的漏洞图和信息之上,以识别攻击行为并阻止和中和攻击者的步骤,防止他们利用您的应用程序。