Risque

  • Exécution de code arbitraire ;
  • déni de service.

Systèmes affectés

Tout système offrant un service DNS à l'aide de BIND version 4 (4.9.5 à 4.9.10) ou 8 (8.1, 8.2 à 8.2.6 et 8.3.0 à 8.3.3).

Résumé

Trois failles différentes ont été identifiées dans la fonction cache de BIND. Elles nécessitent que la récursivité (``recursion'' : capacité à conduire une résolution à la place des clients) soit activée, ce qui est le cas par défaut. L'une d'entre elles permet l'exécution de code arbitraire avec les privilèges du service, les deux autres l'arrêt du service.

Description

L'avis d'ISS identifie les problèmes suivants :

  • Il existe un débordement de mémoire dans la gestion des enregistrements (``rr, resource record'') de type SIG (RFC 2535) au sein du cache. Un utilisateur mal intentionné contrôlant un DNS autorité pour une zone pourrait alors exécuter du code arbitraire.
  • En fabriquant une réponse UDP de grande taille, pour un sous-domaine inexistant ou un domaine dont les DNS autorités sont inaccessibles, il est possible de mettre fin au service.
  • Comme dans le premier cas, le contrôle d'un DNS autorité permet de fabriquer des enregistrements SIG avec une date d'expiration invalide, pour lesquels une mauvaise gestion du cache conduit à désallouer deux fois la mémoire correspondant et donc à l'arrêt du service.

Contournement provisoire

Pour les rares cas où cela est possible (caches DNS ne répondant que pour les domaines dont ils sont autorité), désactiver la récursivité :

  • BIND 4 : dans named.boot inclure options no-recursion.
  • BIND 8 : dans named.conf inclure recursion no; dans l'entrée options {}.
Dans le cas de BIND 8, il est possible de restreindre les adresses IP pour lesquelles la récursivité est autorisée : utiliser une entrée de la forme allow-recursion { adresse/masque; }; où adresse/masque correspond aux adresses pour lesquelles l'usage du cache est légitime. Sans supprimer les vulnérabilités, cette option limite les opportunités de les activer.

Solution

Documentation