[2023.04.07] [Security 2023] Guarding Serverless Applications with Kalium

作者:Deepak Sirone Jegan, Liang Wang, Siddhant Bhagat, Michael Swift 单位:University of Wisconsin-Madison, Princeton University, Microsoft, University of Wisconsin-Madison 会议:Security 2023 链接:https://www.usenix.org/conference/usenixsecurity23/presentation/jegan 笔记链接:https://jbox.sjtu.edu.cn/l/U1pG7d 概述 Serverless计算作为一种新兴的应用范式受到了越来越多的关注。然而传统web应用程序的安全工具由于其分布式特性而不能轻松地移植到Serverless计算中,现有的Serverless安全解决方案侧重于强制执行用户指定的信息流策略,而这些策略无法检测应用程序控制流路径中函数顺序的操作。在本文中,我们提出了Kalium,这是一个可扩展的安全框架,它利用本地函数状态和全局应用程序状态来强制Serverless应用程序中的控制流完整性(CFI)。我们使用真实的开源应用程序评估Kalium的性能开销和安全性。我们的结果表明,Kalium以相对较低的性能开销减轻了几种类型的攻击,并且优于最先进的Serverless信息流保护系统。 以前的工作利用信息流控制(IFC)来解决Serverless应用中的数据保隐私性问题。IFC技术简单来说就是对数据的传递作约束,利用格的概念,构建偏序关系,使得数据只能单向传播。然而,基于IFC的技术还没有在Serverless应用的背景下被探索,即防止未经授权的用户对存储的数据进行修改。现有的信息流控制系统并没有强制执行Serverless应用中各项功能的预定执行顺序,违反这一规定会导致整个应用不安全,并可能允许对手修改外部存储的数据。例如,攻击者可能会绕过认证函数,直接调用对数据存储有写入权限的函数。 本文希望用我们的CFI保护技术来补充基于IFC的方法。可以利用Serverless应用程序的几种常见设计模式来提高Serverless的安全性:(1)租户需要将函数产生的数据外化到其他服务中供以后使用,以避免因Serverless函数的无状态性质而导致的数据丢失。这种外部化行为可以被监控并用于异常检测。(2) 由于复杂的应用被分解为具有相对简单逻辑的专用任务函数,因此有可能对每个函数单独建模,并构建应用的全局视图。(3) 应用的分解使其更容易为不同的组件执行定制的策略,从而促进更灵活和高效的安全监控。 受上述见解的启发,本文设计了一个新颖的Serverless安全框架Kalium。Kalium是一个可扩展的安全框架,它利用本地函数状态和全局应用状态来强制执行Serverless应用的控制流完整性(CFI)。Kalium的目标是解决Serverless数据完整性的问题,即防止未经授权的用户修改存储在外部服务中的数据。 Kalium的主要贡献有: 设计并开源实现了一个灵活、可扩展的Serverless安全框架Kalium,该框架允许在Serverless应用中进行控制流保护,通过将加密方法部署到容器运行时来实现一种新型的加密流量拦截技术。 确定Serverless在控制流监控方面的具体挑战,并设计控制流建模和执行机制,以跟踪跨服务的控制流。 对现有工作的性能开销进行评估和比较。 本文使用真实的开源应用评估了Kalium的性能开销和安全性,结果显示Kalium可以缓解多种攻击,且性能开销相对较低,并且优于现有的无服务器信息流保护系统。