Bekanntlich ist das Problem an C- und C++-Programmen, dass sie so selten abstürzen. Stattdessen führen falsche Speicherzugriffe oft zu Sicherheitsproblemen oder anderem katastrophalen Verhalten.
Eine Möglichkeit, dieses Problem zu umgehen ist es, den Compiler Code generieren zu lassen, der prüft, ob über die Grenzen eines Objekts oder Puffers hinaus gelesen oder geschrieben wurde. In C und C++ ist allerdings ein viel freizügigerer Umgang mit Pointern erlaubt als in anderen Programmiersprachen. Zum Beispiel darf ein Pointer in die Mitte eines Puffers zeigen, ohne dass dessen Anfangsadresse überhaupt bekannt ist. Das führt dazu, dass jeder Pointer selbst mitspeichern muss, in welchen Grenzen er gültig ist.
In LLVM und GCC ist ein solcher Adress-Sanitizer schon vorhanden. Ziel dieser Bachelorarbeit ist es, aufbauend darauf auch für den institutseigenen Compiler libfirm einen Adress-Sanitizer zu entwickeln.
Aufgabe:
- Recherche der bekannten Sanitizer-Ansätze
- Implementation eines Sanitizers in libfirm
- Evaluation des Overheads
Voraussetzungen
- Programmierkenntnisse in C
- Interesse am Compilerbau
Schlüsselworte
Compiler, Sicherheit, Analyse Veröffentlichungen
Veröffentlichung |
Protection of Heap-allocated Memory using Low Fat Pointers in libFirm |
Betreuer
Ehemalige Mitarbeiter |
---|
M.Sc. Andreas Fried |
Studenten
Studenten |
---|
Achim Kriso |