Foutief geconfigureerde localhost-records leveren veiligheidsproblemen op
Verwijder alle localhost-labels uit je zones
Verwijder alle localhost-labels uit je zones
Van de 6,2 miljoen domeinnamen in de .nl-zone bevatten maar liefst 1,3 miljoen namen nog een A-record voor het localhost-label. Er was ooit een harde eis dat localhost in elke zone gedefinieerd moest zijn, maar die is allang achterhaald. De reden om hier aandacht aan te besteden is dat dergelijke records webservers waarop ook gebruikers actief zijn kwetsbaar maken voor XSS-aanvallen. Wij raden alle houders en beheerders (vaak de registrar) dan ook aan om de zones van hun domeinnamen te controleren op de aanwezigheid van localhost-labels en deze daar volledig te verwijderen.
De aanbeveling om localhost in je zone op te nemen gaat helemaal terug naar RFC 1537, bijna dertig jaar geleden geschreven door Piet Beertema (de grondlegger van het .nl-domein). In sectie 10 van deze RFC (die verder over reverse DNS gaat) staat dat alle domeinen een A-record voor localhost moeten hebben. Maar de precieze reden hiervoor kan zelfs Beertema zelf zich na al die tijd niet meer herinneren. Beheerders die de aanwijzing in de RFC letterlijk opvolgden – en dat word je geacht te doen met RFC's – voegden een localhost-label aan hun zones toe, waarmee een referentie naar 127.0.0.1 (de loopback interface) werd gecreëerd vanuit het eigen domein: localhost.example.nl. In dit bericht kun je lezen hoe een dergelijk record misbruikt kan worden voor het opzetten van een Cross-Site Scripting (XSS)-aanval. HTTP cookies (met daarin bijvoorbeeld sessie- en authenticatie-informatie) kunnen onderling worden afgeluisterd door gebruikers op hetzelfde systeem als waarop de website draait. Dat doet een gebruiker door een 'hoge' TCP-poort te openen en andere gebruikers op het systeem om te leiden naar een adres als 'http://localhost.example.nl:49152/'. Omdat de adressen www.example.nl en localhost.example.nl hetzelfde basisdomein hebben, krijgt de kwaadwillende gebruiker bij het openen van de verbinding naar localhost.example.nl (127.0.0.1) ook de cookies voor www.example.nl toegestuurd.
RFC 1537 is al in 1996 obsolete verklaard en opgevolgd door RFC 1912. Daarin staat nu duidelijk dat localhost (alleen) als een speciale hostname geconfigureerd moet worden (vanwege zijn lokale scope). Bovendien staat er een hele duidelijke punt achter de hostname, waarmee dit onmiskenbaar een volledige domeinnaam (Fully Qualified Domain Name, FQDN) betreft:
localhost. IN A 127.0.0.1
Wij hebben zelf ooit (in navolging van RFC 1537) de aanwezigheid van een localhost-label in .nl-domeinen verplicht gesteld en dit ook als harde technische eis afgedwongen voor de goedkeuring van .nl-domeinen. Hoewel we daar al lang geleden mee zijn opgehouden, hebben we onvoldoende expliciet duidelijk gemaakt dat die records uit je zones verwijderd moeten worden. Uit bovenstaande statistiek blijkt dat die verplichting uit RFC 1537 als een hardnekkig misverstand is blijven bestaan en dat een grote hoeveelheid .nl-domeinen die foutieve records nog steeds bevat. Er zijn zelfs bedrijven die de aanwezigheid van een localhost-label nu nog steeds afdwingen. Kortom, het is de hoogste tijd om hier heel duidelijk over te zijn: verwijder alle localhost-labels uit je zones!