Neujahrsvorsatz: Bei Live-Demos meiner Anwendung keine Sicherheitstoken mehr zeigen
12. Januar 2022
0 Min. LesezeitTraditionell beginnen wir das neue Jahr mit Vorsätzen. Wir möchten mehr gute Dinge tun und andere Dinge vermeiden. Was Letzteres betrifft, lautet mein Vorsatz für 2022: Während Demos auf der Bühne oder Ähnlichem nicht mehr versehentlich vertrauliche Informationen preisgeben, wenn ich meine Anwendung hacke.
Ja, dieser Neujahrsvorsatz klingt sehr spezifisch, und dahinter steckt eine ziemlich gute Security-Horrorgeschichte.
Meine Demo-Anwendung bei J-Fall 2021 hacken
Am 4. November 2021 fand J-Fall statt, die größte Java-Konferenz der Niederlande. Sie wird jährlich von der Netherlands Java User Group (NLJUG) veranstaltet. Als Mitglied des Vorstands war ich stolz, dass seit Beginn der Pandemie wieder eine Präsenzveranstaltung stattfinden konnte. Außerdem wurde ich ausgewählt, auf dieser Konferenz zu sprechen – über ein Thema rund um Java-Sicherheit, in diesem Fall über Deserialisierungs-Sicherheitsprobleme in Java.
Im Rahmen dieses Vortrags hackte ich meine Anwendung mithilfe einer Deserialisierungs-Gadget-Chain. Ich verwendete die bekannte Angriffskette in der Bibliothek Commons Collections 3.1, die zeigen soll, wie sich eine Anwendung mit beliebiger Codeausführung (ACE) hacken lässt. Die Vorbereitung war einfach: Mit ysoserial richtete ich die Gadget-Chain ein, und die Demo-Anwendung, die ich hacken wollte, enthielt die Bibliothek. Bis dahin lief alles gut – doch nun kam der knifflige Teil …
Geheime API-Token auf der Bühne preisgegeben
Bei der ACE wollte ich auf meinem Rechner den Befehl env ausführen und die Ausgabe in meiner Konsole zeigen. Falls Sie diesen Befehl nicht kennen: Er zeigt die Umgebungsvariablen des Host-Computers an. Wenn ich bei einer Demo eine Anwendung hacke, verwende ich auf meinem Demo-Laptop häufig einen bestimmten Benutzer. Manchmal nutze ich stattdessen einen Docker-Container, diesmal jedoch nicht.
Diesmal führte ich den Hack in meiner primären Umgebung aus. Das ist die Umgebung auf meinem Laptop, die ich auch für die reguläre Entwicklung nutze. Daher enthielten meine Umgebungsvariablen auch einige API-Token, darunter mein GitHub-Token! All das wurde auf der großen Leinwand im großen Kinosaal angezeigt. ???
Zunächst bemerkte ich nichts davon und konzentrierte mich ganz darauf, meinen Vortrag und die Demos auf der Bühne zu halten. Doch danach kam einer der Teilnehmer, Nils Breunese (@breun), auf mich zu und sagte: „Hey, ich hoffe, Sie können das als Security-Experte zu schätzen wissen“, und zeigte mir das folgende Bild auf seinem Handy.

Zunächst verstand ich nicht ganz, was möglich war. Doch er erklärte mir die Situation und nutzte mein GitHub-Zugriffstoken, um Code auf meiner Website einzuspielen. Als mir klar wurde, was passiert war, war mir das zugleich peinlich und ich war erleichtert. Es hätte viel schlimmer kommen können als mit diesem harmlosen Streich. Ich widerrief sofort alle in meinen Umgebungsvariablen hinterlegten Token und reparierte meine Website. Den Commit von Nils machte ich nicht rückgängig, sondern behob den Fehler mit einem neuen Commit. So ist er als Erinnerung an mein J-Fail weiterhin sichtbar.

Der Moment, in dem Nils mir direkt nach meinem Vortrag bei J-Fall 2021 erzählte, was passiert war.
Hacken Sie nicht sich selbst, sondern nur Ihre Demo-Anwendung
Zum Glück wurde daraus eine nette Geschichte, die ich anderen erzählen kann. Ich möchte Nils dafür danken, dass er ein guter Mensch mit Sinn für Humor ist. Für mich ist das eine Erinnerung daran, dass ich selbst beherzigen muss, was ich predige. Es ist unglaublich schmerzhaft, auf der Bühne über Sicherheit zu sprechen und Anwendungen zu hacken, während man selbst dabei gehackt wird. Deshalb möchte ich zum Schluss sagen: Wir sollten darauf achten, was wir tun und was andere sehen können. Tools für Ihre Anwendung, wie die von Snyk, sind zwar hilfreich, schützen aber nicht vor dummen Fehlern. Auch Security-Profis passieren solche Missgeschicke. Achten Sie einfach darauf und prüfen Sie Ihre Ausgabe, bevor Sie Ihre Anwendung in der Produktion veröffentlichen oder sie auf der Bühne vorführen.
Mein Neujahrsvorsatz für 2022 lautet also: Bei Demos oder Präsentationen keine vertraulichen Informationen preisgeben, während ich meine Anwendungen hacke! Ich bin Nils dankbar, dass er mich so freundlich daran erinnert hat. Frohes neues Jahr 2022!


