
CVE-2017-8779 aka RPCBomb
rpcbind jusqu'à 0.2.4, LIBTIRPC jusqu'à 1.0.1 et 1.0.2-rc à 1.0.2-rc3, et NTIRPC jusqu'à 1.4.3 ne prennent pas en compte la taille maximale des données RPC lors de l'allocation mémoire pour les chaînes XDR, ce qui permet à un attaquant distant de provoquer un déni de service (consommation mémoire sans libération ultérieure) via un paquet UDP malveillant sur le port 111, connu sous le nom de rpcbomb.
Lien CVE https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-8779
git clone https://github.com/drbothen/GO-RPCBOMB.git
go build RPCBomb.go
Le binaire RPCBomb.exe compilé dispose de plusieurs options qui permettent à l'attaquant d'adapter l'attaque selon ses besoins.
Ceci est un indicateur OBLIGATOIRE. Définit le système cible. Par défaut : OBLIGATOIRE
Ceci n'est PAS un indicateur obligatoire. Définit le nombre d'octets à tenter d'allouer. Par défaut : 5999999999
Ceci n'est PAS un indicateur obligatoire. Il s'agit du port sur lequel RPC Bind écoute. Par défaut : port 111
Ceci n'est PAS un indicateur obligatoire. Définit le nombre de paquets UDP à envoyer, ou le nombre de fois pour demander l'allocation des octets. Par défaut : 1
Ceci n'est PAS un indicateur obligatoire. Définit le nombre de threads enfants à utiliser pour envoyer des paquets UDP en concurrence. Par défaut : 1
Le crédit revient à Guido Vranken qui a signalé la découverte et écrit l'exemple de code d'exploitation Ruby sur lequel cet exploit Golang est basé, disponible sur https://github.com/guidovranken/rpcbomb.
Le rapport original se trouve à https://guidovranken.wordpress.com/2017/05/03/rpcbomb-remote-rpcbind-denial-of-service-patches/