Marie-Laure Potet

dblp:37/5694 · DBLP profile ↗
← Back
30ranked-venue papers
1as first author
7since 2021 · last 2025
0000-0002-7070-6290ORCID · verified

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

Software engineering, systems software and programming languages · 15 · 1 first-author · 4 since 2021Security and privacy · 13 · 2 since 2021Theory of computation · 4 · 3 since 2021Artificial intelligence and machine learning · 1Computer networks · 1Graphics, computer vision, multimedia, augmented reality and games · 1Applied, interdisciplinary, general and emerging computing · 1
YearPublicationVenuePosition
2025 Formally Verified Hardening of C Programs against Hardware Fault Injection
abstract
A fault attack is a malicious manipulation of the hardware (e.g., electromagnetic or laser pulse) that modifies the behavior of the software. Fault attacks typically target sensitive applications such as cryptography services, authentication, boot-loaders or firmware updaters. They can be defended against by adding countermeasures, that is, control flow checks and redundancies, either in the hardware, or in the software running on it. In particular, software countermeasures may be added automatically during compilation. In this paper, we describe a formally verified implementation of this approach in the CompCert verified compiler for the C language. We implemented two existing countermeasures protecting the control flow of the program as program transformations over a middle-end intermediate representation of CompCert, RTL. We proved that these countermeasures are correct, that is, they do not change the observable behavior of the program during an execution without fault injection. We then modeled the effect of a fault on the behavior of the program as an extension of the semantic model of RTL. We used this new model to formally prove the efficacy of the countermeasure: all attacks are either caught, or produce no observable effects. In addition to this formal reasoning, we evaluated the protected program using Lazart, a tool for symbolic fault injection, and measured the effect of optimizations on security and performance.
Basile Pesin, Sylvain Boulmé, David Monniaux, Marie-Laure Potet
CPP4
2023 Adversarial Reachability for Program-level Security Analysis
abstract
Abstract Many program analysis tools and techniques have been developed to assess program vulnerability. Yet, they are based on the standard concept of reachability and represent an attacker able to craft smartlegitimateinput, while in practice attackers can be much more powerful, using for instance micro-architectural exploits or fault injection methods. We introduceadversarial reachability, a framework allowing to reason about suchadvanced attackersand check whether a system is vulnerable or immune to a particular attacker. As equipping the attacker with new capacities significantly increases the state space of the program under analysis, we present a new symbolic exploration algorithm, namelyadversarial symbolic execution, injecting faults in aforklessmanner to prevent path explosion, together with optimizations dedicated to reduce the number of injections to consider while keeping the same attacker power. Experiments on representative benchmarks from fault injection show that our method significantly reduces the number of adversarial paths to explore, allowing to scale up to 10 faults where prior work timeout for 3 faults. In addition, we analyze the well-tested WooKey bootloader, and demonstrate the ability of our analysis to find attacks and evaluate countermeasures in real-life security scenarios. We were especially able to find an attack not mentioned in a previous patch.
Soline Ducousso, Sébastien Bardin, Marie-Laure Potet
ESOP3
2023 A Compositional Methodology to Harden Programs Against Multi-Fault Attacks
abstract
Fault attacks consist in changing the program behavior by injecting faults at run-time in order to break some expected security properties. Applications are hardened against fault attack by adding countermeasures. According to the state of the art, applications must now be protected against multi-fault injection [23], [33]. As a consequence developing applications which are robust becomes a very challenging task, in particular because countermeasures can be also the target of attacks [4], [20]. The aim of this paper is to propose an assisted methodology for developers allowing to harden an application against multi-fault attacks, addressing several aspects: how to identify which parts of the code should be protected and how to choose and place the appropriate countermeasures, giving guarantees on the robustness of the protected program.
Etienne Boespflug, Laurent Mounier, Marie-Laure Potet, Abderrahmane Bouguern
FDTC3
2022 BaxMC: a CEGAR approach to Max#SAT
Thomas Vigouroux, Cristian Ene, David Monniaux, Laurent Mounier, Marie-Laure Potet
FMCAD5
2021 Fast Calibration of Fault Injection Equipment with Hyperparameter Optimization Techniques
Vincent Werner, Laurent Maingault, Marie-Laure Potet
CARDIS3
2021 Interface Compliance of Inline Assembly: Automatically Check, Patch and Refine
abstract
Inline assembly is still a common practice in low-level C programming, typically for efficiency reasons or for accessing specific hardware resources. Such embedded assembly codes in the GNU syntax (supported by major compilers such as GCC, Clang and ICC) have an interface specifying how the assembly codes interact with the C environment. For simplicity reasons, the compiler treats GNU inline assembly codes as blackboxes and relies only on their interface to correctly glue them into the compiled C code. Therefore, the adequacy between the assembly chunk and its interface (named compliance) is of primary importance, as such compliance issues can lead to subtle and hard-to-find bugs. We propose RUSTInA, the first automated technique for formally checking inline assembly compliance, with the extra ability to propose (proven) patches and (optimization) refinements in certain cases. RUSTInA is based on an original formalization of the inline assembly compliance problem together with novel dedicated algorithms. Our prototype has been evaluated on 202 Debian packages with inline assembly (2656 chunks), finding 2183 issues in 85 packages - 986 significant issues in 54 packages (including major projects such as ffmpeg or ALSA), and proposing patches for 92% of them. Currently, 38 patches have already been accepted (solving 156 significant issues), with positive feedback from development teams.
Frédéric Recoules, Sébastien Bardin, Richard Bonichon, Matthieu Lemerre, Laurent Mounier, Marie-Laure Potet
ICSE6
2021 Output-sensitive Information flow analysis
Cristian Ene, Laurent Mounier, Marie-Laure Potet
Log. Methods Comput. Sci.3
2020 Countermeasures Optimization in Multiple Fault-Injection Context
abstract
Fault attacks consist in changing the program behavior by injecting faults at run-time, either at hardware or at software level. Their goal is to change the correct progress of the algorithm and hence, either to allow gaining some privilege access or to allow retrieving some secret information based on an analysis of the deviation of the corrupted behavior with respect to the original one. Countermeasures have been proposed to protect embedded systems by adding spatial, temporal or information redundancy at hardware or software level. First we define Countermeasures Check Point (CCP) and CCPs-based countermeasures as an important subclass of countermeasures. Then we propose a methodology to generate an optimal protection scheme for CCPs-based countermeasure. Finally we evaluate our work on a benchmark of code examples with respect to several Control Flow Integrity (CFI) oriented existing protection schemes.
Etienne Boespflug, Cristian Ene, Laurent Mounier, Marie-Laure Potet
FDTC4
2020 An End-to-End Approach for Multi-Fault Attack Vulnerability Assessment
abstract
Although multi-fault attacks are extremely powerful in defeating sophisticated hardware and software defences, detecting and exploiting such attacks remains a difficult problem, especially without any prior knowledge of the target. Our main contribution is an end-to-end approach for multi-fault attack vulnerability assessment We take advantage of target specific fault models rather than generic fault models to achieve complex multi-fault attacks that can lead to critical vulnerabilities. Target specific fault models are generated thanks to fault models inference process, based on a fault injections simulation and a characterization, in order to elaborate powerful multi-fault attacks based on different fault models. Combining fault models opens up new possible attack paths and adds flexibility to design fault attacks that adapt to countermeasures. Hence, the direct consequence of the increasing complexity of fault attacks question the effectiveness of software countermeasures based on generic fault models for sensitive applications.
Vincent Werner, Laurent Maingault, Marie-Laure Potet
FDTC3
2019 A Review of Intrusion Detection Systems for Industrial Control Systems
abstract
Industrial Control Systems are found often in industrial sectors and critical infrastructures to monitor and control industrial processes. Recently, the security of industrial control systems has gained much attention as these systems now exhibit an increased interaction with the Internet. In fact, classical SCADA systems are already lacking with security problems, and with the increased interconnectivity to the Internet, they are now exposed to new types of threats and cyber-attacks. Intrusion detection technology is one of the most important security solutions used today in industrial control systems to detect potential attacks and malicious activities. This paper summarizes previous work for Intrusion Detection Systems approaches in Industrial Control Systems and highlights challenges and opportunities in implementing such solutions. We believe that such insights are valuable for further research in the industrial security context.
Mohamad Kaouk, Jean-Marie Flaus, Marie-Laure Potet, Roland Groz
CoDIT3
2019 Output-Sensitive Information Flow Analysis
Cristian Ene, Laurent Mounier, Marie-Laure Potet
FORTE3
2019 Get Rid of Inline Assembly through Verification-Oriented Lifting
abstract
Formal methods for software development have made great strides in the last two decades, to the point that their application in safety-critical embedded software is an undeniable success. Their extension to non-critical software is one of the notable forthcoming challenges. For example, C programmers regularly use inline assembly for low-level optimizations and system primitives. This usually results in rendering state-of-the-art formal analyzers developed for C ineffective. We thus propose TINA, the first automated, generic, verification-friendly and trustworthy lifting technique turning inline assembly into semantically equivalent C code amenable to verification, in order to take advantage of existing C analyzers. Extensive experiments on real-world code (including GMP and ffmpeg) show the feasibility and benefits of TINA.
Frédéric Recoules, Sébastien Bardin, Richard Bonichon, Laurent Mounier, Marie-Laure Potet
ASE5
2019 Formally and practically verifying flow properties in industrial systems
Jannik Dreier, Maxime Puys, Marie-Laure Potet, Pascal Lafourcade 0001, Jean-Louis Roch
Comput. Secur.3
2018 Model Generation for Quantified Formulas: A Taint-Based Approach
abstract
We focus in this paper on generating models of quantified first-order formulas over built-in theories, which is paramount in software verification and bug finding. While standard methods are either geared toward proving the absence of a solution or targeted to specific theories, we propose a generic and radically new approach based on a reduction to the quantifier-free case. Our technique thus allows to reuse all the efficient machinery developed for that context. Experiments show a substantial improvement over state-of-the-art methods.
Benjamin Farinier, Sébastien Bardin, Richard Bonichon, Marie-Laure Potet
CAV (2)4
2018 Symbolic Deobfuscation: From Virtualized Code Back to the Original
Jonathan Salwan, Sébastien Bardin, Marie-Laure Potet
DIMVA3
2017 Formally Verifying Flow Properties in Industrial Systems
abstract
International audience
Jannik Dreier, Maxime Puys, Marie-Laure Potet, Pascal Lafourcade 0001, Jean-Louis Roch
SECRYPT3
2016 Domain Specific Stateful Filtering with Worst-Case Bandwidth
Maxime Puys, Jean-Louis Roch, Marie-Laure Potet
CRITIS3
2016 Specification of concretization and symbolization policies in symbolic execution
abstract
Symbolic Execution (SE) is a popular and profitable approach to automatic code-based software testing. Concretization and symbolization (C/S) is a crucial part of modern SE tools, since it directly impacts the trade-offs between correctness, completeness and efficiency of the approach. Yet, C/S policies have been barely studied. We intend to remedy to this situation and to establish C/S policies on a firm ground. To this end, we propose a clear separation of concerns between C/S specification on one side, through the new rule-based description language CSml, and the algorithmic core of SE on the other side, revisited to take C/S policies into account. This view is implemented on top of an existing SE tool, demonstrating the feasibility and the benefits of the method. This work paves the way for more flexible SE tools with well-documented and reusable C/S policies, as well as for a systematic study of C/S policies.
Robin David, Sébastien Bardin, Josselin Feist, Laurent Mounier, Marie-Laure Potet, Thanh Dinh Ta, Jean-Yves Marion
ISSTA5
2016 FISSC: A Fault Injection and Simulation Secure Collection
Louis Dureuil, Guillaume Petiot, Marie-Laure Potet, Aude Crohen, Philippe de Choudens
SAFECOMP3
2016 Formal Analysis of Security Properties on the OPC-UA SCADA Protocol
Maxime Puys, Marie-Laure Potet, Pascal Lafourcade 0001
SAFECOMP2
2016 Guided Dynamic Symbolic Execution Using Subgraph Control-Flow Information
Josselin Feist, Laurent Mounier, Marie-Laure Potet
SEFM3
2016 BINSEC/SE: A Dynamic Symbolic Execution Toolkit for Binary-Level Analysis
abstract
When it comes to software analysis, several approaches exist from heuristic techniques to formal methods, which are helpful at solving different kinds ofproblems. Unfortunately very few initiative seek to aggregate this techniques in the same platform. BINSEC intend to fulfill this lack of binary analysis platform by allowing to perform modular analysis. This work focusses on BINSEC/SE, the new dynamic symbolic execution engine (DSE) implemented in BINSEC. We will highlight the novelties of the engine, especially in terms of interactions between concrete and symbolic execution or optimization of formula generation. Finally, two reverse engineering applications are shown in order to emphasize the tool effectiveness.
Robin David, Sébastien Bardin, Thanh Dinh Ta, Laurent Mounier, Josselin Feist, Marie-Laure Potet, Jean-Yves Marion
SANER6
2015 From Code Review to Fault Injection Attacks: Filling the Gap Using Fault Model Inference
Louis Dureuil, Marie-Laure Potet, Philippe de Choudens, Cécile Canovas, Jessy Clédière
CARDIS2
2014 LiSTT: An Investigation into Unsound-Incomplete Yet Practical Result Yielding Static Taintflow Analysis
abstract
Vulnerability analysis is an important component of software assurance practices. One of its most challenging issues is to find software flaws that could be exploited by malicious users. A necessary condition is the existence of some tainted information flow between tainted input sources and vulnerable functions. Finding the existence of such a taint flow dynamically is an expensive and nondeterministic process. On the other hand, though static analysis may explore (theoretically) all the tainted paths, scalability is an issue, especially in the view of complete- and soundness. In this paper, we explore the possibilities of making static analysis scalable, by compromising its complete- and soundness properties and yet making it effective in detecting taint flows that lead to vulnerability exploitation. This technique is based on a combination of call graph slicing and data-flow analysis. A prototype tool has been developed, and we give experimental results showing that this approach is effective on large applications.
Sanjay Rawat 0001, Laurent Mounier, Marie-Laure Potet
ARES3
2014 Lazart: A Symbolic Approach for Evaluation the Robustness of Secured Codes against Control Flow Injections
abstract
In the domain of smart cards, secured devices must be protected against high level attack potential [1]. According to norms such as the Common Criteria [2], the vulnerability analysis must cover the current state-of-the-art in term of attacks. Nowadays, a very classical type of attack is fault injection, conducted by means of laser based techniques. We propose a global approach, called Lazart, to evaluate code robustness against fault injections targeting control flow modifications. The originality of Lazart is two folds. First, we encompass the evaluation process as a whole: starting from a fault model, we produce (or establish the absence of) attacks, taking into consideration software countermeasures. Furthermore, according to the near state-of-the-art, our methodology takes into account multiple transient fault injections and their combinatory. The proposed approach is supported by an effective tool suite based on the LLVM format [3] and the KLEE symbolic test generator [4].
Marie-Laure Potet, Laurent Mounier, Maxime Puys, Louis Dureuil
ICST1
2010 Liability in software engineering: overview of the LISE approach and illustration on a case study
abstract
LISE is a multidisciplinary project involving lawyers and computer scientists with the aim to put forward a set of methods and tools to (1) define software liability in a precise and unambiguous way and (2) establish such liability in case of incident. This paper provides an overview of the overall approach taken in the project based on a case study. The case study illustrates a situation where, in order to reduce legal uncertainties, the parties to a contract wish to include in the agreement specific clauses to define as precisely as possible the share of liabilities between them for the main types of failures of the system.
Daniel Le Métayer, Manuel Maarek, Valérie Viet Triem Tong, Eduardo Mazza, Marie-Laure Potet, Nicolas Craipeau, Stéphane Frénot, Ronan Hardouin
ICSE (1)5
2010 Designing Log Architectures for Legal Evidence
abstract
Establishing contractual liabilities in case of litigation is generally a delicate matter. It becomes even more challenging when IT systems are involved. At the core of the problem lies the issue of the evidence provided by the opposing parties. We believe that the means to constitute evidence that could be used in case of conflict should be considered from the onset of IT projects and be part of the requirements for the design of IT systems. This paper proposes criteria for acceptable log architectures depending on the features of the system and the potential claims between the parties. We establish properties guaranteed by acceptable architectures and illustrate our framework with a travel booking system.
Daniel Le Métayer, Eduardo Mazza, Marie-Laure Potet
SEFM3
2008 A B Formal Framework for Security Developments in the Domain of Smart Card Applications
Frédéric Dadeau, Marie-Laure Potet, Régis Tissot
SEC2
2001 Test Purposes: Adapting the Notion of Specification to Testing
abstract
Nowadays, test cases may correspond to elaborate programs. It is therefore sensible to try to specify test cases in order to get a more abstract view of these. This paper explores the notion of test purpose as a way to specify a set of test cases. It shows how test purposes are exploited today by several tools that automate the generation of test cases. It presents the major relations that link test purposes, test cases and reference specification. It also explores the similarities and differences between the specification of test cases, and the specification of programs. This opens perspectives for the synthesis and the verification of test cases, and for other activities like test case retrieval.
Yves Ledru, Lydie du Bousquet, Pierre Bontron, Olivier Maury, Catherine Oriat, Marie-Laure Potet
ASE6
1986 Program Synthesis = Proof Method + Knowledge (Example about Recursive Function Synthesis)
Paul Jacquet, Marie-Laure Potet
ECAI2