Mit einem Prozessor-Fuzzer lässt sich Hardware analysieren, der man sonst blind vertrauen muss. In ersten Testläufen wurde der Fuzzer bei nahezu allen Architekturen fündig und spürte etwa undokumentierte CPU-Befehle auf. Das „Sandsifter“ getaufte Tool ist kostenlos verfügbar und lässt tiefe Einblicke in die Aktivitäten der Hardware zu. Es ist zwar bereits bekannt, dass CPUs gänzlich undokumentierte und versteckte Funktionen besitzen, aber über CPU-Bugs wurde bisher wenig berichtet. Die Annahme, Prozessoren würden ausschließen das machen, was ihnen der Benutzer aufträgt, wird auf eine harte Probe gestellt.

Anders als im Softwarebereich mit einer Vielzahl von Analyse-Tools und Techniken, gibt es bei Hardware und gerade bei CPUs kaum tiefgreifende Analysemöglichkeiten. Der Sicherheitsexperte Chris Domas möchte diesen Zustand wandeln. Er entwickelte den x86-Prozessor-Fuzzer, der mögliche Byte-Kombinationen für Maschinenbefehle ausführt und dabei Anomalien wie undokumentierte Befehle wahrnimmt.

 


Der untere Teil des Fensters zeigt die gefundenen Auffälligkeiten wie undokumentierte Funktionen oder Bugs

 

Bei seinen bisherigen Testläufen hat Domas bereits undokumentierte Befehle in gängigen Intel und AMD CPUs gefunden. Neben unzähligen Misständen in der Dokumentation und den eingesetzten Disassemblern, hat Domas auch Hardware-Bugs gefunden und dokumentiert. Einige davon sind besonders gravierend: Dumas hat beispielsweise einen Befehl gefunden, den er selbst mit „halt and catch fire“ beschreibt. Das Ausführen des Befehls führt laut Dumas zur einem kompletten Quittieren der Arbeit des Prozessors. In diesem Kontext ist das aktuelle Paper von Forschern der Ruhr Uni Bochum sehr spannend. Via Reverse Engineering eines x86 Processor Microcodes, hat das Team rund um Thorsten Holz herausgefunden, dass es möglich ist, eine AMD-CPU zu trojanisieren. Dazu implementierten sie eine Malware in AMDs Microcode und konnten sie über die bislang undokumentierten Microcode-Update-Funktionen der AMD K8- und K10-CPUs erfolgreich einschleusen.