Skip to main content
QUICK REVIEW

[论文解读] Beyond Good and Evil: Formalizing the Security Guarantees of Compartmentalizing Compilation

Yannis Juglaret, Cătălin Hriţcu|arXiv (Cornell University)|Feb 14, 2016
Security and Verification in Computing参考文献 73被引用 23
一句话总结

本文提出了安全分段编译(Secure Compartmentalizing Compilation, SCC),这是一种形式化的安全属性,将完整抽象扩展至分段系统,确保攻击者即使攻陷单个组件也无法破坏组件隔离。作者证明了从一种不安全的命令式语言到分段抽象机的编译器满足 SCC,为在现实攻击者模型下实现安全组件交互提供了形式化保证。

ABSTRACT

Compartmentalization is good security-engineering practice. By breaking a large software system into mutually distrustful components that run with minimal privileges, restricting their interactions to conform to well-defined interfaces, we can limit the damage caused by low-level attacks such as control-flow hijacking. When used to defend against such attacks, compartmentalization is often implemented cooperatively by a compiler and a low-level compartmentalization mechanism. However, the formal guarantees provided by such compartmentalizing compilation have seen surprisingly little investigation. We propose a new security property, secure compartmentalizing compilation (SCC), that formally characterizes the guarantees provided by compartmentalizing compilation and clarifies its attacker model. We reconstruct our property by starting from the well-established notion of fully abstract compilation, then identifying and lifting three important limitations that make standard full abstraction unsuitable for compartmentalization. The connection to full abstraction allows us to prove SCC by adapting established proof techniques; we illustrate this with a compiler from a simple unsafe imperative language with procedures to a compartmentalized abstract machine.

研究动机与目标

  • 形式化分段编译所提供的安全保证,该技术结合了编译器变换与底层隔离机制。
  • 识别标准完整抽象在建模分段化时的局限性,并通过一种新的安全属性加以解决。
  • 为在内存安全无法保证的不安全语言中推理安全组件交互,提供一个形式化框架。
  • 通过从一种不安全的命令式语言到分段抽象机的编译器,证明 SCC 的可行性。
  • 为将 SCC 扩展至真实系统(包括 C 编译器和真实硬件强制机制)奠定基础。

提出的方法

  • 作者将安全分段编译(SCC)定义为完整抽象的改进形式,专为具有互不信任组件的分段系统而设计。
  • 他们识别出标准完整抽象在分段化上下文中的三个关键局限:缺乏组件隔离、缺乏权限建模,以及无法处理源语言中的未定义行为。
  • SCC 通过将标准完整抽象属性扩展以考虑组件边界、权限分离以及源语言中的攻击者能力,从而形式化定义。
  • 证明技术借鉴了完整抽象的成熟方法,包括逻辑关系和步长索引模型,并将其适配以在组件被攻陷时推理组件行为。
  • 实现了一个从简单不安全命令式语言(支持过程)到分段抽象机的原型编译器,并使用 Coq 证明其满足 SCC。
  • 该方法设计为可扩展,可应用于真实系统,包括针对基于标签的引用监视器或进程级沙箱的 C 编译器。

实验结果

研究问题

  • RQ1如何将完整抽象适配以在存在内存不安全代码的情况下,正式捕捉分段编译的安全保证?
  • RQ2当应用于具有互不信任组件的分段系统时,标准完整抽象的关键局限是什么?
  • RQ3能否定义一种形式化安全属性,确保即使攻陷单个组件,攻击者也无法逃逸出组件边界?
  • RQ4如何在分段编译的形式化安全模型中处理源语言中的未定义行为?
  • RQ5将 SCC 扩展至真实强制机制(如进程沙箱、SFI 或能力机)会产生哪些影响?

主要发现

  • 本文成功将安全分段编译(SCC)定义为一种形式化安全属性,将其扩展至具有相互不信任的分段系统。
  • SCC 形式化捕捉了攻击者模型,即被攻陷的组件其行为被限制在源语言可表达的范围内,防止跨组件边界的权限提升。
  • 作者证明了从一种支持过程的不安全命令式语言到分段抽象机的编译器满足 SCC,证明了该方法的可行性。
  • 该证明依赖于逻辑关系和步长索引等成熟技术,并将其适配以处理组件隔离和未定义行为。
  • 该框架具有可扩展性,可应用于真实系统,包括针对硬件强制分段机制(如基于标签的引用监视器)的 C 编译器。
  • 该工作为在实际系统(包括网页浏览器和操作系统组件)中对安全编译进行形式化验证铺平了道路。

更好的研究,从现在开始

从论文设计到论文写作,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。