Javascript Injection und Subdomain Takeover

Hanno Böck - hboeck.de - @hanno

Third-party Javascript

<script src="https://somehost.example.org/fancycode.js">
</script>
<script src="https://somehost.example.org/fancycode.js">
</script>

Wer betreibt eigentlich somehost.example.org und wer ist dafür verantwortlich?

Idee: Webseiten scannen und nach Referenzen suchen die sich nicht laden lassen

Flickr hatte (2017) Code von Yahoo Web Analytics eingebunden

Yahoo Web Analytics wurde 2012 abgeschaltet

In dem Fall harmlos: Die Domain lieferte zwar nichts mehr aus, gehörte aber immer noch zu Yahoo

piwiklionshare
Nicht registrierte Azure-Subdomain
Azure free account

Mehrere Duzend Seiten hatten diesen Code eingebunden, überwiegend US-Lokalzeitungen

Ich habe die Betreiber informiert, die meisten haben zwar nicht geantwortet, aber den Code entfernt

Eine Seite - der Saline Courier - hat auf mehrere Kontaktversuche an alle erreichbaren Kontaktadressen nicht reagiert

Was tun?

Auf meine Mail-Kontaktversuche reagierte niemand, aber sie laden Javascript-Code von einem Host der jetzt mir gehört...

Saline Courier

Das ist nicht nur ein theoretisches Risiko

Equifax’s Latest Security Foil: A Defunct Web Service

Wall Street Journal, 2017-10-13

Equifax nutzte einen Service namens Fireclick (netflame.cc)

Fireclick wurde 2015 abgeschaltet

2017: Der Javascript-Code von Fireclick liefert Malware aus

Related: Subdomain Takeover

Bei vielen Cloud-Services ist es üblich, dass man dort eine Subdomain registriert und einen eigenen Hostnamen via DNS-CNAME darauf verweisen lässt
project123.mycompany.com CNAME project123.azurewebsites.net
Was passiert wenn man das Projekt beendet und den zugehörigen Cloud-Account kündigt?
...und den CNAME nicht löscht?
Jemand anderes kann den entsprechenden Host beim Cloudprovider registrieren und kontrolliert anschließend den Inhalt der Subdomain
Das funktioniert in ähnlicher Weise auch bei Nameserver-Delegations

Golem.de: Microsoft verliert Kontrolle über Windows-Kacheln (17.04.2019)

Wenn man externe Dinge in die eigene Webseite einbindet oder Infrastruktur auslagert sollte man sich darüber im klaren sein dass man Kontrolle abgibt

Als Minimum sollte man einen Überblick haben welche externen Services man nutzt und wer dafür verantwortlich ist