SCHUTZ VON LEGACY-CODE. JUST-IN-TIME-SCHUTZ VOR SCHWACHSTELLEN.
Malware stellt eine der größten Sicherheitsbedrohungen in unserer digitalisierten Gesellschaft dar. Malware befällt Verbrauchersysteme z. B. mit Lösegeldforderungen, die auf Erpressung der Opfer abzielen, oder sie wird für Spionage und Cybersabotage verwendet. Malware verseucht Systeme aufgrund von Software-Schwachstellen. Leider basieren diese Schwachstellen oft auf der grundlegenden Funktionsweise von Prozessoren: Dies macht es schwierig, bestehende und zukünftige Schwachstellen zu verhindern.
Schutz von Legacy-Code vor Laufzeit-Angriffen. Eine der grundlegenden Eigenschaften von Computersystemen ist ihre Vielseitigkeit - sie können beliebige Software ausführen, indem sie blind jeden Befehl ausführen, der ihnen gegeben wird. Dieser Vorteil von Computern, dass Software während der Laufzeit geändert werden kann, ist gleichzeitig ihr schwächster Punkt. In der Vergangenheit haben sich mehrere solcher Möglichkeiten zur Änderung des Verhaltens eines Programms während der Laufzeit herausgebildet und werden von Angreifern aktiv genutzt, um einem laufenden Prozess ihr Verhalten aufzuzwingen. Diese Forschungslinie konzentriert sich auf die Eindämmung von Exploits, die z.B. auf ROP basieren, durch die Anwendung von Schutz auf Sprach-, Betriebssystem- oder Hypervisor-Ebene, wodurch ältere Programme geschützt werden. Dies ist eine bewusste Ergänzung des revolutionäreren Ansatzes, den Einsatz sichererer Programmiersprachen vorzuschlagen, da dieser pragmatische Ansatz zu einer sofortigen, zusätzlichen Schutzebene führt.
Just-in-Time-Schutz vor Schwachstellen. Mehrere wirkungsvolle Angriffe missbrauchen die Möglichkeit, den eigenen Code eines Programms zu lesen oder sogar zu transformieren. Solche Introspektions-Methoden sind für gutartige Allzweckprogramme normalerweise nicht notwendig. Angreifer nutzen diese Fähigkeit jedoch aus, um verborgene Informationen aufzudecken, die im Speicher eines Prozesses gespeichert sind. Wir haben daher systematisch die Grundursache für solche Schwachstellen analysiert und Abwehrmechanismen vorgeschlagen. Ein Faktor, der zu den zugrundeliegenden Schwachstellen bei der Speicheroffenlegung beiträgt, ist eine Entscheidung im Hardware-Design, die wir durch den Vorschlag eines neuen Hard- und Software Primitivs namens "XnR" erfolgreich behoben haben. Der andere Grund ist, dass JIT-Compiler (z.B. in Browsern) dem Angreifer die Kontrolle über das Code-Layout überlassen, ohne dass er den generierten Code überhaupt lesen muss. Dies hat uns dazu veranlasst, neue Verteidigungsmechanismen vorzuschlagen, um vor JIT-basierten Angriffen auf die Wiederverwendung von Code in Browsern zu schützen und die Sicherheit von JIT-generiertem Code zu erhöhen. Diese Lösungen ergänzen die formale Verifikation und die statische Analyse.