Une faille découverte dans Linux permet d’attaquer les serveurs DNS et potentiellement de rediriger des millions d’utilisateurs à la fois vers de faux sites. Jusqu’à 38 % des serveurs DNS pourraient être concernés, y compris des services comme OpenDNS.
au sommaire
Une vieille faille d'empoisonnement du cacheempoisonnement du cache DNS refait surface plus de dix ans plus tard. Présentée à la conférence de cybersécurité ACM CCS 2021, la faille décrite par des chercheurs de l'université de Californie pourrait concerner jusqu'à 38 % des serveurs DNS.
Pour comprendre, il faut remonter à la découverte initiale d'une faille dans les serveurs DNS en 2008. Ces serveurs contiennent la liste complète de tous les noms de domaine et l'adresse IP du site Web correspondant. Lorsque vous saisissez une adresse, votre ordinateur se connecte à un serveur DNS, typiquement celui de votre fournisseur d'accès, afin d'obtenir l'adresse IP. À l'époque, les chercheurs avaient découvert qu'il était possible d'empoisonner le cache des serveurs DNS en leur envoyant une fausse mise à jour grâce à laquelle des sites de confiance, par exemple googlegoogle.com, renvoyaient alors vers de faux sites.
Une attaque rendue possible par la force brute
À cette époque, la mise à jour du cache DNS des serveurs était uniquement protégée par un identifiant de transaction de 16 bits, soit 65.536 possibilités. Il était alors possible d'attaquer un serveur par la force bruteforce brute, en tentant tous les identifiants, et ainsi rediriger tous les ordinateurs qui en dépendent. La faille a été résolue en utilisant un port UDP aléatoire pour communiquer, multipliant les possibilités par 16 bits, soit environ quatre milliards de combinaisons possibles.
“Les chercheurs ont montré qu’il était possible d’utiliser un message ICMP pour déterminer le bon numéro de port UDP”
Toutefois, une nouvelle faille découverte dans LinuxLinux remet en question cette sécurité. Elle est basée sur des messages d'erreur, appelés ICMP, utilisés par les serveurs DNS pour communiquer. Les chercheurs ont montré qu'il était possible d'utiliser un message ICMP pour déterminer le bon numéro de port UDP. Une attaque aurait alors uniquement besoin de trouver l'identifiant de transaction par force brute, comme lors de la découverte de la faille originale en 2008.
Tous les serveurs DNS basés sur Linux sont potentiellement concernés
La faille affecte les serveurs Linux, soit environ 38 % des serveurs selon les chercheurs. Elle fonctionne grâce à l'envoi d'un message d'erreur bien spécifique (de type ICMP redirect et ICMP frag needed)). Comme il s'agit d'un message d'erreur, le serveur ne donne aucune réponse et il est théoriquement impossible de savoir s'il a été envoyé sur le bon port. Toutefois, sur Linux, ce message peut modifier la taille maximale des paquetspaquets des serveurs (MTU), qui peut ensuite être mesurée avec une simple commande « pingping ». Il suffit donc de répéter l'opération en changeant de ports jusqu'à pouvoir découvrir le bon, soit un maximum de 65.536 fois. Il devient alors possible de lancer une attaque de force brute directe en utilisant la méthode découverte en 2008.
Selon les chercheurs, les serveurs Windows et FreeBSD ne sont pas concernés par cette faille. Par conséquent, les serveurs macOS ne devraient pas être vulnérables car ils utilisent la pile de protocolesprotocoles réseau de FreeBSD. Les chercheurs suggèrent trois solutions : utiliser l'option de socket IP_PMTUDISC_OMIT pour refuser les messages de type ICMP frag needed, de rendre la structure du cache aléatoire, ou tout simplement de refuser les messages de type ICMP redirect, qui sont rarement utilisés. Selon le site Ars Technica, l'entreprise Cisco, propriétaire des serveurs OpenDNS cités comme étant vulnérables par les chercheurs, a indiqué avoir déjà corrigé la faille.
Ce qu’il faut
retenir
- La faille d’empoisonnement du cache DNS de 2008 refait surface.
- L’empoisonnement du cache DNS permet de remplacer des sites légitimes par des faux.
- Tous les serveurs DNS sur Linux sont potentiellement concernés.