We are surrounded by more and more CPS, controlling multiple aspects of our lives, including safety-critical tasks where consequences of failure can be catastrophic. We put a lot of trust in them, but that is not always justified. They are integrated into a physical environment and are therefore often constrained to limited resources, and at the same time, they are incredibly complex. Real-time systems with strict timing bounds have to guarantee that activities finish before their deadline is reached, in addition to the functional requirements of those activities. Ensuring the quality of such systems is expensive and complicated.
Meanwhile, cyber attacks threaten CPS just as any computing system. In particular, the widespread use of unsafe languages and limited operating system protections make control-flow attacks dangerous to smaller CPS. Out of these attacks, code-reuse attacks are the hardest to defend against, and there exists no capable solution for resource-constrained safety-critical real-time systems.
This thesis presents WCET-aware diversity as an effective countermeasure against code-reuse attacks on resource-constrained and safety-critical real-time systems. It is based on fine-grained artificial software diversity on the basic block level, where independent code fragments are reordered at random for every variant or execution. We enhance this technique for higher security and lower WCET estimates. We use static WCET analysis to obtain detailed timing information. Using that, we can identify non-critical sections where we insert instructions for finer diversity. We propose static analyses for speculative hardware, specifically caches and branch predictors, whose timing is impacted by diversity, invalidating existing analyses. Our novel analyses deliver WCET estimates that are valid for all program variants. Additionally, we use the analyses to further optimize fragmentation in critical locations to increase the precision of WCET analyses with a minimal sacrifice in security.
We have implemented the approach in our diversification engine, accompanied by static timing analyses implemented in the open-source WCET-analyzer OTAWA. We performed extensive evaluation using two different sets of benchmark programs. The results show that the timing estimates for our diversified programs are tight despite the uncertainty introduced through diversification. Furthermore, WCET-aware diversity offers a high level of security through fine-grained diversification, which can be increased without impacting the WCET. Finally, we demonstrate the effectiveness of our countermeasure using a pacemaker case study with realistic size and hardware.In der heutigen Welt sind wir von immer mehr Cyber-Physischen Systemen (CPS) umgeben, die viele Aspekte unseres Lebens überwachen und steuern. Darunter sind auch sicherheitskritische Anwendungen, in denen Fehlverhalten katastrophische Konsequenzen haben kann. Wir schenken diesen Systemen viel Vertrauen, jedoch ist dies nicht immer gerechtfertigt. Diese Systeme sind in eine physische Umgebung integriert und haben dadurch oft nur beschränkte Ressourcen zur Verfügung, dennoch sind sie gleichzeitig sehr komplex. Für Echtzeitsysteme muss zusätzlich die Einhaltung fester Zeitgrenzen garantiert werden. Die Qualitätssicherung ist teuer und anspruchsvoll. Unabhängig davon sind CPS genauso durch Cyberangriffe bedroht wie andere Systeme. Kontrollflussattacken sind hier besonders relevant, durch die weitverbreitete Verwendung von unsicheren Sprachen und die eingeschränkte Verfügbarkeit von Schutzmaßnahmen der Betriebssysteme. Unter den Kontrollflussattacken sind Code-Reuse-Attacken die, die am schwersten zu verteidigen sind, und bisher existiert keine leistungsfähige Lösung für ressourcenbeschränkte und sicherheitskritische Echtzeitsysteme.
In dieser Arbeit stellen wir WCET-aware diversity vor, eine wirksame Verteidigungstechnik gehen Kontrollflussattacken auf ressourcenbeschränkte und sicherheitskritische Echtzeitsysteme. Es basiert auf feingranularer künsticher Software-Diversität auf Basic-Block-Level. Hierbei werden unabhängige Code-Fragmente vor der Ausführung zufällig umsortiert. Wir erweitern diese Technik für größere Sicherheit und genauere Schätzungen der maximalen Ausführungszeit (WCET). Wir verwenden statische WCET-Analysen, um mit detaillierten Informationen zur Ausführungszeit nicht-zeitkritische Teile der Programme zu identifizieren, in die wir Instruktionen für eine feinere Diversität einfügen können. Unsere neuen Analysen ermitteln WCET-Schätzungen, die für alle Programmvarianten gültig sind. Außerdem verwenden wir die Ergebnisse dieser Analysen, um die Fragmentierung so zu optimieren, dass die Genauigkeit der Analyse wesentlich steigt, bei nur geringfügigen Sicherheits-Einbußen.
Wir haben unseren Ansatz in der Diversification Engine implementiert, des Weiteren haben wir unsere statischen Ausführungszeitanalysen in OTAWA, einem Open-Source-Tool für Ausführungszeitanalysen, implementiert. Wir haben alle Aspekte unseres Ansatzes ausführlich unter Verwendung zweier Benchmark-Suiten evaluiert. Die Ergebnisse der Evaluation zeigen, dass die von unseren Analysen geschätzten maximalen Ausführungszeiten trotz der durch die Diversität verursachten Ungewissheit \emph{genau }sind. Außerdem bietet WCET-aware diversity ein hohes Maß an Sicherheit durch feingranulare Diversität, die sogar noch erhöht werden kann ohne dabei die maximale Ausführungszeit zu beeinträchtigen. Die Wirksamkeit unserer Verteidigungstechnik demonstrieren wir anhand einer Fallstudie in Form eines einfachen Herzschrittmachers mit Code-Größe und Hardware entsprechend einem realistischen CPS