Een groep onderzoekers van de Universiteit van Californiƫ in Riverside heeft een nieuwe variant van de SAD DNS-aanval (CVE-2021-20322) gepubliceerd, die werkt ondanks de beveiliging die vorig jaar is toegevoegd om de kwetsbaarheid CVE-2020-25705 te blokkeren. De nieuwe methode is in wezen vergelijkbaar met de kwetsbaarheid van vorig jaar en verschilt alleen in het gebruik van een ander type ICMP-pakket om actieve UDP-poorten te controleren. De voorgestelde aanval stelt in staat om valse gegevens in de cache van de DNS-server in te voegen, wat kan worden gebruikt om het IP-adres van willekeurige domeinen in de cache te vervangen en verzoeken naar het domein naar de server van de aanvaller te leiden.
De voorgestelde methode is alleen werkzaam in de netwerkstack van Linux vanwege de binding aan een specifiek kenmerk van de manier waarop het ICMP-pakketverwerkingsmechanisme in Linux werkt, dat een bron van datalekkage is, wat het identificeren van het gebruikte UDP-poortnummer vergemakkelijkt. server voor het verzenden van een externe aanvraag. Wijzigingen die datalekken blokkeren, zijn eind augustus in de Linux-kernel opgenomen (de correctie maakt deel uit van kernelversie 5.15 en de september-updates van de LTS-kernelbranches). De correctie bestaat uit de overstap naar het gebruik van het SipHash-hash-algoritme in plaats van Jenkins Hash in netwerkketens. De status van het verhelpen van de kwetsbaarheid in distributies kan worden beoordeeld op de volgende pagina's: Debian, RHEL, Fedora, SUSE, Ubuntu.
Volgens de onderzoekers die het probleem hebben ontdekt, is ongeveer 38% van de open resolvers die online zijn kwetsbaar, inclusief populaire DNS-diensten zoals OpenDNS en Quad9 (9.9.9.9). Wat betreft de serversoftware kan de aanval worden uitgevoerd met behulp van pakketten zoals BIND, Unbound en dnsmasq op Linux-servers. Het probleem doet zich niet voor op DNS-servers die draaien op Windows- en BSD-systemen. Voor een succesvolle aanval is IP-spoofing vereist, d.w.z. de provider van de aanvaller moet pakketten met een vals bron-IP-adres niet blokkeren.
Laten we herinneren dat de SAD DNS-aanval het mogelijk maakt om de beveiliging te omzeilen die aan DNS-servers is toegevoegd om de klassieke methode voor DNS-cache poisoning, voorgesteld door Dan Kaminsky in 2008, te blokkeren. De methode van Kaminsky manipuleert met een onbeduidende grootte van het veld voor het identificatienummer van het DNS-verzoek, dat slechts 16 bits bedraagt. Om het juiste identificatienummer van de DNS-transactie te vinden dat nodig is voor het vervalsen van de hostnaam, is het voldoende om ongeveer 7000 verzoeken te versturen en ongeveer 140.000 valse antwoorden te simuleren. De aanval bestaat uit het versturen van een groot aantal pakketten met valse bindings naar IP en verschillende identificatienummers van de DNS-transactie naar de DNS-resolver. Om te voorkomen dat de eerste reactie wordt gecachet, wordt in elk valse antwoord een iets gewijzigde domeinnaam opgegeven (1.example.com, 2.example.com, 3.example.com, enzovoorts).
Om zich tegen dit type aanval te beschermen, hebben fabrikanten van DNS-servers willekeurige toewijzing van nummers van de brons-netwerkpoorten geĆÆmplementeerd, van waaruit de resolververzoeken worden verzonden, wat het probleem van de te kleine identificators heeft gecompenseerd. Na de implementatie van deze verdediging was het naast het vinden van een 16-bits identificator ook noodzakelijk om een van de 64.000 poorten te vinden om een vals antwoord te verzenden, wat het aantal mogelijkheden voor het raden verhoogde tot 2^32.
De SAD DNS-methode vereenvoudigt het bepalen van het netwerkpoortnummer radicaal en reduceert de aanval tot de klassieke methode van Kaminsky. De aanvaller kan toegang krijgen tot ongebruikte en actieve UDP-poorten door gebruik te maken van het lekken van gegevens over de activiteit van netwerkpoorten bij het verwerken van antwoord-ICMP-pakketten. De methode maakt het mogelijk om het aantal mogelijkheden voor brute-force op 4 ordes van grootte te verminderen ā 2^16+2^16 in plaats van 2^32 (131_072 in plaats van 4_294_967_296). Het lekken van gegevens die het mogelijk maken om snel actieve UDP-poorten te identificeren, is veroorzaakt door een bug in de code die ICMP-pakketten met fragmentatieverzoeken (ICMP Fragmentation Needed flag) of omleiding (ICMP Redirect flag) verwerkt. Het verzenden van dergelijke pakketten verandert de status van de cache in de netwerkstack, waardoor op basis van de serverreactie kan worden bepaald welke UDP-poorten actief zijn en welke niet.
Aanvalsscenario: Wanneer een DNS-resolver probeert een domeinnaam te bepalen, stuurt deze een UDP-verzoek naar de DNS-server die het domein bedient. Op het moment dat de resolver op een antwoord wacht, kan de aanvaller snel het nummer van de oorspronkelijke poort bepalen die is gebruikt voor het verzenden van het verzoek en een vervalst antwoord naar die poort sturen, zich voordoend als de DNS-server die het domein bedient, met behulp van spoofing. IP-adressenDe DNS-resolver plaatst de in het vervalste antwoord verstrekte gegevens in de cache en zal enige tijd voor alle andere DNS-verzoeken naar de domeinnaam het vervalste IP-adres van de aanvaller retourneren.
Bron: opennet.ru
