Laurent Mounier

dblp:07/2632 · DBLP profile ↗
← Back
43ranked-venue papers
1as first author
5since 2021 · last 2024
0000-0001-9925-098XORCID · corroborated

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

Software engineering, systems software and programming languages · 31 · 1 first-author · 3 since 2021Theory of computation · 9 · 2 since 2021Security and privacy · 4 · 1 since 2021Computer networks · 3Systems, architecture and hardware · 2Applied, interdisciplinary, general and emerging computing · 1
YearPublicationVenuePosition
2024 Function Synthesis for Maximizing Model Counting
Thomas Vigouroux, Marius Bozga, Cristian Ene, Laurent Mounier
VMCAI (1)4
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
FDTC2
2022 BaxMC: a CEGAR approach to Max#SAT
Thomas Vigouroux, Cristian Ene, David Monniaux, Laurent Mounier, Marie-Laure Potet
FMCAD4
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
ICSE5
2021 Output-sensitive Information flow analysis
Cristian Ene, Laurent Mounier, Marie-Laure Potet
Log. Methods Comput. Sci.2
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
FDTC3
2019 Output-Sensitive Information Flow Analysis
Cristian Ene, Laurent Mounier, Marie-Laure Potet
FORTE2
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
ASE4
2018 Compositional Verification in Action
Hubert Garavel, Frédéric Lang, Laurent Mounier
FMICS3
2017 scat: Learning from a single execution of a binary
abstract
Retrieving information from a binary code is required in several application domains such as system integration or security analysis. Providing tools to help engineers in this task is therefore an important need. We present in this paper scat, an open-source toolbox, relying on lightweight runtime instrumentation to infer source-level and behavioral information from a binary code, like function prototypes or data-flow relations. We explain the functioning principle of this toolbox, and we give some results obtained on real examples to show its effectiveness.
Franck de Goër, Christopher Ferreira, Laurent Mounier
SANER3
2016 Toward Large-Scale Vulnerability Discovery using Machine Learning
abstract
With sustained growth of software complexity, finding security vulnerabilities in operating systems has become an important necessity. Nowadays, OS are shipped with thousands of binary executables. Unfortunately, methodologies and tools for an OS scale program testing within a limited time budget are still missing.
Gustavo Grieco, Guillermo L. Grinblat, Lucas C. Uzal, Sanjay Rawat 0001, Josselin Feist, Laurent Mounier
CODASPY6
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
ISSTA4
2016 Guided Dynamic Symbolic Execution Using Subgraph Control-Flow Information
Josselin Feist, Laurent Mounier, Marie-Laure Potet
SEFM2
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
SANER4
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
ARES2
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
ICST2
2013 Synchronous programming of device drivers for global resource control in embedded operating systems
abstract
In embedded systems, controlling a shared resource like a bus, or improving a property like power consumption, may be hard to achieve when programming device drivers individually. In this article, we propose a global resource control approach, based on a centralized view of the devices' states. The solution we propose operates on the hardware/software interface. It involves a simple adaptation of the application level, to communicate with the hardware via a control layer . The control layer itself is built from a set of simple automata: the device drivers, whose states correspond to functional or power consumption modes, and a controller to enforce global properties. All these automata are programmed using a synchronous language, and compiled into a single piece of C code. We take as example the node of a sensor network. We explain the approach in details, demonstrate its use and benefits with an event-driven or multithreading operating system, and draw guidelines for its use in other contexts.
Nicolas Berthier, Florence Maraninchi, Laurent Mounier
ACM Trans. Embed. Comput. Syst.3
2012 A Taint Based Approach for Smart Fuzzing
abstract
Fuzzing is one of the most popular test-based software vulnerability detection techniques. It consists in running the target application with dedicated inputs in order to exhibit potential failures that could be exploited by a malicious user. In this paper we propose a global approach for fuzzing, addressing the main challenges to be faced in an industrial context: large-size applications, without source code access, and with a partial knowledge of the input specifications. This approach integrates several successive steps, and we mostly focus here on an important one which relies on binary-level dynamic taint analysis. We summarize the main problems to be addressed in this step, and we detail the solution we implemented to solve them.
Sofia Bekrar, Chaouki Bekrar, Roland Groz, Laurent Mounier
ICST4
2012 Dynamic Information-Flow Analysis for Multi-threaded Applications
Laurent Mounier, Emmanuel Sifakis
ISoLA (1)1
2012 More testable properties
Yliès Falcone, Jean-Claude Fernandez, Thierry Jéron, Hervé Marchand, Laurent Mounier
Int. J. Softw. Tools Technol. Transf.5
2012 What can you verify and enforce at runtime?
Yliès Falcone, Jean-Claude Fernandez, Laurent Mounier
Int. J. Softw. Tools Technol. Transf.3
2011 Finding Software Vulnerabilities by Smart Fuzzing
abstract
Nowadays, one of the most effective ways to identify software vulnerabilities by testing is the use of fuzzing, whereby the robustness of software is tested against invalid inputs that play on implementation limits or data boundaries. A high number of random combinations of such inputs are sent to the system through its interfaces. Although fuzzing is a fast technique which detects real errors, its efficiency should be improved. Indeed, the main drawbacks of fuzz testing are its poor coverage which involves missing many errors, and the quality of tests. Enhancing fuzzing with advanced approaches such as: data tainting and coverage analysis would improve its efficiency and make it smarter. This paper will present an idea on how these techniques when combined give better error detection by iteratively guiding executions and generating the most pertinent test cases able to trigger potential vulnerabilities and maximize the coverage of testing.
Sofia Bekrar, Chaouki Bekrar, Roland Groz, Laurent Mounier
ICST4
2011 Synchronous programming of device drivers for global resource control in embedded operating systems
abstract
In embedded systems, controlling a shared resource like the bus, or improving a property like power consumption, may be hard to achieve when programming device drivers individually. There is a need for global resource control, taking decisions based on a centralized view of the devices' states. In this paper, we study power consumption in sensor networks, where the nodes are small embedded systems powered by batteries. We concentrate on the hardware/software architecture of a node, where significant gains can be achieved by controlling the consumption modes of the various devices globally. The architecture we propose involves a simple adaptation of the application level, to communicate with the hardware via a control layer. The control layer itself is built from a set of simple automata: the drivers of the devices, whose states correspond to power consumption modes, and a controller that enforces global properties. All these automata are programmed using a synchronous language, whose compiler performs static scheduling and produces a single piece of C code. We explain the approach in details, demonstrate its use with either Contiki or a traditional multithreading operating system, and report on our experiments.
Nicolas Berthier, Florence Maraninchi, Laurent Mounier
LCTES3
2011 Runtime enforcement monitors: composition, synthesis, and enforcement abilities
Yliès Falcone, Laurent Mounier, Jean-Claude Fernandez, Jean-Luc Richier
Formal Methods Syst. Des.2
2010 More Testable Properties
Yliès Falcone, Jean-Claude Fernandez, Thierry Jéron, Hervé Marchand, Laurent Mounier
ICTSS5
2009 Runtime Verification of Safety-Progress Properties
Yliès Falcone, Jean-Claude Fernandez, Laurent Mounier
RV3
2007 Test Generation from Security Policies Specified in Or-BAC
abstract
Security policy testing is a practical way to ensure security policies are correctly implemented in information or networking systems with a certain level of confidence. In this paper, we adapt model based testing techniques for formal models of security policies, and propose a two stage approach to produce test cases from a security policy specified in Or-BAC, i.e., test purpose generation from Or-BAC rules, and test case generation from test purposes.
Keqin Li 0002, Laurent Mounier, Roland Groz
COMPSAC (2)2
2007 Using BIP for Modeling and Verification of Networked Systems -- A Case Study on TinyOS-based Networks
abstract
We apply a model construction methodology to TinyOS- based networks, using the behavior-interaction-priority (BIP) component framework. The methodology consists in building the model of a node as the composition of a model extracted from a nesC program describing the application, and models of TinyOS components. Models for networks are obtained by composition of models for nodes by using BIP connectors implementing different types of radio chan- nels. This opens the way for enhanced analysis and early error detection by using verification techniques.
Ananda Basu, Laurent Mounier, Marc Poulhiès, Jacques Pulou, Joseph Sifakis
NCA2
2003 Validation of asynchronous circuit specifications using IF/CADP
Dominique Borrione, Menouer Boubekeur, Laurent Mounier, Marc Renaudin, Antoine Siriani
VLSI-SOC3
2002 IF-2.0: A Validation Environment for Component-Based Real-Time Systems
Marius Bozga, Susanne Graf, Laurent Mounier
CAV3
2001 Automated Validation of Distributed Software Using the IF Environment
abstract
This paper summarizes our experience with IF, an open validation environment for distributed software systems. Indeed, face to the increasing complexity of such systems, none of the existing tools can cover by itself the whole validation process. The IF environment was built upon an expressive intermediate language and allows to connect several validation tools, providing most of the advanced techniques currently available. The results obtained on several large case-studies, including telecommunication protocols and embedded software systems, confirm the practical interest of this approach.
Marius Bozga, Susanne Graf, Laurent Mounier
NCA3
2000 IF: A Validation Environment for Timed Asynchronous Systems
Marius Bozga, Jean-Claude Fernandez, Lucian Ghirvu, Susanne Graf, Jean-Pierre Krimm, Laurent Mounier
CAV6
2000 Compositional State Space Generation with Partial Order Reductions for Asynchronous Communicating Systems
Jean-Pierre Krimm, Laurent Mounier
TACAS2
2000 Verification and test generation for the SSCOP protocol
Marius Bozga, Jean-Claude Fernandez, Lucian Ghirvu, Claude Jard, Thierry Jéron, Alain Kerbrat, Pierre Morel, Laurent Mounier
Sci. Comput. Program.8
1997 Specification and Verification of Various Distributed Leader Election Algorithms for Unidirectional Ring Networks
Hubert Garavel, Laurent Mounier
Sci. Comput. Program.2
1997 Protocol Verification with the ALDÉBARAN Toolset
Marius Bozga, Jean-Claude Fernandez, Alain Kerbrat, Laurent Mounier
Int. J. Softw. Tools Technol. Transf.4
1996 CADP - A Protocol Validation and Verification Toolbox
Jean-Claude Fernandez, Hubert Garavel, Alain Kerbrat, Laurent Mounier, Radu Mateescu 0001, Mihaela Sighireanu
CAV4
1996 Specification and Verification of the PowerScaleTM Bus Arbitration Protocol: An Industrial Experiment with LOTOS
Ghassan Chehaibar, Hubert Garavel, Laurent Mounier, Nadia Tawbi, Ferruccio Zulian
FORTE3
1993 Symbolic Equivalence Checking
Jean-Claude Fernandez, Alain Kerbrat, Laurent Mounier
CAV3
1992 A Toolbox for the Verification of LOTOS Programs
abstract
This paper presents the tools ALDEBARAN, CESAR, CESAR.ADT and CLEOPATRE which constitute a tool- box for compiling and verifying LOTOS programs. The principles of these tools are described, as well as their performances and limitations. Finally, the formal verification of the ret/REL atomic multicast protocol is given as an example to illustrate the practical use of the tool- box.
Jean-Claude Fernandez, Hubert Garavel, Laurent Mounier, Anne Rasse, Joseph Sifakis
ICSE3
1992 On-the-fly Verification of Finite Transition Systems
Jean-Claude Fernandez, Laurent Mounier, Claude Jard, Thierry Jéron
Formal Methods Syst. Des.2
1991 A Tool Set for deciding Behavioral Equivalences
Jean-Claude Fernandez, Laurent Mounier
CONCUR2
1990 Verifying Bisimulations "On the Fly"
Jean-Claude Fernandez, Laurent Mounier
FORTE2