Contexte de l'incident
Le 14 mai 2003, le serveur public de temps de l'Université du Wisconsin (UW‑Madison) a vu son trafic entrant passer de 40 000 paquets/s à plus de 250 000 paquets/s, soit plus de 150 Mbit/s, en moins de deux heures. Les paquets, de 76 octets, étaient adressés au port UDP 123 (NTP) mais provenaient tous du même port source 23457, ce qui a permis aux opérateurs de bloquer rapidement le flux en filtrant le trafic src port 23457 → dst port 123. L’analyse initiale a considéré l’événement comme une attaque DDoS classique, mais la persistance du trafic pendant plusieurs semaines a révélé un problème de conception dans les routeurs Netgear.
Mécanisme du client SNTP défectueux
Le client SNTP intégré aux firmwares Netgear utilise une implémentation simplifiée du protocole NTP : il envoie un paquet UDP de 48 octets (plus l’en‑tête IP/UDP) à intervalles fixes, attend une réponse et, en l’absence de validation stricte du champ « Originate Timestamp », considère tout paquet reçu comme une nouvelle requête à traiter. Un défaut de gestion du timer de retransmission a conduit le client à réémettre la requête dès la réception d’une réponse, même si la réponse était déjà traitée. Ainsi, chaque routeur générait une boucle de requêtes / réponses à une cadence de plusieurs dizaines de requêtes par seconde, multipliée par le nombre de routeurs déployés dans le réseau WiscNet. Le choix d’un port source fixe (23457) simplifie le suivi du trafic mais crée un point de filtrage unique, exploitable par les opérateurs mais révélateur d’une mauvaise pratique de randomisation des ports source.
# Exemple de paquet SNTP (hex)45 00 00 4C 1C 46 40 00 40 11 7A C0 C0 A8 01 01
C0 A8 01 FE 00 7B 00 7B 00 38 00 00 1B 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00Ce dump montre l’en‑tête IP (45 00…) suivi du port source 0x7B (123) et du port destination 0x7B, confirmant l’usage du même port source pour toutes les requêtes.
Analyse de l'impact et des mesures d'atténuation
Le flood a saturé les liens d’accès du campus, provoquant des pertes de paquets sur les services critiques et déclenchant des alarmes de dépassement de capacité sur les routeurs WiscNet. La mesure d’atténuation immédiate a consisté à bloquer le trafic src port 23457 → dst port 123 au niveau des routeurs d’en‑bordement, réduisant le débit à son niveau habituel. À plus long terme, Netgear a publié un correctif « instant code » qui randomise le port source et introduit un délai de back‑off exponentiel après chaque réponse, limitant le taux de requêtes à moins de 1 kpps par appareil. L’université a également envisagé un service anycast de temps, redistribuant les requêtes vers plusieurs serveurs afin de diluer le trafic. Enfin, la communauté Internet a été invitée à mettre à jour les listes de bonnes pratiques NTP, notamment l’obligation de randomiser le port source et de vérifier le champ Originate Timestamp pour éviter les boucles de requêtes.