eBPF 对容器威胁检测意味着什么

eBPF 对容器威胁检测意味着什么

翻译自 What eBPF Means for Container Threat Detection

通过 eBPF 从内核层监控容器活动,解决了与云中可观测性相关的许多挑战。

这篇文章是 4 月 18 日至 21 日在阿姆斯特丹举行的 KubeCon + CloudNativeCon Europe 2023 预览系列文章之一。加入我们,了解更多关于云原生应用程序和开源软件的变革性质。

这篇博文改编自 Ryan Mack(Uptycs 工程副总裁兼基础设施负责人)和 Christopher Stanley(航空航天业安全工程师)在 osquery@scale 2022 上的演讲

eBPF(增强型伯克利数据包过滤器)是一种Linux内核技术,提供了一种强大而稳定的观察 Linux 内核的方法。它就像在内核中拥有一个虚拟机,可以安全地运行钩子(即程序),用于过滤诸如网络事件、系统调用、数据包等数据。 eBPF 因其保证的稳定性、直接在内核中工作的能力以及在考虑收集 Linux 服务器和容器上遥测时计算进程方面潜在的节省而被广泛采用。

eBPF 在云原生应用中迅速获得了广泛的认可,特别是在传统安全监控无法发挥作用的地方。 eBPF 非常适合分布式和基于容器的环境,包括 Kubernetes 。该技术的核心优势包括速度和性能、低侵入性、安全性、统一跟踪和可编程性。由于它可以查看进程内部而不会引入崩溃应用程序或以任何方式修改内核,因此比以前的选项更安全。与 audited 的框架相比,eBPF是首选替代方案,因为它更少侵入且更高效。

通过从内核层监控,许多与云中可观测性相关的挑战得到了解决。您可以在数据中享受更深入的可见性、更多上下文和更高的准确性。如果您有兴趣提高容器安全性,了解 eBPF 能为您做什么是值得的。

eBPF 为容器添加上下文

许多在其环境中运行容器的人错误地认为它是安全边界,应用程序无法突破容器。我不认为容器是安全的。它们就像一道屏障。它们可以成为包含应用程序的拼图中的一部分,但本身并不具备安全性。对于容器(以及其他所有东西),您应该遵循最小特权原则,在这种情况下意味着仅在容器中运行所需的二进制文件。您不应该在容器中运行 root ,但事实上,许多开发人员都会这样做,并且这给了其他二进制文件逃脱出容器的机会。

使用 eBPF,您可以获取有关容器的上下文信息。 您可以了解在容器中运行了哪些系统调用,它所在的主机是什么,容器名称是什么以及镜像是什么。 您可以将这些信息输入到 SIEM 中,并获得有关这些主机的上下文信息。 然后,您可以开始编写检测异常行为的规则。

在下面的截图中,您可以看到发生了一个过程,它是哪个容器名称,由谁运行的,容器名称是什么等等。如果没有这个上下文环境,在查看运行着 20,000 个容器的主机时很难确定哪个容器存在安全问题。

eBPF 遥测可以检测异常活动

您可能还记得 CVE-2022-0185 。在这个漏洞中,存在一种下溢攻击,可以利用喷射 kmalloc 来提升特权以跳出非特权命名空间。从历史上看,来自 root 用户的权限提升并不重要。在容器之前,如果您是 root 用户,并且正在访问内核中的此代码,则该代码将受到较少的审查。但现在情况并非总是如此。当您有这些运行于容器内部的根名称空间时,有时会访问内核中未经过多检查的代码,并且这可能导致发生下溢攻击。

在下面的镜像中,我通过我的框输入 whoamI ,我是 CStanley 。 echo $ $ ,我获取进程 ID,然后使用该进程 ID 进行 pscsp | grep 以查看系统上的功能。我没有任何功能。因此,我键入 unshare-r 并输入特权命名空间,并键入 whoamI 。 我是 root,权限已提升。但这并不容易。所以,我再次 echo $$ 。 我获得了 ID,然后 pscap | grep 它,在这个系统上现在可以完全控制所有功能了!我的权限已经提升了!

实际上不是这样的。在这个上下文中,在这个命名空间中,系统正在执行它应该做的事情。它将该命名空间隔离开来,并在那里放置了少量保护,表示您并不真正拥有 root 权限,而只处于该命名空间的上下文中。我尝试更改根密码但失败了。我尝试安装二进制文件但也失败了。我只能在该命名空间的上下文中具备权限。

这就是 CVE-2022-0185 发挥作用的地方。如果您下载并运行该二进制文件,并进行 kmalloc spray,那么它基本上会执行下溢并传递负数。它将指针移动到内存空间中,以便执行允许您提升特权的代码。在下面的图片中,我运行了漏洞利用程序并进入了容器命名空间。然后我更改了 root 密码并提升了权限。这是一个情况,在这种情况下容器本身未能保护我们免受影响主机的攻击。

下面的图片展示了我在 osquery 中使用 eBPF 遥测进行的检测。当我运行同样的攻击时,它显示发生了特权升级攻击,并检测到了 kthreadd 。这个检测是基于路径二被生成触发的,而且有 kthreadd 存在,这表明在内核空间中发生了某些事情并且权限已经提升。虽然这是一个基本的检测方法,但它非常有效。

eBPF 仍在不断发展,并将随着时间的推移变得更加完善。与此同时,它已经改进了容器威胁检测的可能性。这里给出的示例使用了开源技术 osquery ,但 Uptycs 解决方案扩展了 osquery 以提供类似于 Kubernetes 控制平面活动相关的容器级别检测

Uptycs 正在赞助 KubeCon + CloudNativeCon Europe 2023。请到访我们的展位,观看我们的 K8s 和容器安全解决方案演示。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注