Frédéric Besson

dblp:03/2520 · DBLP profile ↗
← Back
33ranked-venue papers
25as first author
9since 2021 · last 2026
0000-0001-6815-0652ORCID · corroborated

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 18 · 12 first-author · 6 since 2021Theory of computation · 11 · 6 first-author · 6 since 2021Security and privacy · 8 · 7 first-author · 1 since 2021Artificial intelligence and machine learning · 2 · 2 first-author
YearPublicationVenuePosition
2026 Towards Verifiable System Code using a DSL Compiled to Efficient and Readable C Code
abstract
Critical embedded systems deserve the highest level of assurance to guarantee that their implementation satisfies their specification. Verification techniques such as proof by deduction operate at source level but the verification effort often requires to design higher-level abstractions that facilitate the reasoning. However, this approach comes at the cost of assuming the correctness of the abstraction with respect to the source code.
Clément Chavanon, Henrik A. Karlsson, Frédéric Besson, Sandrine Blazy, Roberto Guanciale
LCTES3
2024 End-to-End Mechanized Proof of a JIT-Accelerated eBPF Virtual Machine for IoT
abstract
Abstract Modern operating systems have adopted Berkeley Packet Filters (BPF) as a mechanism to extend kernel functionalities dynamically, e.g., Linux’s eBPF or RIOT’s rBPF. The just-in-time (JIT) compilation of eBPF introduced in Linux eBPF for performance has however led to numerous critical issues. Instead, RIOT’s rBPF uses a slower but memory-isolating interpreter (a virtual machine) which implements a defensive semantics of BPF; and therefore trades performance for security. To increase performance without sacrificing security, this paper presents a fully verified JIT implementation for RIOT’s rBPF, consisting of: i/ an end-to-end refinement workflow to both proving the JIT correct from an abstract specification and by deriving a verified concrete C implementation; ii/ a symbolic CompCert interpreter for executing binary code; iii/ a verified JIT compiler for rBPF; iv/ a verified hybrid rBPF virtual machine. Our core contribution is, to the best of our knowledge, the first and fully verified rBPF JIT compiler with correctness guarantees from high-level specification to low-level implementation. Benchmarks on microcontrollers hosting the RIOT operating system demonstrate significant performance improvements over the existing implementations of rBPF, even in worst-case application scenarios.
Shenghao Yuan, Frédéric Besson, Jean-Pierre Talpin
CAV (1)2
2024 PfComp: A Verified Compiler for Packet Filtering Leveraging Binary Decision Diagrams
abstract
We present PfComp, a verified compiler for stateless firewall policies. The policy is first compiled into an intermediate representation taking the form of a binary decision diagram that is optimised in terms of decision nodes. The decision diagram is then compiled into a program. The compiler is proved correct using the Coq proof assistant and extracted into OCaml code. Our preliminary experiments show promising results. The compiler generates code for relatively large firewall policies and the generated code outperforms a sequential evaluation of the policy rules.
Clément Chavanon, Frédéric Besson, Tristan Ninet
CPP2
2024 Formal Hardware/Software Models for Cache Locking Enabling Fast and Secure Code
Jean-Loup Hatchikian-Houdot, Pierre Wilke, Frédéric Besson, Guillaume Hiet
ESORICS (3)3
2023 Type-directed Program Transformation for Constant-Time Enforcement
abstract
Constant-time is a programming discipline which protects security sensitive code against a wide class of timing attacks. This discipline can be formalised as a non-interference property and enforced by an information flow type system which prevents branching and memory accesses over secret data. We propose a relaxed information flow type system which tracks indirect flows but only rejects programs leaking secrets through direct flows. The main result of this paper is that any program that is accepted using this relaxed type system can be transformed automatically into a semantically equivalent constant-time program. Our algorithms are implemented in the jasmin compiler and validated against synthetic programs.
Gautier Raimondi, Frédéric Besson, Thomas P. Jensen
PPDP2
2023 Making an eBPF Virtual Machine Faster on Microcontrollers: Verified Optimization and Proof Simplification
Shenghao Yuan, Benjamin Lion, Frédéric Besson, Jean-Pierre Talpin
SETTA3
2022 End-to-End Mechanized Proof of an eBPF Virtual Machine for Micro-controllers
abstract
Abstract RIOT is a micro-kernel dedicated to IoT applications that adopts eBPF (extended Berkeley Packet Filters) to implement so-called femto-containers. As micro-controllers rarely feature hardware memory protection, the isolation of eBPF virtual machines (VM) is critical to ensure system integrity against potentially malicious programs. This paper shows how to directly derive, within the Coq proof assistant, the verified C implementation of an eBPF virtual machine from a Gallina specification. Leveraging the formal semantics of the CompCert C compiler, we obtain an end-to-end theorem stating that the C code of our VM inherits the safety and security properties of the Gallina specification. Our refinement methodology ensures that the isolation property of the specification holds in the verified C implementation. Preliminary experiments demonstrate satisfying performance.
Shenghao Yuan, Frédéric Besson, Jean-Pierre Talpin, Samuel Hym, Koen Zandberg, Emmanuel Baccelli
CAV (2)2
2022 Femto-containers: lightweight virtualization and fault isolation for small software functions on low-power IoT microcontrollers
abstract
Low-power operating system runtimes used on IoT microcontrollers typically provide rudimentary APIs, basic connectivity and, sometimes, a (secure) firmware update mechanism. In contrast, on less constrained hardware, networked software has entered the age of serverless, microservices and agility. With a view to bridge this gap, in the paper we design Femto-Containers, a new middleware runtime which can be embedded on heterogeneous low-power IoT devices. Femto-Containers enable the secure deployment, execution and isolation of small virtual software functions on low-power IoT devices, over the network. We implement Femto-Containers, and provide integration in RIOT, a popular open source IoT operating system. We then evaluate the performance of our implementation, which was formally verified for fault-isolation, guaranteeing that RIOT is shielded from logic loaded and executed in a Femto-Container. Our experiments on various popular micro-controller architectures (Arm Cortex-M, ESP32 and RISC-V) show that Femto-Containers offer an attractive trade-off in terms of memory footprint overhead, energy consumption, and security.
Koen Zandberg, Emmanuel Baccelli, Shenghao Yuan, Frédéric Besson, Jean-Pierre Talpin
Middleware4
2021 Itauto: An Extensible Intuitionistic SAT Solver
abstract
We present the design and implementation of itauto, a Coq reflexive tactic for intuitionistic propositional logic. The tactic inherits features found in modern SAT solvers: definitional conjunctive normal form; lazy unit propagation and conflict driven backjumping. Formulae are hash-consed using native integers thus enabling a fast equality test and a pervasive use of Patricia Trees. We also propose a hybrid proof by reflection scheme whereby the extracted solver calls user-defined tactics on the leaves of the propositional proof search thus enabling theory reasoning and the generation of conflict clauses. The solver has decent efficiency and is more scalable than existing tactics on synthetic benchmarks and preliminary experiments are encouraging for existing developments.
Frédéric Besson
ITP1
2019 Information-Flow Preservation in Compiler Optimisations
abstract
Correct compilers perform program transformations preserving input/output behaviours of programs. Yet, correctness does not prevent program optimisations from introducing information-flow leaks that would make the target program more vulnerable to side-channel attacks than the source program. To tackle this problem, we propose a notion of Information-Flow Preserving (IFP) program transformation which ensures that a target program is no more vulnerable to passive side-channel attacks than a source program. To protect against a wide range of attacks, we model an attacker who is granted arbitrary memory accesses for a pre-defined set of observation points. We propose a compositional proof principle for proving that a transformation is IFP. Using this principle, we show how a translation validation technique can be used to automatically verify and even close information-flow leaks introduced by standard compiler passes such as dead-store elimination and register allocation. The technique has been experimentally validated on the CompCert C compiler.
Frédéric Besson, Alexandre Dang, Thomas P. Jensen
CSF1
2019 Compiling Sandboxes: Formally Verified Software Fault Isolation
abstract
Software Fault Isolation (SFI) is a security-enhancing program transformation for instrumenting an untrusted binary module so that it runs inside a dedicated isolated address space, called a sandbox. To ensure that the untrusted module cannot escape its sandbox, existing approaches such as Google’s Native Client rely on a binary verifier to check that all memory accesses are within the sandbox. Instead of relying on a posteriori verification, we design, implement and prove correct a program instrumentation phase as part of the formally verified compiler CompCert that enforces a sandboxing security property a priori . This eliminates the need for a binary verifier and, instead, leverages the soundness proof of the compiler to prove the security of the sandboxing transformation. The technical contributions are a novel sandboxing transformation that has a well-defined C semantics and which supports arbitrary function pointers, and a formally verified C compiler that implements SFI. Experiments show that our formally verified technique is a competitive way of implementing SFI.
Frédéric Besson, Sandrine Blazy, Alexandre Dang, Thomas P. Jensen, Pierre Wilke
ESOP1
2019 A Verified CompCert Front-End for a Memory Model Supporting Pointer Arithmetic and Uninitialised Data
Frédéric Besson, Sandrine Blazy, Pierre Wilke
J. Autom. Reason.1
2019 CompCertS: A Memory-Aware Verified C Compiler Using a Pointer as Integer Semantics
Frédéric Besson, Sandrine Blazy, Pierre Wilke
J. Autom. Reason.1
2018 Modular Software Fault Isolation as Abstract Interpretation
Frédéric Besson, Thomas P. Jensen, Julien Lepiller
SAS1
2017 CompCertS: A Memory-Aware Verified C Compiler Using Pointer as Integer Semantics
Frédéric Besson, Sandrine Blazy, Pierre Wilke
ITP1
2016 Hybrid Monitoring of Attacker Knowledge
abstract
Enforcement of noninterference requires proving that an attacker's knowledge about the initial state remains the same after observing a program's public output. We propose a hybrid monitoring mechanism which dynamically evaluates the knowledge that is contained in program variables. To get a precise estimate of the knowledge, the monitor statically analyses non-executed branches. We show that our knowledge-based monitor can be combined with existing dynamic monitors for non-interference. A distinguishing feature of such a combination is that the combined monitor is provably more permissive than each mechanism taken separately. We demonstrate this by proposing a knowledge-enhanced version of a no-sensitive-upgrade (NSU) monitor. The monitor and its static analysis have been formalized and proved correct within the Coq proof assistant.
Frédéric Besson, Nataliia Bielova, Thomas P. Jensen
CSF1
2015 A Concrete Memory Model for CompCert
Frédéric Besson, Sandrine Blazy, Pierre Wilke
ITP1
2014 A Precise and Abstract Memory Model for C Using Symbolic Values
Frédéric Besson, Sandrine Blazy, Pierre Wilke
APLAS1
2014 SawjaCard: A Static Analysis Tool for Certifying Java Card Applications
Frédéric Besson, Thomas P. Jensen, Pierre Vittet
SAS1
2013 Hybrid Information Flow Monitoring against Web Tracking
abstract
Motivated by the problem of stateless web tracking (fingerprinting), we propose a novel approach to hybrid information flow monitoring by tracking the knowledge about secret variables using logical formulae. This knowledge representation helps to compare and improve precision of hybrid information flow monitors. We define a generic hybrid monitor parametrised by a static analysis and derive sufficient conditions on the static analysis for soundness and relative precision of hybrid monitors. We instantiate the generic monitor with a combined static constant and dependency analysis. Several other hybrid monitors including those based on well-known hybrid techniques for information flow control are formalised as instances of our generic hybrid monitor. These monitors are organised into a hierarchy that establishes their relative precision. The whole framework is accompanied by a formalisation of the theory in the Coq proof assistant.
Frédéric Besson, Nataliia Bielova, Thomas P. Jensen
CSF1
2011 Modular SMT Proofs for Fast Reflexive Checking Inside Coq
Frédéric Besson, Pierre-Emmanuel Cornilleau, David Pichardie
CPP1
2010 Verifying resource access control on mobile interactive devices
abstract
A model of resource access control is presented in which the access control to resources can employ user interaction to obtain the necessary permissions. This model is inspired by and improves on the Java security architecture used in Java-enabled mobile telephones. We extend the Java model to incl ude access control permissions with multiplicities in order to allow to use a permission a certain number of times. We define a program model based on control flow graphs together with its operational semantics and provide a formal definition of the basic security policy to enforce viz that an application will always ask for a permission before using it to access a resource. A static analysis which enforces the security policy is defined and proved correct. A constraint solving algorithm implementing the analysis is presented.
Frédéric Besson, Guillaume Dufay, Thomas P. Jensen, David Pichardie
J. Comput. Secur.1
2009 CPA beats ∞-CFA
abstract
Context-sensitive points-to analysis is the current most scalable technology for constructing a precise control-flow graph for large object-oriented programs. One appealing feature of this framework is that it is parametric thus allowing to trade time for precision. Typical instances of this framework are κ-CFAs and Agesen's Cartesian Product Algorithm (CPA). It is common sense that κ-CFAs (for increasing κs) form a hierarchy. Yet, what is the relative precision of κ-CFA and CPA? Grove and Chambers [2] conjecture that CPA is more precise than ∞-CFA. For a core object-oriented language, we formally compare the precision of ∞-CFA and CPA. We prove that CPA is indeed strictly more precise than ∞-CFA. On a theoretical level, this result confirms the findings of empiric studies concluding the superiority of object-sensitivity with respect to call-string sensitivity.
Frédéric Besson
FTfJP@ECOOP1
2008 Computing Stack Maps with Interfaces
Frédéric Besson, Thomas P. Jensen, Tiphaine Turpin
ECOOP1
2007 Small Witnesses for Abstract Interpretation-Based Proofs
Frédéric Besson, Thomas P. Jensen, Tiphaine Turpin
ESOP1
2006 A Formal Model of Access Control for Mobile Interactive Devices
Frédéric Besson, Guillaume Dufay, Thomas P. Jensen
ESORICS1
2006 Proof-carrying code from certified abstract interpretation and fixpoint compression
abstract
Proof-carrying code (PCC) is a technique for downloading mobile code on a host machine while ensuring that the code adheres to the host's safety policy. We show how certified abstract interpretation can be used to build a PCC architecture where the code producer can produce program certificates automatically. Code consumers use proof checkers derived from certified analysers to check certificates. Proof checkers carry their own correctness proofs and accepting a new proof checker amounts to type checking the checker in Coq. Certificates take the form of strategies for reconstructing a fixpoint and are kept small due to a technique for fixpoint compression. The PCC architecture has been implemented and evaluated experimentally on a byte code language for which we have designed an interval analysis that allows to generate certificates ascertaining that no array-out-of-bounds accesses will occur.
Frédéric Besson, Thomas P. Jensen, David Pichardie
Theor. Comput. Sci.1
2005 Interfaces for stack inspection
abstract
Stack inspection is a mechanism for programming secure applications in the presence of code from various protection domains. Run-time checks of the call stack allow a method to obtain information about the code that (directly or indirectly) invoked it in order to make access control decisions. This mechanism is part of the security architecture of Java and the .NET Common Language Runtime. A central problem with stack inspection is to determine to what extent the local checks inserted into the code are sufficient to guarantee that a global security property is enforced. A further problem is how such verification can be carried out in an incremental fashion. Incremental analysis is important for avoiding re-analysis of library code every time it is used, and permits the library developer to reason about the code without knowing its context of deployment. We propose a technique for inferring interfaces for stack-inspecting libraries in the form of secure calling context for methods. By a secure calling context we mean a pre-condition on the call stack sufficient for guaranteeing that execution of the method will not violate a given global property. The technique is a constraint-based static program analysis implemented via fixed point iteration over an abstract domain of linear temporal logic properties.
Frédéric Besson, Thomas de Grenier de Latour, Thomas P. Jensen
J. Funct. Program.1
2004 From Stack Inspection to Access Control: A Security Analysis for Libraries
Frédéric Besson, Tomasz Blanc, Cédric Fournet, Andrew D. Gordon 0001
CSFW1
2003 Modular Class Analysis with DATALOG
Frédéric Besson, Thomas P. Jensen
SAS1
2002 Secure calling contexts for stack inspection
abstract
Stack inspection is a mechanism for programming secure applications by which a method can obtain information from the call stack about the code that (directly or indirectly) invoked it. This mechanism plays a fundamental role in the security architecture of Java and the .NET Common Language Runtime. A central problem with stack inspection is to determine to what extent the local checks inserted into the code are sufficient to guarantee that a global security property is enforced. In this paper, we present a technique for inferring a secure calling context for a method. By a secure calling context we mean a pre-condition on the call stack sufficient for guaranteeing that execution of the method will not violate a given global property. This is particularly useful for annotating library code in order to avoid having to re-analyse libraries for every new application. The technique is a constraint based static program analysis implemented via fixed point iteration over an abstract domain of linear temporal logic properties.
Frédéric Besson, Thomas de Grenier de Latour, Thomas P. Jensen
PPDP1
2001 Model Checking Security Properties of Control Flow Graphs
abstract
A fundamental problem in software-based security is whether local security checks inserted into the code are sufficient to implement a global security property. This article introduces a formalism based on a linear-time temporal logic for specifying global security properties pertaining to the control flow of the program, and illustrates its expressive power with a number of existing properties. We define a minimalistic, security-dedicated program model that only contains procedure call and run-time security checks and propose an automatic method for verifying that an implementation using local security checks satisfies a global security property. We then show how to instantiate the framework to the security architecture of Java 2 based on stack inspection and privileged method calls.
Frédéric Besson, Thomas P. Jensen, Daniel Le Métayer
J. Comput. Secur.1
1999 Polyhedral Analysis for Synchronous Languages
Frédéric Besson, Thomas P. Jensen, Jean-Pierre Talpin
SAS1