Der Donnerstag begann mit einem Triumph, der ungefähr zwölf Minuten anhielt. Dr. Küster hatte die ganze Nacht durchgeackert und die IP-Adresse von Pixels CyberPanel-Server über den Provider rückverfolgt – ein unscheinbares Rechenzentrum am Stadtrand, getarnt als Lagerhalle für Bürobedarf. „Die BastionSecure-Logs können warten“, hatte ich Adelheid zugeflüstert, während ich meine Dienstwaffe entsicherte und das Siegel für die richterliche Anordnung demonstrativ in die Schreibtischschublade warf, „jetzt schnappen wir uns den Prahlhans persönlich.“ Adelheid notierte: „Niesel-Stimmung = kurzzeitige Euphorie, Halbwertszeit ca. elf Minuten“, und summte dazu das Saba-Reso-Brummen in einer Tonlage, die verdächtig nach einem Todesmarsch klang. Wir fuhren mit Blaulicht, ich malte mir bereits aus, wie Pixel mit seiner Mate-Flasche in der Hand und ungläubigem Gesicht im Neonlicht der Serverracks stehen würde, aber als wir die Tür mit dem universalen Nachschlüssel der Polizei öffneten – einem Vorschlaghammer, geliehen von der Feuerwehr –, fanden wir nur einen leeren Raum, ein einsames, rhythmisch blinkendes Patchkabel und einen Zettel, auf dem in Pixels unverkennbarer Handschrift stand: „Zu langsam, Kommissar. Die nächste Firma heißt Lobastria. Danke für die Bitcoin-Analyse – wir haben die Wallet-Adresse gewechselt. LG, Die Kulmination.“ Ich sank gegen die Wand, diesmal nicht gegen Porenbeton, sondern gegen die harte Realität von zwölf Minuten Verspätung, während Adelheid den Zettel fotografierte und mit einem Bleistiftstrich notierte: „Niesel-Stimmung = implodierte Euphorie, Restfeuchte 0%.“
Während ich noch auf den Zettel starrte, als könnte ich Pixel durch puren Willen aus der Tinte herauslesen, spielte Dr. Küster über mein Diensthandy den aktuellen IRC-Mitschnitt ab – Pixel prahlte bereits wieder, diesmal mit dem Angriff auf Lobastria, einen Anbieter für Hochsicherheits-Logistik, der sensible Frachtpapiere digital verwaltete und in denselben leeren Serverboxen residiert hatte, in denen ich jetzt stand. „Erstzugriff war ein kleines Kunstwerk“, säuselte Pixels Stimme, während Svetlana im Hintergrund leise fluchte, offenbar über einen verklemmten Reißverschluss. „Die Entwickler von Lobastria benutzen für ihre Konfigurationsdateien den Texteditor vim auf dem Administrationsserver – und vim hat eine sogenannte Modeline-Schwachstelle. Wisst ihr, was eine Modeline ist? Das ist eine Zeile in einer Textdatei, die dem Editor sagt, wie er sich verhalten soll – Schriftgröße, Einrückung, solche Spielereien. Nur hat vim vergessen, diesen kleinen Befehlshaber einzusperren, und wenn man eine speziell präparierte Datei öffnet, kann man ihn dazu überreden, beliebige Systembefehle auszuführen. Ich habe also eine völlig harmlos aussehende Readme-Datei präpariert, mit einem Modeline-Kommentar darin, der aussah wie eine dekorative Linie aus Sternchen, in Wahrheit aber eine kleine Bombe war. Das ist, als würde man einem Briefträger einen Umschlag geben, auf dem steht: ‚Öffne diesen Brief nicht – ach, und während du noch überlegst, trag bitte diesen Karton voller Ziegelsteine in den fünften Stock.‘ Der Admin von Lobastria öffnete meine Datei mit Root-Rechten, vim führte meine Befehle aus, und ich hatte eine Shell auf dem Administrationsserver.“ Adelheid kritzelte: „vim = trojanischer Texteditor mit Sternchen-Sprengsatz“, und ich hätte am liebsten jeden Texteditor der Welt von meinem Dienstgerät deinstalliert.
„Nächster Schritt, die Krone, der Hauptgewinn“, fuhr Pixel fort, während Boris eine Tastatur so heftig bearbeitete, dass es klang wie ein Maschinengewehr, „ich hatte jetzt eine einfache Benutzershell, aber ich brauchte Root-Rechte, um an die Frachtpapier-Datenbank heranzukommen. Und da kam GNU libc ins Spiel, die gute alte GNU-C-Bibliothek, das Fundament von praktisch jedem Linux-System. Die hat eine Schwachstelle im dynamischen Loader, genauer gesagt in der Verarbeitung von GLIBC_TUNABLES – das ist eine Umgebungsvariable, mit der man das Verhalten des Laders feinjustieren kann, quasi die EQ-Einstellungen für den Systemstart. Ein simpler Pufferüberlauf in dieser Variable erlaubt es, eigenen Code mit Root-Rechten auszuführen, und das auf fast jedem aktuellen System. Das ist, als würde man an einem Mischpult einen völlig harmlosen Regler für die Raumakustik so weit aufdrehen, dass die gesamte Anlage durchbrennt und der Notstromgenerator anspringt – nur dass ich den Notstromgenerator vorher mit meinen eigenen Notenblättern bestückt hatte.“ Ich spürte, wie sich meine Knöchel um den Zettel von Pixel ballten, während Adelheid notierte: „GNU libc = Mischpult-Raumakustik-Regler mit Notstrom-Hijacking.“ Die Kombination war teuflisch einfach, und sie funktionierte, weil niemand damit rechnete, dass der harmloseste Teil des Systems – ein Texteditor und eine Einstellungsvariable – zu einem Fallbeil werden konnte, wenn man sie in der richtigen Reihenfolge anfasste.
„Und zu guter Letzt, für den Abfluss“, schloss Pixel, während Svetlana eine Champagnerflasche köpfen ließ, „die OpenSSH-Schwachstelle. Ich hatte jetzt Root-Rechte, aber wie sollte ich die Datenbank unauffällig exfiltrieren, ohne dass die Sicherheitssysteme von Lobastria Alarm schlagen? OpenSSH, der sichere Tunnel, durch den alle vertraulichen Daten fließen, hatte selbst ein Loch: einen Race Condition im Authentifizierungsprozess, bei dem der Server den SIGALRM-Timer falsch behandelt, wenn die LoginGraceTime abläuft. In diesem winzigen Zeitfenster kann man Code einschleusen, der die SSH-Sitzung kompromittiert und den Datenstrom umleitet – quasi einen Abzweig in der Röhre einbauen, durch den ich die Frachtpapiere in meinen eigenen Container umleitete, während Lobastria dachte, die Verbindung sei sauber getunnelt und sicher. Das ist, als würde man einen Geldtransporter überfallen, indem man in der halben Sekunde, in der die hintere Tür aufgeht, eine zweite, identische Tür dahinter aufstellt, die in einen leeren Lieferwagen führt – der Fahrer merkt nichts, die Wertsachen sind weg, und die Zählung stimmt erst wieder, wenn es zu spät ist.“ Adelheids Bleistift raste: „OpenSSH = Panzertür mit halbsekündlicher Zweitür-Optik“, und ich musste zugeben, dass Pixels Metaphern immer präziser wurden, je verzweifelter meine Lage war.
Aber die Verzweiflung war nur eine Seite der Medaille, und während Adelheid bereits den nächsten Eintrag in ihr Notizbuch kritzelte – „Niesel-Erholung = einsetzend, Quelle: sportlicher Ehrgeiz“ –, entdeckte ich etwas, das mich elektrisierte. Das blinkende Patchkabel, das Pixel zurückgelassen hatte, war nicht irgendein Kabel – es war beschriftet, mit einem Etikett aus demselben Drucker, den auch die Buchhaltung von Lobastria benutzte, und es führte zu einem Patchfeld, das noch warm war. Die Server waren erst vor wenigen Minuten abgeschaltet und abtransportiert worden, und das bedeutete, dass Pixel und seine Bande die Hardware nicht über die üblichen Wege verschwinden lassen konnten – sie mussten einen lokalen Kurierdienst beauftragt haben, und Kurierdienste hinterlassen Spuren, unterschriebene Lieferscheine, Überwachungskamerabilder, die man nicht mit einem SSH-Tunnel umgehen konnte. Ich rief Dr. Küster an und ließ sie sämtliche Kurierfahrten aus dem Gewerbegebiet der letzten zwei Stunden abgleichen, während Adelheid die Seriennummer des Patchfelds notierte und mit einem zufriedenen Summen in der Frequenz eines optimistischen Versandhaus-Jingles unterlegte. „Pixel hat sich mit dem Zettel selbst verraten“, sagte ich, „er dachte, er demütigt uns mit einer Nachricht, aber er hat uns die Tatzeit auf die Minute genau mitgeteilt und den Radius eingegrenzt. Morgen früh rollen wir die Kurierfirma auf, und dann finden wir heraus, wohin die Server gegangen sind – und wer den Transport unterschrieben hat.“ Das Blinken des Kabels schien plötzlich nicht mehr spöttisch, sondern hilflos, wie ein Leuchtfeuer, das der Bande aus Versehen entzündet hatte.