Abstract
70% of computer attacks are memory corruption attacks. With the exponential growth of connected devices through the Internet of Things (IoT), the question of vulnerability of these embedded electronic systems is raised: what is the real threat? What solutions are available in the state of the art, and are they sufficient? How to propose relevant and functional protection solutions in an ecosystem, such as the IoT, composed of constrained environments? Initially, we study memory corruption attacks by implementing an experimental platform (prototype based on a Zynq-7000 SoC) to understand how they work, deploy existing countermeasures, and analyze their limitations.We mainly show that existing CFI solutions have some significant drawbacks: a substantial impact on performance in their software approach, an additional silicon cost in their hardware implementation, and an inability to detect attacks on data flow usage. A possible alternative is the indirect detection of attack signatures or operating anomalies through performance counters, a technique relying on the advantage of microprocessors' hardware. The literature includes many studies in this field, which we analyze to specify the basis of a relevant solution in the choice of events to predict an attack. Thus, we compare classification models derived from machine learning, particularly their accuracy and memory/performance impact. Our analysis leads us to a method likely to generate a minimum of false negatives and sufficiently light on the resource constraints specific to our embedded domain. Thus, through an experimental approach, we can propose a solution based on the use of QDA to obtain an attack detection accuracy of up to 98.78%, with performance penalties less than 1%. For this solution to be relevant in an industrial context, it is also necessary to consider the potentially crippling number of false positives. Then, we propose a diagnostic stage following the detection stage, based on the use of a partial CFI dedicated to verifying previously identified false positives.We also show that state of the art hardware implementations of detection tools (e.g. Control Flow Integrity Check (CFI) solutions) rely on using a two-step countermeasure, which can turn out to be weak. The first part, which consists of notifying an attack to the processor through an interruption, can be bypassed before ignoring the solution’s entire security policy. To solve this issue, we suggest to implement a robust reset and reboot method adapted to multiprocessor systems.Thus, in this thesis, we contribute to the security of embedded systems against some of the most dangerous computer attacks, demonstrated experimentally in an approach that meets the constraints of resources specific to the field.