Manchmal ist die Idee so einfach und überzeugend, dass man sich fragt, wieso das nicht schon seit Jahrzehnten üblich ist. Wovon ist die Rede? Von der security.txt
.
Eine einfache Textdatei hilft dabei, Sicherheitslücken in der eigenen Website oder generell in der eigenen Organisation schnell zu stopfen. Dazu gibt man an einem festgelegten Ort in einem festgelegten Format an, an wen sich beispielsweise Sicherheitsforschende wenden können, wenn sie auf eine potentielle Lücke gestoßen sind.
Gerade in einer großen Organisation kann es nicht ganz einfach sein, den richtigen Ansprechpartner zu finden. Oft gibt es, beispielsweise auf einer Kontakt-Unterseite der Website, eine zentrale Anlaufstelle. Die ist aber im Zweifel für alles und jedes zuständig. Wenn man dort eine potentielle Sicherheitslücke meldet, muss man darauf hoffen, dass die Nachricht innerhalb der Organisation an die richtige Stelle weitergeleitet wird. Das kann schon mal ein paar Anläufe brauchen, oder die Meldung versandet komplett. Und in der Zwischenzeit steht die Lücke weiterhin offen und kann potentiell ausgenutzt werden.
Die security.txt, seit 2022 standardisiert in RFC 9116, schafft hier Abhilfe. Das ist, wie bereits erwähnt, eine einfache Textdatei an einem festgelegten Ort in einem festgelegten Format, die die passenden Kontaktinformationen enthält. Dabei sollen die Informationen sowohl für Menschen als auch für Maschinen einfach zu verstehen sein.
Die Plaintext-Datei ist bevorzugt erreichbar unter /.well-known/security.txt
, alternativ im Hauptverzeichnis der Website unter /security.txt
. Die Datei muss mit HTTPS erreichbar sein. Jede Zeile in der Datei beginnt mit einer Direktive, gefolgt von einem Doppelpunkt und dem dazugehörigen Wert. Dabei sind die Direktiven Contact
und Expires
vorgeschrieben, weitere Direktiven sind optional.
Contact
liefert die zentrale Information, nämlich die Kontaktmöglichkeit. Das kann eine Mailadresse sein, eine Telefonnummer oder auch eine URL, unter der man die Informationen findet. Die Direktive kann mehrfach angegeben werden, muss aber mindestens einmal vorhanden sein. Dabei stellt die oberste Zeile die präferierte Möglichkeit zur Kontaktaufnahme dar, die folgende Zeile die erste Alternative und so fort. Wenn die Kontaktmöglichkeit ein Link ist, muss er mit https://
beginnen. Eine Telefonnnummer beginnt mit tel:
, eine Mailadresse mit mailto:
. Ein beispielhafter Kontaktblock kann also etwa so aussehen:
Contact: mailto:security@meine-website.tld
Contact: tel:+49 00 12345678
Contact: https://meine-website.tld/security
In der Direktive Expires
gibt man an, bis zu welchem Zeitpunkt die Informationen in der security.txt
als aktuell und gültig betrachtet werden können. Nach diesem Zeitpunkt sollten Hinweisgeber davon ausgehen, dass die Informationen veraltet sind. Es ist empfehlenswert, den Zeitpunkt nicht zu weit in die Zukunft zu legen: Länger als ein Jahr sollte es nicht sein, so der Standard. Entsprechend muss man die security.txt
in regelmäßigen Abständen überprüfen und wo nötig aktualisieren. Dann kann auch der Zeitpunkt in Expires
wieder “weitergeschaltet” werden. Angegeben wird das “Ablaufdatum” nach ISO 8601-1 / ISO 8601-2:
Expires: 2025-01-01T00:00:00z
Eine gültige security.txt
kann insgesamt also beispielsweise so aussehen:
Contact: mailto:security@meine-website.tld
Contact: tel:+49 00 12345678
Contact: https://meine-website.tld/security
Expires: 2025-01-01T00:00:00z
Zusätzlich dazu gibt es noch eine Reihe von Direktiven, mit denen man weitere Angaben machen kann. Dazu zählen etwa
Encryption
verweist auf einen kryptographischen Schlüssel (public key), mit dem eine verschlüsselte Kommunikation möglich ist. Dabei wird nicht der Schlüssel selbst in dersecurity.txt
vermerkt, sondern beispielsweise eine URL, unter der der Schlüssel erreichbar ist, ein Verweis auf einen OPENPGPKEY-Eintrag im DNS oder der Fingerabdruck des Schlüssels.Preferred-Languages
liefert die Information, in welchen Sprachen Informationen über eine potentielle Sicherheitslücke am besten übermittelt werden. Dabei gibt man die Sprachen als kommagetrennte Liste von Sprachkürzeln nach RFC 5646 an. Ist diese Direktive nicht angegeben, fordert der Standard Hinweisgeber dazu auf, von Englisch als gewünschter Sprache auszugehen.- In
Canonical
steht die Information, wo diesecurity.txt
zu finden ist. Das mag auf den ersten Blick überflüssig erscheinen, schließlich ist der Speicherort ja gerade festgelegt. Allerdings könnte theoretisch ein Angreifer eine gefälschtesecurity.txt
in eine Website einschleusen mit falschen Angaben. Entsprechend fordert der Standard Hinweisgeber dazu auf, den Angaben nur dann zu vertrauen, wenn diesecurity.txt
auch unter der URL gefunden wurde, die inCanonical
vermerkt ist. - Mit der Direktive
Policy
kann man einen Link zu einer URL setzen, unter der Sicherheitsforschende mehr zum Umgang der Organisation mit Sicherheitsproblemen erfahren können. Wie ist das Verfahren für solche Meldungen, was gilt es zu beachten und so weiter. - Die Direktive
Acknowledgements
liefert einen Link zu einer URL, unter der die Organisation Hinweisgeber aus der Vergangenheit nennt und würdigt. - Unter
Hiring
kann man einen Link auf eine URL angeben, wo es Information zu offenen Positionen in der Organisation im Sicherheitsbereich gibt. CSAF
bezieht sich auf das Common Security Advisory Framework. Das ist ein Standard für die Formulierung und Weitergabe von Security Advisories. Damit soll es beispielsweise erleichtert werden, Informationen über potentielle Lücken und deren Behebung automatisiert zu empfangen, zu verarbeiten und weiterzuleiten. Im Kontext dersecurity.txt
kann diese Direktive einen Link auf den sogenannten CSAF-Provider enthalten.
Idealerweise wird die gesamte security.txt
mittels einer OpenPGP Klartext-Signatur noch digital signiert. Das gibt ein zusätzliches Maß an Vertrauen, dass die Angaben in der Datei tatsächlich echt und verlässlich sind.
Auch wenn der Standard noch recht jung ist, verwenden bereits eine ganze Reihe von Organisationen eine security.txt
. Dazu gehört Google, Facebook, GitHub, aber auch zum Beispiel die Bundesregierung, das zentrale Portal für die deutsche Verwaltung, Volkswagen, die Deutsche Bahn, Rewe oder die schweizerische Bundesregierung. Und auch diese kleine Website ist dabei.