MIT entwickelt neues System, um Integer-Überläufe aufzuspüren
Das auf einer Fachkonferenz vorgestellte DIODE soll in der Lage sein, Eingabewerte zu generieren, die Input-Kontrollen passieren und trotzdem intern Überläufe auslösen. Das System kann so helfen, potenzielle Schwachstellen zu finden.
- Julia Schmidt
Wissenschaftler der Computer Science and Artificial Intelligence Laboratory (CSAIL) des MIT haben ein neues System zum Auffinden von durch Integer-Überläufe erzeugte Fehler präsentiert. DIODE (Directed Integer Overflow Detection) ist so angelegt, dass es mit Programmen arbeiten kann, die zunächst die Werte relevanter Eingabefelder prüfen und diese dann verwenden, um Werte wie die Größe der zu reservierenden Speicherblöcke zu berechnen.
Im Gegensatz zu vergleichbaren Projekten, arbeitet DIODE auf x86-Binärdateien statt auf Quellcode. Das System versucht, Werte zu generieren, die die Überprüfung der Eingabe überstehen und trotzdem Überläufe in bestimmten Ausdrücken auslösen. Dazu versucht das System erst Stellen aufzudecken, an denen Speicher reserviert wird und die Eingabe die Größe des Speicherblocks bestimmt. Gleichzeitig prüft es, welche Bytes des Inputs hier genau zum Tragen kommen. In einer zweiten Phase lässt das System die Anwendung erneut laufen und zeichnet für alle Berechnungen, die der Input beeinflusst, symbolische Repräsentationen auf. Letztere werden dann ausgewertet und Kandidaten berechnet, die einen Überlauf erzeugen könnten. Mit ihnen wird neuer Input generiert und weitere Tests ausgeführt, bis feststeht, ob ein Überlauf tatsächlich auftreten kann.
Automatische Korrekturen
Um die Stellen zu korrigieren, hat das Team zudem ein automatisches Code-Transfer-System entwickelt, das den Eingabewert, der den Fehler erzeugt, als Grundlage nimmt und mit einem Wert, der richtig verarbeitet wird und einer Anwendung, die beide Eingaben ohne Fehler nutzt, versucht, eine Lösung zu finden. Hat das System in der sogenannten Spenderanwendung eine Stelle gefunden, die die Schwachstelle eliminiert, ist sie wohl in der Lage, einen Patch für die getestete Anwendung zu erstellen. Die genaue Vorgehensweise ist in der wissenschaftlichen Veröffentlichung, die DIODE einführt, erklärt.
Obwohl sich einige Berechnungen mit sogenannten Integer Overflows beschleunigen lassen, kann die Arbeit mit überlaufenen Integern bei kritischen Operationen wie dem Reservieren des Speichers zum Absturz des Programms führen. Potenziell eignen sich derartige Stellen folglich als Angriffspunkte. (jul)