Login
Newsletter
Werbung

Mi, 10. November 2010, 08:58

Software::Kernel

Neues Tool zum Testen von Systemaufrufen

Kernel-Guru Dave Jones hat ein neues Programm entwickelt, das mit falschen Eingabewerten Fehler in Systemaufrufen aufdecken will.

Das »Fuzzing Tool«, an dem Jones nach eigenen Angaben seit einer Weile arbeitet, folgt dem bekannten Prinzip des »Fuzzing«. Dabei übergibt man den aufgerufenen Funktionen zufällige, aber passende Parameter. Im Normalfall sollte eine Funktion mit allen nur möglichen Parametern zurechtkommen. Ungültige Kombinationen von Parametern müssen erkannt und zurückgewiesen werden. Mit allen akzeptierten Parameterkombinationen sollte die Funktion das erwartete Ergebnis liefern, was zwar selbstverständlich, aber bei komplizierten Funktionen, die von externen Faktoren abhängen, auch nicht so einfach zu überprüfen ist.

Schon vor langer Zeit hatte Kurt Garloff ein Fuzzing-Tool zum Testen der Systemaufrufe von Linux geschrieben. Es beruhte vollständig auf dem Zufallsprinzip. Es setzte die CPU-Register auf zufällige Werte und rief damit eine zufällig ausgewählte Funktion auf. Mit diesem Programm wurden einige Fehler entdeckt und schnell korrigiert. Danach passierte es nur noch selten, dass mit diesem Programm ein Fehler entdeckt wurde.

Dave Jones führt diese Idee nun weiter, will dabei aber wesentlich gezielter vorgehen. Ruft man eine Funktion mit zufälligen Werten auf, so wird schon die erste Prüfung der Parameter meist zum Abbruch der Funktion mit Rückgabe eines Fehlerwertes führen. Stattdessen ruft Jones die Funktionen mit Werten auf, die im erlaubten Bereich liegen, aber dennoch in irgendeiner Form ungültig sind. Dadurch kann auch Code getestet werden, der hinter der schützenden ersten Parameterprüfung liegt.

Das neue Programm hat jetzt den ersten realen Fehler im Kernel entdeckt, der bereits behoben wurde. Jones rechnet damit, dass er mit künftigen verfeinerten Versionen weitere Fehler finden wird. Wer selbst testen oder das Programm erweitern will (einige Ideen sind in der TODO-Datei zu finden), kann den Code aus dem Git-Repositorium git://git.codemonkey.org.uk/scrashme.git beziehen. Ein aktueller Schnappschuss des Quellcodes von »scrashme« ist auf der Webseite von Dave Jones zu finden.

Werbung
Kommentare (Insgesamt: 0 )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung