SECOMP: Formally Secure Compilation of Compartmentalized C Programs

📅 2024-01-29
🏛️ Conference on Computer and Communications Security
📈 Citations: 1
Influential: 0
📄 PDF
🤖 AI Summary
Undefined behavior (UB) in C programs can propagate security vulnerabilities across module boundaries. This paper presents the first end-to-end machine-verified secure compiler that confines UB effects via memory compartments—logically isolated execution units—thereby preventing cross-compartment attack propagation. Methodologically, it introduces the first machine-checked proof of a fully abstract, type-safety–based secure compilation criterion for C; proposes an interface-driven compartment isolation semantics and a modular, extensible secure compilation proof framework; and extends CompCert with compartment semantics, re-verifying critical optimizations while jointly proving both compiler correctness and adversarial contextual security. The system supports formal verification from C source code to ARM/Clang target binaries, guaranteeing that compartment crashes—even under malicious host environments—preserve global security invariants.

Technology Category

Application Category

📝 Abstract
Undefined behavior in C often causes devastating security vulnerabilities. One practical mitigation is compartmentalization, which allows developers to structure large programs into mutually distrustful compartments with clearly specified privileges and interactions. In this paper we introduce SECOMP, a compiler for compartmentalized C code that comes with machine-checked proofs guaranteeing that the scope of undefined behavior is restricted to the compartments that encounter it and become dynamically compromised. These guarantees are formalized as the preservation of safety properties against adversarial contexts, a secure compilation criterion similar to full abstraction, and this is the first time such a strong criterion is proven for a mainstream programming language. To achieve this we extend the languages of the CompCert verified C compiler with isolated compartments that can only interact via procedure calls and returns, as specified by cross-compartment interfaces. We adapt the passes and optimizations of CompCert as well as their correctness proofs to this compartment-aware setting. We then use compiler correctness as an ingredient in a larger secure compilation proof that involves several proof engineering novelties, needed to scale formally secure compilation up to a C compiler.
Problem

Research questions and friction points this paper is trying to address.

C language
security issues
modularization
Innovation

Methods, ideas, or system contributions that make the work stand out.

SECOMP
Machine-Checked Proof
Secure Compilation
🔎 Similar Papers
No similar papers found.
Jérémy Thibault
Jérémy Thibault
Max Planck Institute for Security and Privacy (MPI-SP)
programming languagesformal verificationsecuritylanguage-based securitysecure compilation
R
Roberto Blanco
MPI-SP, Bochum, Germany
D
Dongjae Lee
Seoul National University, South Korea
S
Sven Argo
Ruhr University Bochum, Germany
Arthur Azevedo de Amorim
Arthur Azevedo de Amorim
Rochester Institute of Technology
Programming languagesformal verificationcomputer security
A
A. L. Georges
MPI-SWS, Saarbrücken, Germany
C
Cătălin Hriţcu
MPI-SP, Bochum, Germany
A
A. Tolmach
Portland State University, USA