Sind so viele Treiber: Für die zahlreichen Peripheriegeräte werden täglich etwa zehn neue Treiber veröffentlicht. Bild: Technology Review
Informatiker der ETH Lausanne haben ein System entwickelt, das Gerätetreiber auf einem virtuellen Rechner auf Fehler testet. Es deckt auf, wie schlampig Hardware-Hersteller ihre Hilfsprogramme schreiben.
Wer an einen Rechner externe Geräte wie Drucker, Kamera oder USB-Laufwerke anschließen will, verlässt sich selbstverständlich darauf, dass deren Gerätetreiber funktionieren. Die Realität sieht leider anders aus: Nach Schätzungen von Experten sind die Hilfsprogramme für 85 Prozent aller Abstürze auf Windows-Rechnern verantwortlich. Ihre Fehlerraten sind bis zu sieben Mal größer als die von anderen Teilen des Betriebssystems. Zudem stellt schlecht geschriebener Code von Treibern ein Sicherheitsrisiko dar.
„Gerätetreiber sind schrecklich“, konstatiert Vitaly Chipounov, Informatiker im Dependable Systems Lab der ETH Lausanne. Es entbehre nicht einer gewissen Ironie, dass die meisten Computernutzer ausgerechnet diesen Programmen voll vertrauen und sich nur auf Antivirensoftware oder Firewalls verlassen würden. Schön wäre es, man könnte die Hilfsprogramme einfach und sicher überprüfen, bevor man ihnen den Zugriff auf Betriebssystem-Funktionen erlaubt. Das Software-Werkzeug DDT („Device Driver Testing System“), das Chipounov auf der Usenix-Konferenz in Boston vorgestellt hat, soll die Bugs in den kleinen Programmen nun aufspüren.
DDT ist so angelegt, dass es den Treibercode selbst nicht analysiert. Stattdessen wird das Hilfsprogramm in einen virtuellen Rechner – den Open-Source-Emulator QEMU – geladen und dort ausgeführt. DDT kann anhand verschiedener Prozeduren feststellen, ob ein Computer sich aufhängen oder gar abstürzen könnte.
Bei diesem Testlauf spricht DDT keine Hardware an – eine Datenkommunikation findet nur mit simulierten Geräten statt. Das genügt laut Chipounov schon, um herauszufinden, ob ein Treiber akkurat für ein bestimmtes Gerät programmiert wurde. Mit der Fehlerdiagnose gibt das Analysewerkzeug auch Hinweise aus, wie ein Bug behoben werden könnte.
Chipounov und seine Kollegen Volodymyr Kuznetsov und George Candea testeten DDT an sechs verbreiteten Gerätetreibern für Windows. Ergebnis: 14 ernsthafte Fehler – obwohl einige Treiber von Microsoft selbst zertifiziert worden waren. Ihr Analysetool könnte deshalb den Zertifizierungsprozess verbessern, sagt Chipounov.
Bei den Tests fanden die Lausanner auch heraus, dass einige ähnliche Treiber dieselben systematischen Fehler aufweisen. Das liege wohl daran, dass manche Hardware-Hersteller einfach Code-Schnippsel von anderen Treibern kopiert hätten, sagt Chipounov und frotzelt: „Wenn sie schon mit Copy and Paste arbeiten, sollten sie wenigstens funktionierenden Code nehmen.“
Stabilität und Sicherheit von Gerätetreibern seien ein echtes Problem, pflichtet Vinod Ganapathy bei, Informatiker an der Rutgers University in New Jersey. Auf Linux-, Mac- und Windows-Rechner bekämen Treiber üblicherweise dieselben Zugriffsrechte wie die Betriebssysteme selbst – sie können damit auch sytemrelevante Dateien löschen oder ändern. Weil sie von den anderen Herstellern geschrieben würden, seien die Tests häufig nicht so rigoros, sagt Ganapathy. Im Netz finden sich auch Treiberdateien zum Herunterladen, in die absichtlich Schadcode eingefügt wurde.
„Solche manipulierten Treiber können dazu dienen, die Anwesenheit von kompletten Schadprogrammen zu tarnen oder den Datenverkehr des Rechners zu belauschen“, erläutert Ganapathy. „Doch auch schlicht fehlerhafte Treiber ohne Schadcode stellen ein ähnliches Risiko dar, denn Angreifer könnten deren Lücken für ihre Zwecke ausnutzen.“
Natürlich arbeiten auch andere Gruppen an dem Treiberproblem. Ganapathy etwa hat mit Michael Swift von der Universität von Wisconsin in Madison ein Verfahren entwickelt, Treiberdateien so zu installieren, dass sie vom Kern des Betriebssystems isoliert bleiben.
Den Lausanner Informatikern geht es aber vor allem darum, den Nutzern selbst ein Werkzeug an die Hand zu geben, um die Hilfsprogramme auf ihren Rechnern zu testen. Die aktuelle Version von DDT verlangt noch zu viel Expertise für durchschnittliche Nutzer und eignet sich nur für Spezialisten, etwa bei den Treiberherstellern selbst.
Chipounov kann sich aber vorstellen, dass DDT irgendwann eine Zusatzfunktion von Betriebssystemen wird. Dann müsste ein Nutzer nur einen „Jetzt Testen“-Button drücken, wenn er einen neuen Treiber installiert hat.
Das Konferenz-Paper: Kuznetsov, V., Chipounov, V. & Candea, G., „Testing Closed-Source Binary Device Drivers with DDT“, Proceedings of the USENIX Annual Technical Conference, Juni 2010.
Permalink: http://heise.de/-1032252