Een onderzoeksteam van de University of California Riverside maakt een grootschalig DNS spoofingrisico bekend. De onderzoekers wisten Linux resolvers te overspoelen met vervalste IP-adressen om zich als betrouwbare Domain Name Server (DNS) voor te doen en eindgebruikers naar gevaarlijke websites door te leiden. Volgens het team kan de aanval op 38 procent van miljoenen open DNS resolvers worden uitgevoerd.

Misbruik van Domain Name Servers (DNS spoofing) is zo oud als het internet. Domain Name Servers zijn verantwoordelijk voor de vertaalslag van url- naar IP-adressen. Tik je een website in een browser in, dan zorgt een zogeheten DNS Resolver dat de ingevoerde term bij een DNS wordt aangeboden. De DNS weet welk IP-adress gelijkstaat aan de url en seint de informatie terug naar de DNS Resolver. Jij belandt op de gewenste plek, zonder het IP-adres van een website zelf te hoeven weten of invoeren.

De DNS Resolver wordt doorgaans door een internetprovider aangeboden. Soms richt een organisatie de server zelf in. In beide gevallen onthoudt de resolver het IP-adres dat door een Domain Name Server wordt doorgegeven. Zo is de server in staat om volgende vragen sneller te beantwoorden – en gebruikers zodoende sneller naar de juiste website door te leiden.

Dat is, zolang het IP-adres klopt, effectief. Vanaf het moment dat de DNS een onjuist IP-adres voor de verzochte url doorgeeft, ontstaat er een probleem. De resolver onthoudt het verkeerde adres en leidt eindgebruikers in het vervolg naar de verkeerde website door. Hoewel erkende DNS’s het altijd bij het juiste eind hebben, kunnen kwaadwillenden zich voordoen als een erkende DNS om foutieve informatie in het geheugen van een resolver te planten.

Oude en nieuwe cache poisoning attacks

In 2008 kwam er een praktische methode voor het laatste aan het daglicht. Resolvers gebruikten toentertijd een transaction ID om te bevestigen of een opgevraagd IP-adres door een betrouwbare DNS werd geleverd. Als niemand over dit transaction ID beschikte, kon niemand zich voordoen als betrouwbare DNS. Tenminste, dat was het idee. Het transaction ID had 65.536 mogelijke combinaties. Securityspecialist Dan Kaminsky wist 65.536 packets met het verkeerde IP-adres naar een resolver te sturen voordat de daadwerkelijke, vertrouwde DNS met het juiste antwoord kwam. Dus leidde de resolver naar de website door. En, dankzij het geheugen, in het vervolg ook. Het bleek mogelijk om een url als ‘google.com’ naar phishingwebsites door te leiden. Kaminsky doopte de cache poisoning attack.

Niet lang daarna werd het probleem industriewijd aangepakt. Voor 2008 verliep het verkeer tussen een resolver en Domain Name Server altijd over een enkele port: nummer 53. Inmiddels kiezen de resolver en DNS per verzoek voor een willekeurige port. Het aantal mogelijke combinaties is te groot om de resolver effectief met gokjes te overspoelen. Maar slaag je erin om allereerst de port te achterhalen, en vervolgens rap op te volgen met een overspoeling van transaction ID’s, dan blijft het mogelijk om het geheugen van een resolver te beïnvloeden.

Een onderzoeksteam van de University of California Riverside flikte het. De onderzoekers voerden een succesvolle cache poisoning attack uit door een Linux kernel-functie te misbruiken. Volgens het team wijst de prestatie uit dat 38 procent van alle miljoenen, wereldwijde open resolvers risico loopt op DNS spoofing. Daaronder valt OpenDNS, een resolverdienst van Cisco. Cisco ontving het onderzoeksrapport en erkende het probleem. De organisatie dichtte het gat en stelt dat OpenDNS inmiddels weer veilig bruikbaar is.