DNS-cachevergiftiging
DNS-cachevergiftiging is de aanval waarbij slechte gegevens worden opgeslagen in de cache van een oplosser, waardoor legitieme zoekopdrachten verkeerde antwoorden retourneren zolang de cache actief blijft. De Kaminsky-aanval van 2008 brak bijna de wereldwijde DNS; de fixes die sindsdien zijn geïmplementeerd, zijn duurzaam maar niet compleet. De categorie blijft relevant.
De volledige artikeltekst vindt u hieronder in het Engels.
DNS-cachevergiftiging (ook wel DNS-spoofing genoemd) is de aanval waarbij een aanvaller vervalste DNS-gegevens in de cache van een oplosser injecteert. Volgende zoekopdrachten voor het vergiftigde record retourneren het verkeerde antwoord totdat de cache verloopt. Omdat oplossers agressief cachen voor prestaties, kan een succesvolle vergiftiging veel gebruikers urenlang beïnvloeden.
Hoe DNS-resolutie normaal werkt
Zonder de hele stroom te doorlopen (zie ons DNS-serverartikel), het belangrijkste punt: een oplosser doet een query naar een upstream-naamserver en accepteert het antwoord. DNS maakte hiervoor uitsluitend gebruik van UDP: geen handshake, geen authenticatie, alleen maar "verzend een vraag, accepteer het eerste overeenkomende antwoord".
Als een aanvaller een vervalst antwoord kan sturen voordat het legitieme antwoord arriveert, slaat de oplosser het vervalste antwoord op in de cache. Voor alle zoekopdrachten tijdens de levensduur van de cache (doorgaans minuten tot uren) retourneert de oplosser de vergiftigde gegevens.
De Kaminsky-aanval
In 2008 publiceerde Dan Kaminsky een verwoestende uitbreiding van de klassieke DNS-cachevergiftiging. De oorspronkelijke aanval was gebaseerd op het raden van een 16-bits transactie-ID – een kans van 1 op 65.536, niet geweldig. Kaminsky's twist: de aanvaller hoeft niet te wachten op legitieme vragen. Ze kunnen ze trigger triggeren door de oplosser te vragen naar een subnaam die ze beheren, en vervolgens vervalste antwoorden racen voor de autoriteitsrecords van het bovenliggende domein. Met kleine optimalisaties werd exploitatie praktisch.
De onthulling veroorzaakte een gecoördineerde patch-inspanning voor elke grote DNS-implementatie in 2008. De oplossing: randomiseer de bronpoort die de oplosser gebruikt. Gecombineerd met de transactie-ID breidt dit de entropie uit naar ~32 bits, waardoor de kans op een succesvolle vervalsing dramatisch wordt verkleind.
Hoe moderne verdedigingen eruit zien
- Source port randomization. Standaard sinds 2008. Verhoogt de entropie voldoende zodat cache-vergiftiging door gokken wordt onhaalbaar.
- DNS via HTTPS (DoH) en DNS via TLS (DoT). Cryptografisch transport elimineert de injectie-aanval op het pad volledig. De oplosser en autoriteit hebben een gecodeerd kanaal.
- DNSSEC. Cryptografische handtekeningen op DNS-records detecteren manipulatie. Vervalste reacties mislukken handtekeningverificatie. Zie ons DNSSEC-artikel.
- Bron-IP-filtering. Netwerken die vervalste bronadrespakketten laten vallen (BCP38 / bronadresvalidatie) maken de aanval moeilijker door te beperken waar vervalste antwoorden vandaan kunnen komen.
- Resolver-hardening. 0x20-codering (randomiseren van hoofdletters en kleine letters in querynamen) voegt stukjes entropie toe. EDNS0-cookies bieden extra anti-spoofing.
De SAD DNS-aanval van 2020
In 2020 publiceerden onderzoekers een nieuwe aanvalsklasse genaamd SAD DNS die poortrandomisatie in specifieke scenario's omzeilde met behulp van side-channel-informatie over de netwerkstack van de oplosser. De aanval werkt tegen grote resolvers, waaronder enkele Linux-standaardinstellingen. Linux 5.10+ heeft oplossingen; oudere systemen blijven kwetsbaar.
De categorie "DNS-vergiftiging is opgelost" komt nooit helemaal aan bod. De verdediging wordt beter; er verschijnen nieuwe zijkanalen. Moderne best practices combineren meerdere lagen.
Wat dit betekent voor eindgebruikers
Voor gewone gebruikers:
- Gebruik een grote openbare oplosser (1.1.1.1, 8.8.8.8, 9.9.9.9) — ze zijn gehard tegen de bekende aanvallen en valideren DNSSEC.
- Gebruik DoH of DoT — versleutelt de zoekopdracht en verslaat de meeste aanvallers op het pad.
- HTTPS zelf is een terugval: zelfs als DNS liegt en u naar het IP-adres van een aanvaller stuurt, komt het TLS-certificaat niet overeen en waarschuwt de browser.
De meest realistische aanvalsvector voor eindgebruikers is niet de cache vergiftiging van goed werkende oplossers; het is een 'resolver-kaping' op router- of ISP-niveau. Door uw apparaat te configureren om een bekende goede oplosser (met versleuteld transport) te gebruiken, wordt dit gat gedicht.
Wat dit betekent voor operators
Voor DNS-operators:
- Schakel DNSSEC in op uw gezaghebbende servers.
- Gebruik een oplosser die DNSSEC valideert.
- Patch snel. De oplossingen uit 2008, de SAD DNS-beperkingen en eventuele toekomstige adviezen.
- Implementeer bronadresvalidatie als u een netwerk exploiteert.
DNS-infrastructuur is veiliger dan tien jaar geleden; de bedreigingen zijn parallel geëvolueerd.
Veelgestelde vragen
- Kan ik last krijgen van cachevergiftiging?
- Indirect. Eindgebruikers gebruiken doorgaans niet de caches die vergiftigd raken. Als uw DNS-resolver is aangetast, ziet u verkeerde antwoorden voor wat er ook is vergiftigd. Het gebruik van grote, geharde solvers (1.1.1.1, 8.8.8.8) vermindert het risico aanzienlijk.
- Hoe voorkomt DNSSEC dit?
- Records ondertekend door het gezaghebbende domein kunnen cryptografisch worden geverifieerd. Een vervalst antwoord mislukt de verificatie en wordt afgewezen. DNSSEC bestaat al sinds 1997, maar de adoptie is ongelijkmatig; grote solvers valideren, kleinere vaak niet.
- Is DNS over HTTPS hetzelfde als DNSSEC?
- Nee. DNSSEC voegt handtekeningen toe aan records en verifieert de authenticiteit. DoH versleutelt het transport tussen de client en de oplosser, waardoor afluisteren of knoeien onderweg wordt voorkomen. Ze zijn complementair; je kunt een van beide of beide hebben.
- Wat is het verschil tussen cachevergiftiging en DNS-kaping?
- Cachevergiftiging injecteert slechte gegevens in de cache van een oplosser via een aanval op netwerkniveau. DNS-kaping omvat in grote lijnen het wijzigen van de oplosser zelf (routercompromis, kwaadaardige app, overname van registraraccount). Cachevergiftiging is een specifieke techniek binnen de bredere kapingscategorie.
- Zijn er bekende incidenten met cachevergiftiging?
- De massavergiftiging in Kaminsky-stijl heeft nooit plaatsgevonden omdat de patches snel genoeg werden ingezet. Er hebben zich specifieke kleinere vergiftigingen voorgedaan: een incident uit 2019 dat delen van de Chinese DNS-infrastructuur trof, heeft belangrijke Amerikaanse diensten kortstondig omgeleid naar gebruikers in China. Bij de meeste grootschalige DNS-aanvallen sinds 2008 ging het om BGP-kapingen of registrar-compromissen, in plaats van om klassieke cache-vergiftiging.