Carte des serveurs Memcached vulnérables aux faux paquets IP
Carte des serveurs Memcached vulnérables aux faux paquets IP fin février 2017

Une nouvelle vague d’attaques distribuées par déni de service exploite les faiblesses du protocole Memcached

Attaques amplifiées par Memcached

Une attaque distribuée par déni de service (DDos) consiste à rendre un ou plusieurs services indisponibles, en faisant ployer leurs serveurs ou leurs infrastructures de réseau en les inondant d’une multitude de paquets IP simultanés, en, provenance d’un grand nombre d’hôtes.

Cloudflare, l’un des plus grands réseaux de distribution au monde, vient d’en découvrir un nouveau genre : une attaque par paquets UDP de Memcached, un système de gestion de mémoire cache distribuée.

Une organisation malveillante envoie de faux paquets UDP, port 11211, à des serveurs Memcached, qui répondent en renvoyant des paquets de taille importante à une victime.

Par malheur, ce protocole est un vecteur d’amplification DDoS presque idéal : aucun contrôle des paquets entrants n’est effectué, et la réponse est envoyée avec célérité.

Comme il est possible, à l’aide d’un faux paquet de petite taille, de faire émettre des paquets réponses de grande taille (jusqu’à des paquets d’une taille de 1 mégaoctet), il s’agit d’un vecteur d’amplification sans précédent.

Un attaquant disposant d’une bande passante d’un Gbps peut sans problème lancer une attaque amplifiée de plusieurs centaines de gigabits par seconde.

Cloudflare a ainsi protégé des services contre des attaques de plus de 260 Gbps, avec de faux paquets de 15 octets déclenchant des réponses de 134 kilo-octets, soit une amplification par 10 000 !

La plupart des serveurs Memcached vulnérables se situent aux États-Unis (AS14061 – Digital Ocean), en Europe (AS16276 – OVH) et en Asie (AS7684 – Sakura).

 

Neutraliser le vecteur d’amplification

Pour neutraliser ce vecteur d’amplification, les utilisateurs de Memcached sont activés à désactiver le support UDP : au démarrage de memcached, on peut ajouter l’option

 --listen 127.0.0.1

pour n’écouter que sur l’hôte local, ou

 -u 0

pour désactiver UDP complètement.

Si la commande suivante renvoie une réponse autre que nulle, le serveur est vulnérable :

$ echo -en "\x00\x00\x00\x00\x00\x01\x00\x00stats\r\n" | nc -q1 -u 127.0.0.1 11211

Les administrateurs systèmes sont invités à configurer un pare-feu entre les serveurs memcached et Internet.