- Es wurde ein Fall entdeckt, in dem die Weboberfläche eines NAS-Geräts für den Heimgebrauch einen nur intern verwendeten Hostnamen an einen externen Dienst übermittelt
- Ein in die NAS-Web-UI eingebundenes sentry.io-Fehlermeldeskript sendet zusammen mit einem Stack-Trace den internen Hostnamen nach außen
- Es wurde ein merkwürdiges Verhalten beobachtet, bei dem sentry.io mit diesem Hostnamen rückwirkend eine TLS-Verbindung versucht aufzubauen, jedoch keine eigentliche Anfrage sendet
- Dank zuvor eingerichteter Wildcard-DNS-Einträge konnte das Abfließen erkannt werden; bei sensiblen Hostnamen besteht ein ernstes Risiko der Informationspreisgabe
- Ein potenzielles Sicherheitsproblem ist, dass sich dieser Mechanismus missbrauchen lässt, um DNS-Scans gegen beliebige Hosts auszulösen
NAS-Installation und Konfiguration des internen Hostnamens
- Ein NAS-Gerät wurde gekauft, mit Laufwerken bestückt und mit dem Heimnetz verbunden; betrieben wurde es im HTTPS-Modus
- Für eine Subzone einer bedeutungslosen Domain im öffentlichen Internet (z. B.
*.nothing-special.whatever.example.com) wurde ein Wildcard-TLS-Zertifikat installiert
- In der Datei
/etc/hosts wurde ein nur lokaler Eintrag wie 172.16.12.34 nas.nothing-special.whatever.example.com hinzugefügt, um im Browser darauf zuzugreifen
Unerwartete Zugriffe von außen entdeckt
- Einige Tage nach der NAS-Installation begannen Anfragen von außen ("outside world") mit genau diesem Hostnamen einzugehen
- Dieser Hostname war ein vollständig nur intern genutzter Name, der ausschließlich in der
/etc/hosts-Datei des Laptops existierte
- Da im Voraus ein Wildcard-DNS-Eintrag für
*.nothing-special.whatever.example.com eingerichtet worden war, der auf eine selbst verwaltete Maschine zeigte, konnte das Abfließen erkannt werden
- Jedes Mal, wenn das NAS geladen wurde, versuchte ein GCP-Host, unter Angabe dieses internen Hostnamens als SNI eine Verbindung aufzubauen
Ursache des Abflusses: sentry.io-Fehlermeldung
- Die Weboberfläche des NAS enthält eine Phone-Home-Funktion, die unter anderem Stack-Traces an sentry.io sendet
- Wenn der Browser sentry.io aufruft, übermittelt er dabei auch den Hostnamen, der für das interne Speichergerät verwendet wird
- Es wurde bestätigt, dass sentry.io mit diesem Hostnamen rückwärts eine TLS-Verbindung aufbaut, jedoch überhaupt keine echte HTTP-Anfrage sendet
Sicherheitsimplikationen und Gegenmaßnahmen
- Wenn der Hostname sensible Informationen enthält (z. B.
mycorp-and-othercorp-planned-merger-storage), besteht das Risiko einer schwerwiegenden Informationspreisgabe
- Über diesen sentry-Meldemechanismus lässt sich ein DNS-Scan gegen beliebige externe Hosts auslösen (die konkrete Methode bleibt den Lesern überlassen)
- Als Gegenmaßnahme wurde Little Snitch aktiviert, um die gesamte betroffene Domain für alle Apps zu blockieren
1 Kommentare
Hacker-News-Kommentare
Die Leute scheinen das misszuverstehen. Das ist kein Problem mit CT-Logs, sondern hängt mit Wildcard-Zertifikaten zusammen
Sentry sammelt clientseitige Traces, extrahiert dabei den Hostnamen, an den die Anfrage geschickt wurde, und wurde dann abgewiesen, als es diesen erneut pollen wollte
Hostnamen sind grundsätzlich keine privaten Informationen
Sie werden über verschiedene Wege nach außen sichtbar, etwa durch DNS-Anfragen oder TLS-Zertifikate
Wenn man private Dienste verbergen will, ist es besser, das Geheimnis nicht in den Hostnamen, sondern in den URL-Pfad zu legen
Zum Beispiel
fileservice.example.com/my-hidden-service-007-abc123/; das wird nur über HTTPS übertragen und dadurch deutlich seltener offengelegtIch habe mich gefragt, ob „clown GCP Host“ ein technischer Begriff ist. Wie sich herausstellte, hat der Autor damit Cloud satirisch verfremdet
Kern des Problems ist, dass das Webinterface des NAS Logs an Sentry schickt und dabei interne Hostnamen enthält
In so einem Fall würde ich vermutlich auf ein vertrauenswürdiges Open-Source-OS wechseln oder Sentry-Aufrufe per DNS-Blockierung mit etwas wie PiHole unterbinden
Jemand erklärte, er blockiere ausgehenden Traffic vollständig mit lokalem DNS und einem TLS-Proxy
Wegen solcher Fälle betrachte ich uBlock Origin als Mindeststandard für Websicherheit
Dass die meisten Webseiten massenhaft Skripte von Dritten laden und Daten nach außen lecken, ist ein zu großes Problem
Es ist keine grundlegende Lösung, aber das Beste, was wir sofort tun können
Um so etwas zu verhindern, sollte man einen Nginx-Reverse-Proxy davorschalten und CSP-Header injizieren
Damit verhindert man zwar nicht, dass das NAS selbst Anfragen nach außen sendet, aber man kann blockieren, dass der Browser das stellvertretend tut
Zum Beispiel lassen sich auch Steam-Avatar-Anfragen (
https://avatars.steamstatic.com/HASH_medium.jpg) per CSP-Richtlinie blockierenFalls nötig, kann man nur bestimmte Teile freigeben. Außerdem sollte man Referrer-Policy: no-referrer hinzufügen, damit Hostnamen nicht in externen Logs landen
Ich habe ein Synology-NAS gekauft und es mehrfach bereut
Außer Community-Software kann man damit kaum etwas machen
Selbst SSL mit Let's Encrypt einzurichten ist kompliziert, und wegen der nicht standardkonformen Pfade ist es schwer, die richtige Konfigurationsstelle zu finden
Es gibt viele Beschwerden: alte rsync-Versionen, fehlende Standard-Utilities und mehr. Im Nachhinein hätte ich lieber ein Linux- oder BSD-basiertes NAS genommen
Ich habe kürzlich Sentry eingerichtet, und dieses System hat eine Funktion, die automatisch Uptime-Monitoring einrichten will
Wenn es einen Host erkennt, schickt es regelmäßig Pings dorthin, und wenn dieser einige Tage stabil antwortet, erscheint eine Meldung wie: „Möchtest du für diesen Host Uptime-Monitoring einrichten?“
Ich blockiere persönlich sämtliche Sentry-bezogenen Domains
Das ist keine allgemeine Lösung, aber in meiner Umgebung ist das die beste Option
Bei Reverse-DNS-Servern sieht man oft Versuche, sogar interne Netzwerkadressen (ULA, RFC1918) aufzulösen
Wenn man solche Daten mit anderen Informationen kombiniert, kann man Rückschlüsse auf den internen Zustand ziehen
Es hieß auch: „Beim Sammeln im Darknet wurde sogar schon UDP-Audio erfasst“
Früher habe ich bei Heroku ein ähnliches Phänomen untersucht
Wenn man eine neue App anlegt, bekommt sie eine zufällige Subdomain, und selbst ohne DNS-Abfrage treffen sofort Anfragen von Schwachstellen-Scannern ein
Auf Nachfrage bei Heroku hieß es, das liege daran, dass die URL der neuen App in Certificate-Transparency-(CT-)Logs veröffentlicht wird
Dazu wurde auch der Link How Certificate Transparency works geteilt