Übernahme von Subdomains: wenn ein vergessener CNAME Fremden gehört

Warum ein DNS-Eintrag auf einen gekündigten Cloud-Dienst Fremde unter Ihrer Domain veröffentlichen lässt, wie Sie solche Einträge finden und sie entfernen.

7 Min. Lesezeit

Vor drei Jahren hat ein Entwickler docs.ihre-domain.de auf GitHub Pages eingerichtet. Das Projekt endete, das Repository wurde gelöscht, und der Entwickler ging. Der DNS-Eintrag blieb. docs.ihre-domain.de ist noch immer ein CNAME auf ihre-firma.github.io, und GitHub Pages beantwortet ihn jetzt mit „There isn’t a GitHub Pages site here.“

Jetzt kann jeder ein Repository anlegen, Pages einschalten, docs.ihre-domain.de als eigene Domain eintragen, und GitHub liefert seine Inhalte unter Ihrer Adresse aus, mit gültigem Zertifikat. Das ist eine Übernahme einer Subdomain (Subdomain Takeover). Sie braucht kein Passwort, keine Schwachstelle in Ihrer Software und keinen Kontakt zu Ihren Servern. Sie braucht einen DNS-Eintrag, an dessen Löschung niemand gedacht hat.

Warum das funktioniert

Ein CNAME-Eintrag sagt: „Für diesen Namen schau bei jenem anderen Namen nach.“ Der andere Name gehört einem Anbieter, der die Websites vieler Kunden auf gemeinsamer Infrastruktur hostet und anhand des vom Browser angefragten Hostnamens entscheidet, welche Inhalte er ausliefert. Geht der Kunde, der diesen Hostnamen beansprucht hatte, vergisst der Anbieter die Zuordnung, aber Ihr DNS-Eintrag schickt Besucher weiterhin dorthin. Wer den Hostnamen als Nächstes beansprucht, bekommt sie.

Dasselbe Muster gibt es bei A-Einträgen auf eine IP-Adresse, die ein Cloud-Anbieter inzwischen neu vergeben hat, bei NS-Einträgen, die eine Subdomain an nicht mehr existierende Nameserver delegieren, und bei CNAMEs auf Domains, deren Registrierung abgelaufen ist. Der letzte Fall ist der schlimmste: Jeder kann die abgelaufene Domain für wenige Euro kaufen und jeden Eintrag unter Ihrer Subdomain kontrollieren.

Was ein Angreifer damit tut

Eine Seite unter Ihrer Domain erbt Ihren Ruf. Die klassischen Verwendungen sind eine Phishing-Seite („Melden Sie sich bei Ihrem Konto an“ auf support.ihre-domain.de), eine Landingpage für Schadsoftware und Suchmaschinen-Spam. Schädlicher und weniger sichtbar: Cookies. Setzt Ihre Hauptwebsite Cookies auf .ihre-domain.de statt auf www.ihre-domain.de, erhält die Seite des Angreifers sie. Vertraut Ihre Content-Security-Policy oder Ihre CORS-Konfiguration *.ihre-domain.de, ist auch die Seite des Angreifers vertrauenswürdig.

Wie solche Einträge gefunden werden

Niemand greift eine Subdomain an, von der er nichts weiß; der erste Schritt ist also für Angreifer wie Verteidiger eine Liste. Die beste öffentliche Quelle ist Certificate Transparency: Jedes seit 2018 von einer öffentlichen Stelle ausgestellte Zertifikat steht in nur erweiterbaren Logs, und die Hostnamen darauf sind durchsuchbar. Hatte docs.ihre-domain.de je ein HTTPS-Zertifikat, steht es für immer in den Logs (siehe Certificate-Transparency-Logs beobachten). Diese Liste für Ihre eigene Domain, mit der Adresse und dem Anbieter hinter jedem Namen, zeigt die kostenlose DNS- und Angriffsflächen-Karte.

Perimetry holt jeden Hostnamen Ihrer Domain aus den Logs, löst jeden auf und folgt der CNAME-Kette. Für jeden Endpunkt stellt es drei Fragen:

  1. Löst das Endziel noch auf? Zeigt ein CNAME auf einen Namen, der NXDOMAIN liefert, ist der Eintrag verwaist.
  2. Ist die Domain des Endziels überhaupt registriert? Wenn nicht, lässt sich die Subdomain durch den Kauf einer Domain übernehmen.
  3. Gehört das Ziel einem Anbieter, der bekanntermaßen eine erkennbare Seite für „nicht beansprucht“ ausliefert, und liefert er sie gerade aus?

