Description de la vulnérabilité :
Par défaut, memcached est accessible dans le monde entier sur le port UDP et TCP 11211. Entre autres avantages de memcached, il est possible de s’y connecter à l’aide d’un protocole aussi simple que Telnet et de lancer une commande « stat », pour obtenir de l’information à propos du service lui-même, ou d’autres commandes pour récupérer les données mises en cache par le service. Or, selon le rôle de ce service dans votre infrastructure et selon les politiques de gestion de l’information et les normes de programmation au sein de votre organisation, il est possible que ce service mette en cache de l’information hautement confidentielle. Ce service accessible au grand public pourrait ainsi transmettre à votre insu de l’information confidentielle à une tierce partie.
Aussi, le service memcached basé sur UDP peut être exploitée pour effectuer des attaques par amplification (l'attaquant peut falsifier l'adresse IP de sa cible pour la saturer avec les réponses de votre serveur).
Par conséquent, ce service ne devrait jamais être accessible au grand public, et ce, malgré sa configuration par défaut. L’accès doit se limiter à votre infrastructure.
Versions touchées :
Toutes les versions de memcached.
Vérifier la vulnérabilité de votre serveur :
Vous pouvez tester l’adresse IP de votre serveur à l’aide de la commande (remplacez <ipaddress> par l’adresse IP de votre serveur) :
Test pour UDP:
# echo -en "\x00\x00\x00\x00\x00\x01\x00\x00stats\r\n" | nc -u <ipaddress> 11211
Exemple de résultat lorsque le service est exposé:
STAT pid 1111
STAT uptime 246345
STAT time 1526499414
STAT version 1.4.4
STAT pointer_size 64
[...]
Test pour TCP:
# nmap -Pn -p 11211 <ipaddress> --script memcached-info
Exemple de résultat lorsque le service est exposé:
PORT STATE SERVICE
11211/tcp open unknown
| memcached-info:
| Process ID 1726
| Uptime 43215969 seconds
| Server time 2015-04-01T14:09:03
| Architecture 32 bit
| Used CPU (user) 0.728889
| Used CPU (system) 1.032842
| Current connections 10
| Total connections 1678
| Maximum connections 1024
| TCP Port 11211
| UDP Port 11211
|_ Authentication no
Solution :
1) Si vous n’avez pas besoin de memcached dans votre organisation, vous devriez désactiver ce service et le désinstaller du serveur.
2) Si vous avez besoin de memcached seulement sur le serveur sur lequel le service est exécuté :
Modifiez le fichier de configuration /etc/sysconfig/memcached
Remplacez :OPTIONS=""
par
OPTIONS="-l 127.0.0.1"
et procédez à un redémarrage de votre service memcached à l’aide de la commande suivante :
service memcached restart
Assurez-vous de mettre à jour les services qui utilisent ce service memcached, afin qu’il se connectent à l’aide de l’adresse IP « 127.0.0.1 » ou « localhost », car l’adresse IP du serveur ou le service pourraient ne plus être accessibles.
3) Si vous avez besoin de memcached sur d’autres serveurs dans votre organisation :
Dans ce cas, la meilleure option consiste à bloquer l’accès à ce service au grand public, et à limiter l’accès à quelques adresses IP seulement, en utilisant un filtre de paquets (p. ex., iptables) ou un pare-feu matériel s’il y en a un de disponible.
Facultatif
Vous pouvez utiliser une configuration plus avancée pour accorder des accès à des hôtes autorisés par l’intermédiaire de l’authentification SASL :
http://www.shanison.com/2014/04/29/setup-memcached-with-sasl-authentication/
memcached avec Zimbra: https://wiki.zimbra.com/wiki/Blocking_Memcached_Attack
0 Commentaires