Vor 50 Jahren erfand Ken Thompson die «unentdeckbare Sicherheitslücke». Vor gut 40 Jahren präsentierte er sie als Vortrag unter dem Titel «Reflections on Trusting Trust» anlässlich der Verleihung des Turing-Awards, des «Nobelpreises der Informatik». Hier ein kleiner Überblick, was es damit auf sich hat. Ausführlich im Artikel von Patrick Seemann.
IT-Sicherheit ist ja (leider) regelmässig Thema bei DNIP. Und auch heute geht es wieder um eine Backdoor; eine Hintertür, mit der sich ein Unbefugter Zugang zu einem Computersystem verschaffen kann.
In diesem Fall ist der Vorgang aber schon fast 50 Jahre her. Vergeben, aber alles andere als vergessen. Sie zeigt nämlich auf, wie schwierig es ist, einem Computer zu vertrauen, auch wenn man zu allen Programmen den Quellcode vor sich hat.
Bis in die 1960er-Jahre schrieb man Programme, indem man die Einsen und Nullen direkt (einzeln oder in 3er- oder 4er-Gruppen) in den Speicher des Raumfüllenden Computers schrieb. Diese Bitsequenzen wurden vom Prozessor dann als Befehle interpretiert, die etwas mit den Daten machten.
So hätten die Computer aber nie den Siegeszug angetreten, den wir kennen: viel zu mühsam!
Ende der 1960er und in den 1970ern begannen Programmiersprachen wie z.B. "C" beliebter zu werden. Der Computer verstand diese menschenlesbaren Texte aber nicht direkt. Von einem Compiler mussten sie in Maschinensprache übersetzt werden.
Ken Thompson, einer der Urväter der modernen Betriebssysteme, wollte 1974/75 zeigen, wie er eine Backdoor ins Login-Programm einfügen könne, ohne dass sie im Quellcode auftauche.
Wenn er den den Quellcode des Loginprogramms geändert hätte, dass dieses zusätzlich zum echten Passwort des Benutzers alternativ auch "sein" Passwort akzeptiert hätte, wäre das rasch aufgeflogen.
Seine bahnbrechende Idee: Da der Quelltext des Loginprogramms aber vom Compiler in Maschinensprache übersetzt werden musste, könnte er auch den Compiler hacken, so dass dieser, wenn er eine Passwortabfrage übersetze, diese um den zusätzlichen Passwortvergleich "ergänze".
Dann aber wäre der Quellcode des Compilers auffällig gewesen.
Als weiteren Schritt fügte Thompson deshalb ein, dass der Compiler nicht nur das Übersetzen des Loginprogramms erkannte und "erweiterte", sondern auch das Übersetzen des Compilers selbst. Sobald er den übersetzten Compiler mit den gehackten zwei Ersetzungen hatte, konnte er den Quellcode wieder auf die Originale zurücksetzen, weil die Funktionalität war ja jetzt "auf ewig" im Compiler selbst versteckt.
Inzwischen können wir mit dieser "unentdeckbaren Backdoor" ziemlich gut umgehen; dafür gibt es z.B. Werkzeuge wie "Reproducible Builds", die das zwar nicht verhindern können, aber ein solcher Angriff mit hoher Wahrscheinlichkeit erkennen helfen würde.
Patrick Seemanns Artikel erklärt das alles auf Deutsch. Wer aber den kommentierten Quellcode aus 1975 selbst verstehen möchte, dem sei als Vertiefung danach Russ Cox' Beschreibung ans Herz gelegt.
Bei DNIP.ch waren Backdoors in den letzten Monaten mehrfach Thema:
- Die Erklärung, wie die xz-Backdoor rechtzeitig vor der Infektion von Millionen Rechnern erkannt wurde.
- Habe ich dokumentiert, welche Beweggründe es für Backdoors geben könnte und was man mit IT-Sicherheitslücken alles anstellen (und verdienen) kann. Dabei gibt es auch ein paar Hinweise, wer hinter so einer Lücke stecken könnte.
Wem die Artikel gefallen, der oder die darf sich auch gerne hier und/oder bei DNIP auf die Mailingliste setzen lassen, um nichts zu verpassen!