Die dritte Frage nutzt eine Liste von Fingerabdrücken, einen je Anbieter: der Text, den GitHub Pages für einen nicht beanspruchten Namen zeigt, der Text von Heroku, Shopify, Zendesk, Azure, Fastly, Ghost, Netlify, Pantheon, Tumblr, Unbounce, Webflow, Wix und anderen, insgesamt 26. Die Liste wird gesondert unter der MIT-Lizenz veröffentlicht, damit jeder sie prüfen oder wiederverwenden kann.

Ein Eintrag, der Frage 1 oder 2 mit Ja beantwortet, wird mit hohem Schweregrad gemeldet; ein positiver Fingerabdruck ebenfalls hoch, mit Nennung des Anbieters; ein CNAME auf einen Anbieter, dessen Zustand sich nicht bestätigen lässt, mittel, mit dem Rat, nachzusehen.

Wie Sie einen Befund beheben

Wird die Subdomain nicht mehr genutzt: Löschen Sie den DNS-Eintrag. Das ist die ganze Behebung. Einen Eintrag zu entfernen ist immer gefahrlos, wenn nichts Besucher dorthin schickt; im schlimmsten Fall gibt es irgendwo einen toten Link, und ein toter Link ist besser als eine Seite unter fremder Kontrolle.

Wird die Subdomain noch gebraucht: Beanspruchen Sie die Ressource zuerst wieder beim Anbieter (legen Sie die Pages-Seite, die App, den Shop an), prüfen Sie, dass sie Ihre Inhalte ausliefert, und lassen Sie erst dann den Eintrag stehen. Lassen Sie den Eintrag nicht „bis zur Migration“ auf eine nicht beanspruchte Ressource zeigen.

Ist die Zieldomain nicht registriert: Löschen Sie den Eintrag sofort, bevor es jemand anderes bemerkt. Entscheiden Sie dann, ob es die Subdomain überhaupt geben muss.

Ist eine NS-Delegation verwaist: Entfernen Sie die NS-Einträge der Subdomain aus der übergeordneten Zone. Eine Delegation an tote Nameserver macht den ganzen Teilbaum heute unerreichbar und morgen übernehmbar.

Den nächsten Fall verhindern

  • Behandeln Sie DNS-Einträge als Teil der Außerbetriebnahme. Wird ein Dienst gekündigt, ist das Ticket erst geschlossen, wenn seine DNS-Einträge weg sind. Wer nach IT-Grundschutz arbeitet, verankert diese Regel am besten dort, wo externe Dienste und DNS ohnehin modelliert werden: in den Bausteinen OPS.2.2 „Cloud-Nutzung“, OPS.2.3 „Nutzung von Outsourcing“ und APP.3.6 „DNS-Server“.
  • Vermeiden Sie Wildcard-Einträge (*.ihre-domain.de), wenn Sie sie nicht brauchen; sie lassen jeden Namen auflösen, auch solche, die niemand angelegt hat, und verbergen verwaiste Einträge vor einfachen Prüfungen.
  • Beschränken Sie Cookies auf den genauen Host (www.ihre-domain.de), nicht auf die übergeordnete Domain.
  • Vertrauen Sie *.ihre-domain.de in CORS oder Content-Security-Policys nur, wenn jede Subdomain unter Ihrer Kontrolle steht.
  • Prüfen Sie regelmäßig. Ein Eintrag, der heute in Ordnung ist, wird an dem Tag verwaist, an dem ein Abonnement ausläuft. Der wöchentliche Bericht von Perimetry listet neue Subdomains und neue Übernahme-Befunde im Änderungsteil, sodass ein ausgelaufener Dienst innerhalb einer Woche auffällt.

So sieht der Bericht aus

Wahrscheinliche Übernahme einer Subdomain: docs.ihre-domain.de — hoch docs.ihre-domain.de ist ein CNAME auf ihre-firma.github.io, das die Seite „There isn’t a GitHub Pages site here“ von GitHub Pages ausliefert. Jeder mit einem GitHub-Konto kann diesen Hostnamen beanspruchen. Entfernen Sie den CNAME-Eintrag oder legen Sie die Pages-Seite an und tragen Sie diese Domain dort ein.

Jeder Befund nennt den Eintrag, den Anbieter, den Nachweis und die eine Maßnahme, die das Risiko beseitigt.