
随着 Wasm 得到更广泛的采用,WebAssembly 的使用可能会成为满足安全性合规性要求的强制性要求,同时解决其他正在进行的安全难题。
根据美国国家标准与技术研究所(NIST)一篇论文 《云原生应用程序的数据保护方法》(作者:LeakSignal 的 Wesley Hales;NIST 的主管级计算机科学家 Ramaswamy Chandramouli)的说法,WebAssembly 可以而且应该集成到云原生服务网格领域,以增强安全性。论文中概述的框架可能会导致未来对 WebAssembly 或云原生环境的合规性要求,同时也为更广泛地使用 WebAssembly 的安全性奠定了基础。
该论文强调了 WebAssembly 模块如何通过其原位或代理方法,使 WebAssemblys 成为数据在服务之间传输时进行数据分类的有力候选者。借助 Wasm,可以对分布在一个或多个云原生环境中的任何类型的数据进行数据检查。
“很多人都有 eBPF 锤子思想,对他们来说,一切看起来都像钉子,但事实并非如此,”该报告的合著者 Hales 告诉 The New Stack。“eBPF 的目的只有一个。”
eBPF 最初是为了防御侧通道攻击而设计的,例如 Heartbleed 漏洞(该漏洞破坏了 OpenSSL 的加密库),以及其他内核级相关漏洞。Hale 解释说,eBPF 允许我们在发现某些内容后进行修补并阻止该活动。
Hale 说:“人们用它来做任何的事情,因为它是一个简单的插入点。这是 eBPF 的优点之一——它易于安装,并提供了一定程度的可见性。但是,它不能利用第 7 层人类可读的文本,因为它是在内核空间中运行的。”。
将来自第 4 层 eBPF 的数据包带入用户空间进行分析需要先对数据包进行镜像,然后再在容器中进行分析。“这会产生一个弗兰肯斯坦式的过程,根本不可能有性能”Hales 说。“Wasm 真正满足了我们的目的。我们实际上对 eBPF 进行了原型设计,但它根本不适合我们。”
eBPF 与 Wasm 的对比
将 eBPF 的安全性与 Wasm 的安全性进行比较,该论文的作者写道:
“与 eBPF 等技术相比,使用 Wasm 在第 4 到第 7 层解析人类可读的文本具有几个优势,特别是在处理复杂的应用层数据(如 HTTP)方面。虽然 eBPF 在内核内直接进行数据捕获和操作方面功能强大,但对于某些应用程序来说,使用它来解析详细的 HTTP 流量可能会很复杂,甚至是大材小用。这种复杂性源于需要在内核内处理 HTTP 的复杂性——如果管理不当,这项任务可能会限制性能并引入安全性问题。此外,eBPF 还施加了许多限制,需要付出额外的努力来进行数据处理和通用计算。”
“Wasm 提供了一个安全的沙箱环境,适用于跨多个平台高效执行代码和解析应用层协议。Wasm 可以在用户空间和服务器环境中使用,允许更容易地与现有的解析库和工具集成,降低复杂性,并可能提高解析操作的可靠性。它的可移植性和嵌入各种运行时环境的能力使其成为网络流量分析任务的实用选择,包括涉及处理人类可读文本的协议的任务。”
在云原生世界中,所有的数据流量都是通过服务网格(service mesh)Istio 的代理和 Wasm 的模块化或“沙箱”设计强制通过的。“Istio 代理后面可能有 10000 个容器,而所有的日志流量、所有的网络流量,甚至数据库流量都必须进入代理,然后到达目的地。”Hales 说道。“所以我们可以用 Wasm 来研究所有这些问题。”
大局观
从这篇论文中得到的一个结论并不是 WebAssembly 的安全性优于 eBPF。这里要重申一下,它是说,退一步的时候——无论是在可观测性、安全性、全面的解决方案或战略,还是最佳实践方面,都不应该是用其中一个来代替另一个。因此,举例来说,美国政府不太可能突然强制使用 WebAssembly,而不为某些用例实施或强制使用 eBPF。在商业领域中,一个全面的安全性或可观测性参与者或产品应该包括 eBPF 的一系列用例,以及 WebAssembly 和其他用例。
“eBPF 从来就不是一个通用的计算平台,它既有算法约束,也有内存限制。从安全性的角度来看,当功能可以在 Wasm 这样的用户空间中完成时,将功能推送到内核空间(eBPF 所在的地方)本身也是一种糟糕的做法。”ARMO 的首席技术官兼联合创始人 Ben Hirschberg 表示。“因此,在 Wasm 中实现复杂的可观测性逻辑,并在 eBPF 中保留所需的最小功能,这更有意义。”
事实上,WebAssembly 从一开始就是为所谓的沙箱安全而设计的。Fermyon 联合创始人兼首席执行官 Matt Butcher 表示:“我保证你现在正在运行的就是使用最广泛的沙箱应用程序环境:一个 Web 浏览器。浏览器是一个本质上为运行不受信任的代码而构建的环境。WebAssembly 基于浏览器的传统是其拥有一流沙箱技术的原因。”。与容器和 eBPF 不同,安全性不是事后才应考虑的;从一开始到现在,它都是一个核心特性。看到 Wasm 在安全性的敏感环境中得到普及,我并不感到惊讶。”
Hales 解释说,除了 Istio 的代理之外,Wasm 还提供了比 eBPF 更广泛的覆盖范围,包括覆盖通过 HTTP、gRPC 或 GraphQL 的数据传输,或网络流量能够流向的任何地方。Hales 说:“这并不重要,因为它们仍然都在通过第 4 层到第 7 层的管道。”。
“将 Wasm 视为一种具有明确定义扩展方法的灵活的核心技术是有用的。它是与平台无关的,这意味着它可以在许多操作系统和系统架构上运行。并且现在几乎所有的主要编程语言都支持它了。”Butcher 表示。“本质上,这使得 Wasm 比 eBPF 更具适应性。简而言之:Wasm 是为通用性而构建的,而 eBPF 却不是。”
原文链接:
https://thenewstack.io/the-feds-push-for-webassembly-security-over-ebpf/
评论