Wie gehe ich mit einer Sicherheitslücke um, die ich entdeckt habe?
Ein Gastbeitrag von Linus Neumann.
Linus (@Linuzifer) ist einer der Sprecher*innen des Chaos Computer Clubs. Er arbeitet hauptberuflich in der IT-Security-Branche und ist nebenbei u.a. Podcaster (https://logbuch-netzpolitik.de/). Außerdem war er 2015 als Mentor bei Jugend hackt in Berlin mit dabei.
Wie gehe ich mit einer Sicherheitslücke um, die ich entdeckt habe?
Das kann ja mal passieren: Du schaust Dir ein Programm, eine App oder einen Server an und findest etwas, das im wahrsten Sinne des Wortes „mit Sicherheit nicht so sein sollte“. Vielleicht kannst Du Dateien lesen, auf die Du eigentlich nicht zugreifen können solltest, oder Du kannst Funktionen nutzen, die nicht für Dich gedacht sind. Mit anderen Worten: Die Sicherheit anderer Nutzer steht auf dem Spiel. Was ist nun zu tun?
Zuerst einmal ist festzuhalten, dass es immer richtig ist, Sicherheitslücken zu schließen. Auch wenn Du es Dir vielleicht nicht vorstellen kannst, gibt es da draußen eine Menge Leute, die die gleiche Lücke genauso finden können wie Du. Vielleicht haben sie das sogar längst schon getan. Und wer weiß, was diese Leute damit anstellen? Andere Leute davor zu schützen, ist Deine Verantwortung, wenn Du Kenntnis von einer Schwachstelle hast. Deshalb ist es immer das Richtige – und auch das einzig Richtige – Deinen Teil dazu beizutragen, dass die Schwachstelle beseitigt wird.
Einige Schwachstellen lassen sich durch einfache Änderungen im Code beheben, andere erfordern Architekturänderungen, wieder andere sind vielleicht gar nicht wirklich zu beheben. Um den individuellen Umständen gerecht zu werden, hat sich ein Vorgehen namens „Responsible Disclosure“ (etwa „verantwortungsbewusstes Mitteilen“) etabliert. Im Prinzip läuft es folgendermaßen ab: Den Verantwortlichen, also dem Hersteller oder Betreiber, wird die Schwachstelle vollständig mitgeteilt. Dabei wird erklärt, wie genau die Schwachstelle ausgenutzt werden kann und welche Empfehlungen es zur Behebung gibt. Zur Behebung wird ein realistischer Zeitrahmen gesetzt, innerhalb dessen die Schwachstelle behoben sein sollte. Nach Ablauf der Frist wird die Öffentlichkeit über den Fehler in Kenntnis gesetzt – und zwar unabhängig davon, ob er behoben wurde oder nicht. Die Ankündigung zur Veröffentlichung dient dabei als freundliches Druckmittel, um auf eine schnelle Behebung hinzuwirken.
Was in der Theorie sehr einfach klingt, gestaltet sich in der Praxis oft sehr viel komplizierter. Vielleicht lässt sich ein Fix nicht in wenigen Monaten ausrollen, weil es verschiedene Abhängigkeiten gibt. Vielleicht hat der Betreiber eine andere Vorstellung davon, wie kritisch die Schwachstelle wirklich ist. Vielleicht erreichst Du auch einfach die falsche Person, wirst nicht ernstgenommen und kommst nicht zum richtigen Ansprechpartner durch.
Wer so etwas zum ersten Mal macht, macht auch gern mal einen Fehler. Einige davon können Dich schnell in große Schwierigkeiten bringen – insbesondere auch rechtliche. Du wärst nicht die erste Person, die sich plötzlich auf der Polizeiwache mit einer Anzeige wiederfindet – und vielen Zeugen auf der Gegenseite. Daher wende Dich bitte ganz besonders beim ersten Mal – an Experten, die Erfahrung darin haben, solche Gespräche zu führen. Solche Experten findest Du zum Beispiel im Chaos Computer Club, wo viele Mitglieder tagtäglich Schwachstellen erforschen, mitteilen und beheben. Gern unterstützen wir auch.
Aus Fehlern anderer soll man selbst lernen. Daher hier ein paar der wichtigsten Tips im Umgang mit Schwachstellen und deren Verursachern:
1. Überschätze Dich nicht.
Insbesondere bei den ersten Malen kommt es gern mal vor, dass junge Hacker und Hackerinnen ihren Fund für sehr viel kritischer halten, als er in Wirklichkeit ist. Schon allein deshalb ist es sinnvoll und wichtig, Dich mit jemandem auszutauschen, der mehr Erfahrung im Bereich der IT-Sicherheit hat und einschätzen kann, wie schwerwiegend Dein Fund denn nun wirklich ist. Gern stehen wir Dir dafür zur Verfügung.
2. Mülle nicht in den Daten anderer Leute.
Wenn Du auf Systemen anderer Leute unterwegs bist, lasse alles so, wie es ist. Lösche nichts und verändere nichts. Wenn Du beispielsweise demonstrieren willst, dass Du Zugriff auf eine Datenbank hast, dann führe am besten nur Lese- und keine kritischen Schreiboperationen aus. Allzu schnell kommst Du sonst mit dem Gesetz in Konflikt und bietest eine wunderbare Angriffsfläche, um Dich zu diskreditieren. Aber seien wir ehrlich: Manchmal ist es schon zu spät. In solchen Fällen empfiehlt es sich, einen Mittler den Disclosure-Prozess durchführen zu lassen, um Dich aus der Schusslinie zu bringen. Wir vom Chaos Computer Club machen das regelmäßig, haben Erfahrung in juristischen Auseinandersetzungen und vor allem darin, wie sie vermieden werden können.
3. Sei freundlich und kooperativ: Biete Unterstützung an und leiste diese auch.
Im Zweifelsfall sprichst Du mit der Person, die für den Fehler verantwortlich ist und ihn korrigieren muss. Das wird schon unangenehm genug sein. Da braucht niemand noch irgendwelche frechen, naseweisen Sprüche von Dir. Zum Beispiel kann man immer in das Gespräch einsteigen, in dem man etwas sagt wie: „Uns ist eine kleine Schwachstelle in Ihrem System aufgefallen, und wir würden ihnen gern dabei helfen, diese zu beheben.“ Das wirkt auch um einiges professioneller als „Bwahahaha, ihr seid so bescheuert und verantwortungslos, ich erkläre euch jetzt mal, was prepared statements sind, ihr Affen!“ Im weiteren Verlauf ist es dann wichtig, gemeinsam an der Behebung zu arbeiten. Oft lernt man auch dabei noch eine Menge über das betroffene System, und dass die Welt dann eben doch komplexer ist, als man dachte.
4. Teile von Beginn an alles mit, was Du weißt.
Wichtig ist, direkt und von Beginn an die Schwachstelle vollständig und nachvollziehbar zu beschreiben. „Nachvollziehbar“ bedeutet in diesem Fall, dass Euer Gegenüber in die Lage versetzt wird, Eure Demonstration der Schwachstelle selbst durchzuführen. Keinesfalls solltest Du irgendwelches Wissen zurückhalten. Auch kritische Rückfragen solltest Du nicht persönlich nehmen, sondern sachlich und fachlich korrekt beantworten. Auch wenn es Dir vielleicht nicht so vorkommt, hast Du es mit einem Experten oder einer Expertin zu tun – und die erwarten auch professionelle Antworten von Dir. Denk daran, dass Du jetzt in einem professionellen Umfeld bist und Dein Ziel eine adäquate Behebung der Schwachstelle ist, auf die Du dann auch selbst stolz sein kannst. Ihr arbeitet jetzt zusammen mit dem gleichen Ziel. Manchmal sieht Dein Gegenüber das vielleicht nicht so. Auch in diesen Situationen empfiehlt es sich deshalb, jemanden mit Erfahrung dabei zu haben.
5. Verlange niemals Geld.
Der Kardinalfehler ist es, nach Geld zu fragen – am besten noch für Informationen. Ein Spruch wie „Ich habe Zugriff auf eure kritischen Kundendaten. Gebt mir 1.000€ und ich erkläre euch, wie ihr das verhindert.“ Ist keine Disclosure, sondern eine Erpressung. Und auch vielleicht ironisch gemeinte Kommentare wie „ich könnte jetzt auch…“ werden gern mal falsch verstanden. Es wird Dich aber sicherlich auch nicht überraschen, dass es allgemein üblich ist, nur Dienstleistungen zu bezahlen, die auch bestellt wurden. Du wurdest im Zweifelsfall nicht bestellt, sondern hast ungefragt ein System geprüft, das Du nun verbessern möchtest. Geld ist daher ein absolutes No-Go. Wenn die Verantwortlichen zufrieden mit Deiner Zusammenarbeit waren, könnten sie sich ja unter Umständen erkenntlich zeigen. Vielleicht bieten sie Dir im Anschluss Geld oder einen Job an. Das ist aber dann ihre Sache und über so etwas wird erst nach getaner Arbeit gesprochen.
In den meisten Fällen macht ein Disclosure-Prozess Spaß, und Du lernst auch noch etwas dabei. Aber immer mal wieder bringen sich Nachwuchshacker und –hackerinnen dabei unnötig in Schwierigkeiten und wenden sich dann an uns. Mir persönlich wäre es lieber, wenn Ihr das einfach vorher macht! 😉
Wenn Du Linus kontaktieren willst, dann tu das über diese Mail-Adresse, aber bitte UNBEDINGT verschlüsselt: disclosure [at] ccc [dot] de (PGP-Key: 21BA 28CB 305E 6E04 FC84 F486 EA2F 557A B1B0 58AA). Wenn Du noch nie mit PGP gearbeitet habt, dann schau Dir doch einmal das Jugend hackt Projekt HowToPGP an.