- 2018 年に VPNFilter マルウェアが蔓延していることが確認されて以来、Cisco Talos の研究者は SOHO(小規模オフィスやホームオフィス)向けルータと産業用ルータの脆弱性を調査してきました。
- この調査はベンダー各社と協力して行い、確認された脆弱性について報告し、緩和策を講じました。複数のルータで脆弱性が見つかり、それらを識別する計 289 件の CVE を対象に、全部で 141 件のアドバイザリを提供しています。
- ここ数年の間に Talos の研究者が発見した主要な問題の一部を取り上げ、説明しています。たとえば、攻撃者がほぼ直接アクセスすることのできる脆弱性や、デバイスへのアクセスに必要な高度な権限を取得するために攻撃者が組み合わせて使用する可能性のある脆弱性です。
- この記事で取り上げている脆弱性については、エクスプロイト試行を検出することのできる Snort ルールをリリースしています。
ほぼすべての家庭と中小企業で使用されている小規模オフィスやホームオフィス向けの SOHO ルータと産業用の小規模ルータは、攻撃者に狙われやすい標的です。ルータがネットワークで果たす特権的役割を考えると、攻撃者にとってルータは格好の標的だと言えます。つまり、そのセキュリティ態勢は何にも増して重要なのです。ところが、脆弱性を軽減するための高度なセキュリティチームを配置することなくルータが導入されることも少なくありません。通常、ルータはインターネットに直接接続され、ローカルのネットワークトラフィックはすべてルータを通過します。
2018 年、Talos は SOHO のネットワーク機器を狙った VPNFilter マルウェアを発見し、記事を公開しました。同マルウェアには、標的としたデバイスを完全に侵害する機能や、デバイスの内容を完全に消去する機能がありました。それ以来、SOHO ルータを標的とする高度な技術力を持つ攻撃者について、数々の報告がなされています。Talos は先ごろ、ネットワークインフラを標的とした国家支援型攻撃の増加に対する懸念についてブログを公開しました。Microsoft 社は CyberWarCon 2022 において、国家が支援する攻撃者が SOHO ルータを使用して活動を見えにくくしている現状を説明しました。一方 Lumen 社が最近公開した記事によると、サイバー犯罪組織も SOHO ルータを標的にして攻撃活動に役立てています。
VPNFilter の発見後、Talos の脆弱性検出/調査チーム(サードパーティベンダーと協力してさまざまなソフトウェアとハードウェアの脆弱性を開示し、パッチを適用する世界クラスの研究者チーム)は SOHO ルータと産業用ルータを優先して調査することにしました。ルータの脆弱性を軽減できるようベンダーをサポートすることで、攻撃者の活動を抑制することが目的です。
VPNFilter が発見されて以来、Talos はベンダー数社の 13 機種の SOHO ルータと産業用ルータを調査してきました。この調査の直接的な結果として、289 件の CVE をベンダーに報告し、141 件の Talos のレポートで公表しました。Talos の報告により Snort ネットワーク侵入検知のカバレッジが適切に拡張され、各ベンダーから複数のセキュリティ修正が提供されました。これらの修正プログラムは Cisco Secure ソリューションを導入しているお客様の役に立つものであり、パッチを適用すれば、脆弱性のあるルータを使用しているすべてのユーザーにとってセキュリティ態勢が改善します。
このブログ記事には、調査対象のルータで発見された脆弱性の概要をまとめています。主に取り上げているのは、攻撃者が悪用する可能性の高い脆弱性や、デバイスやネットワークへのアクセスに必要な高度な権限を取得するために組み合わせて使用される可能性のある脆弱性です。SOHO ルータや産業用ルータの調査はこれで終わったわけではありません。今後も調査を継続し、お客様やコミュニティ全体の保護を強化していきます。
ルータ
ASUS RT-AX82-U
調査担当:Lilith Wyatt
背景情報
調査対象として ASUS RT-AX82-U を選択した理由は、非常に人気のあるルータであり、他の多数の ASUS ルータとコードベースを共有しているからです。Talos は調査の過程で 3 件の個別レポートを ASUS 社に提出し、結果として 3 件の CVE が発行されました。ASUS RT-AX82-U には、asus-merlin-ng ファームウェアという形で大量のオープンソースコードが含まれています。本調査では、このコードセクションは対象外としました。スマートホーム統合や AiMesh 機能など、デバイス特有のコードベースや、デバイスの機能に特有のコードベースを優先したのがその理由です。スマートホーム統合機能は、Amazon Alexa や IFTTT(If This, Then That)自動化フレームワークとの統合によって、機能にアクセスしやすくすること、あるいは自動化を実現することを意図して設計されています。AiMesh 機能はメッシュ ネットワーキング ソリューションであり、複数のルータを連携させることによって 1 つのネットワーク接続ポイントからより広いエリアに Wi-Fi 接続を提供できるように設計されています。両機能は、デバイスの工場出荷時の設定ではデフォルトで有効になっています。つまり、ユーザーが明示的にこれらの機能を無効にしない限り、すべての ASUS RT-AX82-U デバイスが攻撃対象になる可能性があるということです。
注目すべき脆弱性
- TALOS-2022-1586:この脆弱性は、ルータのスマートホーム統合機能に存在していました。ユーザーが IFTTT で使用するトークンを生成すると、ルータで機能を利用できるようにするための認証トークンが生成されます。可能な組み合わせが 255 通りしかないため、このトークンは簡単にブルートフォースされます。また、トークンの有効性は、トークンが何分以内に生成されたかと、デバイスの稼働時間に基づいて評価されます。つまり、タイムアウトは 2 分に設定されているものの、ルータが再起動された場合は(再起動後の稼働時間が数秒間となるため)最初に生成されたトークンが有効になってしまい、脆弱性のエクスプロイトが可能になります。攻撃者はこの脆弱性を利用することで、あたかも適切に認証されたかのようにルータの管理者権限を取得することができます。
- TALOS-2022-1590:この脆弱性は、ルータの AiMesh 機能に存在していました。認証前の制御メッセージを利用して不適切なサイズの読み取りを行い、情報を漏洩させることができます。この情報は、既知平文に基づいてローカルで復号することが可能です。ユーザーが提供する AES キーの長さは、使用する AES バリアント(この場合は AES-256)ごとに設定されているサイズでなければなりません。これは、AES キーの長さチェックが行われないことに起因する脆弱性であり、必要なサイズ未満の AES キーを提供することで、余分な情報をユーザーに返すことができます。
- TALOS-2022-1592:この脆弱性は、ルータの AiMesh 機能に存在していました。認証前の診断メッセージを利用することで、不適切なサイズのパケットによりサービス拒否を引き起こすことができます。これは、取り込まれたパケットの長さが検証されないことが原因で整数アンダーフローが発生することに起因する脆弱性です。続いてこの整数アンダーフローが読み取りループで利用され、マップされていないメモリにアクセスされてしまい、クラッシュが発生します。
調査結果
ASUS RT-AX82-U の主な問題は、必ずしもデフォルトで有効にする必要のないサービスが含まれていることです。スマートホーム統合サービスは、デフォルトでは無効にするべきです。ルータの動作に必要ではなく、ほとんどのシナリオで利用されない可能性が高いからです。AiMesh サービスはデフォルトでは無効にし、メッシュネットワークを利用する場合のみ有効にすることが可能です。この機能を無効にしてもデバイスの脆弱性がなくなるわけではありませんが、アタックサーフェス(攻撃対象領域)は大幅に縮小し、脆弱な状態にあった導入済みデバイスの数が減少します。
D-Link DIR-3040
調査担当:Dave McDaniel
背景情報
D-Link DIR-3040 も人気のあるデバイスです。Talos の研究者が調査対象に選択した理由は、デバイスが導入されている場所に関係なく Wi-Fi の接続範囲を広げられるよう、ノード間でメッシュ通信が使用されるからです。Talos は調査の過程で 6 件の個別レポートを D-Link 社に提出し、結果として 6 件の CVE が発行されました。D-Link DIR-3040 の調査では、デバイスの工場出荷時の設定のあらゆる面に焦点を当てました。具体的には、隠し診断サービスなどの Web サービスや、Wi-Fi メッシュネットワーキングの導入、その他一般的なセキュリティ問題などです。Wi-Fi メッシュネットワーキングを導入すると複数のルータの相互接続が可能になり、ネットワークの通信範囲が拡大します。
注目すべき脆弱性
- TALOS-2021-1284:この脆弱性は、Web サーバーの機能と隠し機能の問題が組み合わさったものです。攻撃者はルータの非表示 URL にアクセスすることで、診断に使用する Telnet の隠しコンソールを起動できます。この診断メニューでは、制限付きシェルの複数のコマンドについて適切な入力サニタイズが行われていなかったため、任意のコマンドを挿入することが可能でした。
- TALOS-2021-1361:この脆弱性は、デバイスでデフォルトで有効になっている Wi-Fi メッシュ ネットワーキング サービスで発見されました。攻撃者はハードコードされているログイン情報を利用して MQTT サーバーに接続できます。サーバーに接続すると、メッシュに関する情報の照会が可能になります。この情報は暗号化されていますが、同じメッセージに含まれているベースルータの MAC アドレスを利用して復号できます。情報を復号すると、プライマリルータのルートパスワードを復元できます。
- TALOS-2021-1281:この脆弱性は、ルータでデフォルトで有効になっている Zebra ネットワーク管理サービスで発見されました。攻撃者はこのサービスにハードコードされているログイン情報を利用してルータの診断ツールにアクセスできます。攻撃者がサービスのログインバナーをファイルに変更し、このサービスを経由しなければアクセスできない機密情報を漏洩させる可能性があります。
調査結果
DIR-3040 Web サーバーには、デバイスのデバッグ機能にアクセスするための隠しパスがあります。この機能を隠す理由はありません。ユーザーが手動で有効にしなければならない明示的なオプションにした方がよいでしょう。また、最新のデバイスにログイン情報をハードコードすべきではありません。最後に、MQTT サーバーはメッシュ通信に関連するものです。RT-AX82-U の場合と同様に、機能のセットアップ中やその他の設定中に MQTT サーバーを有効にする必要がない限り、このサーバーを有効にすべきではありません。
InHand Network InRouter 302
調査担当:Francesco Benvenuto
背景情報
Cisco Talos の研究者が InHand Network InRouter 302 を調査した理由は、ATM プロバイダー 3 社(Wireless ATM STORE.COM、Wincor Nixdorf、UnionPay)が同デバイスを使用しているからです。Talos は調査の過程で 23 件の個別レポートを InHand 社に提出し、結果として 25 件の CVE が発行されました。InHand Network InRouter 302 の調査では、デバイスの工場出荷時の設定のあらゆる面に焦点を当てました。具体的には、Web サーバー、API サービス、一般的なセキュリティ問題などです。Web サーバーには複数の脆弱性が含まれていました。クロスサイト スクリプティングやコモン ゲートウェイ インターフェイス(CGI)の問題などです。InRouter のコンソールユーティリティにも多数の脆弱性が発見されました。本調査では、多数のオープンソースプロジェクトとクローズドソース製品で、アンエスケープ機能に起因する興味深い脆弱性が特定されました。この脆弱性については、Siretta ルータのセクションで詳しく説明します。
注目すべき脆弱性
- TALOS-2022-1469:この脆弱性は HTTP サーバーに存在していました。/info.jsp エンドポイントを悪用するものですが、通常、このエンドポイントを使用するのは Web ページのみです。Javascript コマンドとして送信されたパラメータは、eval 関数によってエンドポイントで効果的に評価されます。このエンドポイントへのアクセスが制限されていないことが原因で、クロスサイト スクリプティング(XSS)脆弱性が発生します。
- TALOS-2022-1472:この脆弱性は HTTP サーバーに存在していました。アクセス制御が不適切なせいで権限の低いユーザーがルータの設定を更新できるという脆弱性であり、自身のログイン情報を特権ユーザーのものに変更することによって特権昇格が行われます。
- TALOS-2022-1476:この脆弱性は、SSH または Telnet の使用時にユーザーに表示される制限付きコンソール内に存在していました。このコンソールには複数のコマンドが含まれていました。その 1 つが最高特権ユーザーのみが実行できる factory コマンドです。攻撃者はこのコマンドを利用することで、デバッグ機能(と推定されるもの)を使用してスタックバッファをオーバーフローさせることができます。スタックバッファとは、ユーザーデータの解析中にデータを保持するために使用されるものです。この脆弱性は、任意のコードの実行につながる可能性があります。
調査結果
この 3 件の脆弱性では、攻撃者はワンクリック攻撃を仕掛けてデバイスのルートアクセスを取得できます。TALOS-2022-1469 は、攻撃者がログインユーザーのセッション Cookie を窃取できる XSS の脆弱性です。セッション Cookie が権限の低いユーザーのものであった場合、TALOS-2022-1472 を組み合わせてルータの設定を更新し、自身のログイン情報を特権ユーザーのものに変更することで特権昇格を行えます。この時点で、攻撃者は最も高い権限のログイン情報を持っていますが、ルートにアクセスすることはできません。ただし TALOS-2022-1476 をエクスプロイトすれば、スタックベースのバッファオーバーフローを発生させてリモートコマンドを実行し、ルートアクセスを取得することができます。
Talos はこちらの詳細なブログ記事で、本調査で確認された脆弱性を組み合わせて使用し、ワンクリック攻撃で InHand Network InRouter 302 のリモートコマンドの実行権限を取得する方法を説明しています。
Linksys E シリーズ
調査担当:Cisco Talos の研究者
背景情報
Linksys E シリーズのデバイスは、VPNFilter 攻撃の直接的な影響を受けました。E1200 と E2500 の 2 機種は長年にわたりさまざまなベンダーが提供してきた SOHO ルータであり、最近では Linksys 社が提供しています。両ルータは低予算の導入環境を対象にしており、追加のデバイス接続用に 4 つのイーサネットポートを搭載しています。E シリーズのルータでは Web ベースの管理コンソールが提供されていて、所有者がシステム構成に管理上の変更を加えることができます。ルータを分析したところ、この Web コンソールも主なアタックサーフェスであることが判明しました。
注目すべき脆弱性
- TALOS-2018-0625:この開示情報には、関連する認証コマンドインジェクションの脆弱性が 3 件含まれています。すべて、Web ベースの管理ポータルからアクセスできます。設定中に E シリーズのルータに渡される設定情報の多くは、デバイスの電源サイクルを通して保持しておく必要があります。デバイスには書き込み可能なディレクトリが 1 つ(/tmp)しかなく、このディレクトリは再起動時にクリアされます。そのため、このデバイスは NVRAM を使用して設定の詳細を保存します。パスは 3 つあり、「machine_name」または「wan_domain」という 2 つのパラメータのいずれかが NVRAM から取得され、その後「system()」に渡されるコマンドで直接使用されます。
Milesight UR32L と MilesightVPN
調査担当:Francesco Benvenuto
背景情報
Milesight UR32L は、価格と機能のバランスに優れた産業用ルータです。同ルータを販売している Milesight 社は、リモートアクセス ソリューションとして MilesightVPN というソフトウェアも提供しています。理論的には UR32L ルータがインターネットに公開されることが少なくなるため、攻撃者が UR32L を標的にすることは難しくなります。Talos は UR32L の調査の過程で 17 件の個別レポートを Milesight 社に提出し、結果として 63 件の CVE が発行されました。また、VPN ソリューションに関する 5 件のレポートも提出し、6 件の CVE が発行されました。本調査では 2 つのコンポーネントを主な対象としました。それが、HTTP サーバー(および関連コンポーネント)とルータのコンソールシェルです。分析にあたっては、より完全な攻撃シナリオを調査するために、ユーザーが MilesightVPN を使用しているという攻撃シナリオも考慮しました。
注目すべき脆弱性
- TALOS-2023-1701:この脆弱性は、MilesightVPN の HTTP サーバーのログイン機能に存在していました。SQL インジェクションの脆弱性であり、攻撃者は Web ログインをバイパスし、管理用 Web ページへのアクセス権を取得することができます。この結果、VPN に接続されているルータとの通信が可能になります。
- TALOS-2023-1697:この脆弱性は、UR32L の HTTP サーバーのログイン機能に存在していました。UR32L ルータで確認された脆弱性の中で最も深刻であり、実際は認証前のスタックベースのリモート バッファ オーバーフローの脆弱性です。認証されていない攻撃者が HTTP サーバーと通信し、リモートコマンドを実行できるようになります。TALOS-2023-1701 を使用すれば、HTTP サーバーとリモートで通信できます。
- TALOS-2023-1706:UR32L は、HTTP サーバー内で診断機能を提供しています。たとえば ping や traceroute などですが、この両者には、指定されたホストを経由する OS コマンドインジェクションの脆弱性があります。UR32L への低い権限のログイン情報を持つ攻撃者がこれらの脆弱性をエクスプロイトし、リモートコマンドを実行する可能性があります。
調査結果
Milesight 社は、リモートアクセス ソリューションとして、MilesightVPN というソフトウェアを提供しています。同社の基本的な考えは、MilesightVPN を使用すれば UR32L をインターネットに公開する必要がなくなり、アタックサーフェスが縮小するため、攻撃者が UR32L を標的にすることが難しくなるというものです。本調査ではこのシナリオを考慮しましたが、残念ながらTALOS-2023-1701 を使用して MilesightVPN を攻撃した後、TALOS-2023-1697 を使用して UR32L 内で任意のコードを実行できることが実証されました。
Netgear Orbi Router RBR750/RBS750
調査担当:Dave McDaniel
背景情報
調査対象として Netgear Orbi RBR750/RBS750 を選択した理由は、その人気と品質に対する評価の高さです。このデバイスは、ハイエンドの SOHO ルータとして広く採用されています。また、メッシュネットワークを利用してサテライトと接続することができます。Talos は調査の過程で 4 件の個別レポートを Netgear 社に提出し、結果として 4 件の CVE が発行されました。Netgear 社の Orbi ルータ RBR750 に関する本調査では、デバイスの複数のサービスを主な対象としました。たとえば、管理 Web サーバーや、ローカルネットワーク上でデバイスが提供するサービスなどです。ネットワークサービスには、特別なネットワークパケットを使用すれば有効になる隠し機能が含まれていました。Orbi は、サテライトとプライマリルータ間の通信にオープンソースの OpenWrt ubus コードベースを使用していますが、このライブラリ上には隠れた追加機能も含まれています。
注目すべき脆弱性
- TALOS-2022-1595:この脆弱性は、UDP ポート 23 をリッスンするサービスが存在することに起因するものです。文書化されていないこのサービスは暗号化されたパケットをリッスンしており、このパケットにはデバイスの br-lan インターフェイスの MAC アドレス、ユーザー名、パスワードが含まれていました。暗号化に使用されていたのは Blowfish アルゴリズムを修正したもので、ニンテンドー DS ハンドヘルド ビデオゲーム システムのカートリッジの著作権保護に使用されたものと同様のアルゴリズムでした。パケットが取得されると Telnet デーモンが生成され、基盤となる busybox システムに直接アクセスできるようになります。
- TALOS-2022-1596:この脆弱性は、Orbi の Web ベース管理に存在していました。この Web インターフェイスには、MAC アドレスとデバイス名で指定される特定のデバイスをブロックする機能があります。関連する POST リクエストのデバイス名フィールドには、ユーザー入力が適切にサニタイズされないことに起因するコマンドインジェクションの脆弱性があります。攻撃者が悪意のあるパケットを細工し、ルート権限を使用してデバイス上で任意のコマンドを実行する可能性があります。
- TALOS-2022-1592:この脆弱性は、デバイスの Wi-Fi メッシュ通信サービスに存在していました。このサービスは、OpenWrt が開発したオープンソースライブラリ ubus を利用しています。もっと具体的に説明すると、この脆弱性は Netgear 社が ubus ライブラリ上に構築した機能に起因します。攻撃者が Web インターフェイスのパスワードまたはデフォルトのパスワードを知っていれば、ubus メッセージを送信して Telnet の隠しサービスを起動できます。その後、この Telnet の隠し機能を使用すれば、基盤となる busybox システムに直接アクセスする権限を取得できます。
調査結果
Netgear Orbi の主な問題は、ユーザー入力がサニタイズされないことと、隠しサービスが存在することでした。ユーザー入力のサニタイズは単発のソリューションとして実装するのではなく、十分にテストされたライブラリを使用してサーバーサイドで行うべきです。まして、クライアントサイドのソリューションとすべきではありません。Telnet サービスを提供することは本質的に悪いことではありませんが、サービスの存在をユーザーから隠すことにはメリットがないように思えます。Telnet サーバーを起動する方法が隠されていると、リスクを最小にする方法をユーザーが把握するのが難しくなります。
Robustel R1510
調査担当:Francesco Benvenuto
背景情報
Robustel R1510 を調査対象にした理由は、脆弱性がもたらす物理的な危険があったからです。この Robustel 社製ルータは、エレベータなどの物理的なシステムで使用されており、同社は Vodafone、Bosch、Siemens、Emerson、Schneider Electric など、さまざまな産業用制御システムベンダーと提携しています。Talos は調査の過程で 10 件の個別レポートを Robustel 社に提出し、結果として 26 件の CVE が発行されました。Robustel R1510 の調査では、デバイスのほぼすべての機能を管理する Web サーバーを主な対象としました。
注目すべき脆弱性
- TALOS-2022-1577:この脆弱性は、Web サーバーと、NodeJS アプリケーションのインストールに直接関連する機能に含まれていました。新しい NodeJS アプリケーションをアップロードする際に、POST リクエストの一部として、提供されたファイル名でグローバル変数が設定されます。ファイルが Web サーバーにアップロードされると、アプリケーションをインストールするために 2 つ目のリクエストが必要になります。攻撃者はこのリクエストを使用してコマンドインジェクションを実行できます。具体的な方法は、ファイル名に悪意のある細工を加えることです。アプリケーションがインストールされるとコマンドインジェクションが実行され、攻撃者がデバイス上で任意のコマンドを実行できるようになります。
- TALOS-2022-1576:この脆弱性は、Web サーバー内のファームウェア アップグレード機能で発見されました。R1510 は修正した U-Boot ヘッダーを使用していましたが、ファームウェア名に使用されている文字配列はそのまま維持されていました。このフィールドは、system 関数呼び出しで直接使用される前に検証もエスケープ処理も行われていませんでした。攻撃者がこの脆弱性を使用してファームウェアのアップデートファイルを細工し、その結果、アップデートプロセス中に任意のコマンドが挿入される可能性があります。
- TALOS-2022-1578:この脆弱性は、R1510 Web 管理インターフェイスの SSH 認証キーのアップロード機能で発見されました。認証されたユーザーは、デバイス上の Linux ユーザー名を変更することができます。これにより、証明書ベースの認証で使用される SSH キーのディレクトリパスが作成されます。ユーザーが新しい SSH キーをアップロードすると、ユーザー名が検証されることなく直接使用され、ディレクトリパスが作成されます。このディレクトリパスが sysprintf 関数呼び出しに渡され、コマンドインジェクションが発生します。攻撃者は、この脆弱性を利用して Web インターフェイスの認証をバイパスし、その後もこの脆弱性を利用して Linux 内で任意のコマンドを実行できます。
調査結果
Robustel R1510 で発見された脆弱性のほとんどは、ユーザー入力がサニタイズされないことに関連していました。デバイスで多数のチェックをする場合には、共通のコードベースを使用するのが理想的と言えます。特定の性能要件がない場合、ファイルをアップロードするプロセスと、以前アップロードしたファイルを利用するプロセスではユーザー入力のチェックが複数回発生します。共通のライブラリを使用してチェックを実行すれば、システムでの他のチェックと同期しないという検証リスクを排除できます。
Sierra Wireless AirLink
調査担当:Carl Hurd
背景情報
調査対象として Sierra Wireless 社の AirLink を選んだ理由は、導入の柔軟性にあります。AirLink は、ローカルデバイスのセルラー接続を利用して遠隔地で使用することを意図しており、デバイスが提供するネットワークの外部からアウトオブバンドで管理されます。Talos は Sierra Wireless 社に 11 件の個別レポートを提出し、13 件の CVE が発行されました。本調査は、Web サーバー、カスタムコンソールのバイナリ、SNMP、その他デバイス上で公開されているサービスなど、AirLink のあらゆる面を対象に実施しました。攻撃者がこのデバイスを侵害した場合、デバイスの機能を利用してネットワークのあらゆる側面のトラフィックを操作することができます。
注目すべき脆弱性
- TALOS-2018-0751:これは ACEManager に含まれている脆弱性であり、この Web サーバーにはクロスサイト リクエスト フォージェリ(CSRF)を防止するためのヘッダーが欠落しています。このヘッダーがあれば、認証前のセッションを悪用した無関係なブラウザのリンクからリクエストを受信しているのではなく、一貫して同じセッションからリクエストを受信していることをサーバーが確認できます。この脆弱性により、さまざまな方法でセッションが乗っ取られる可能性があります。
- TALOS-2018-0750:これは ping_result.cgi バイナリに存在していた脆弱性で、クライアントに応答を返す前に入力が適切にフィルタリングされないというものです。このフィルタリングの不具合によって、クライアントへの応答に JavaScript を挿入することが可能になります。この脆弱性を利用すれば、クライアントのブラウザでコードを実行できます。たとえば、ユーザーの代わりにリクエストを送信したり、機密トークンを開示したりできます。TALOS-2018-0751 に加えてこの脆弱性を使用することで、認証ユーザーのセッションを完全に乗っ取ることができました。
- TALOS-2018-0748:この脆弱性は、AirLink 450 のテンプレートのファイルアップロード機能で発見されました。テンプレートファイルをアップロードする際、ユーザーはアップロードするファイル名を指定できますが、すでにデバイス上にあり、通常の操作で使用されるファイルを保護するための制限はありませんでした。ディレクトリに存在する既存のファイルと同じ名前のファイルがアップロードされた場合、既存のファイルの権限が継承されます。この場合、複数の CGI ファイルが実行権限で上書きされることになります。攻撃者はファイルを置き換えた後、新しくアップロードされた CGI バイナリを操作して、コードを実行することができます。攻撃者が TALOS-2018-0751 と TALOS-2018-0750 を組み合わせれば、悪意のあるコードをアップロードしてコマンドで実行し、ユーザーの認証済みセッションを乗っ取ることができます。この結果、適切に認証されていないリモートコードが実行されてしまいます。
調査結果
AirLink 450 で発見された脆弱性のほとんどは、Web サーバーと、その基本的な機能に関するものでした。Web サーバーが提供する CSRF トークンがないこと、および反射型 XSS の脆弱性により、ユーザーのセッションを乗っ取り、認証されたリクエストを行うことができます。Web サーバーがきちんと開発されテストされていれば、自ずと CSRF が含まれているはずです。XSS の脆弱性を軽減するには、JavaScript ライブラリや、サニタイゼーション ライブラリ(CGI バイナリを使用している場合)を利用して、ユーザー入力を適切にサニタイズする必要があります。最後に、ファイルアップロードの機能は、ユーザーがアップロードしたファイルのみが含まれているフォルダを対象とするよう厳密に制限するべきです。これは、権限の問題や、悪意を持って行われる可能性のあるファイルの上書きを避けるためです。
Siretta QUARTZ-GOLD
調査担当:Francesco Benvenuto
背景情報
Siretta QUARTZ-GOLD を本調査の対象とした理由は、極めて重要なデバイスの近くに配置されることが多く、脆弱性が発見された場合の緊急度が高いからです。このデバイスは、ネットワークの稼働時間を確保するための 4G/LTE フェールオーバーメカニズムを備えています。つまり、このルータは重要なネットワークに導入される可能性が高いということです。Talos は調査の過程で 14 件の個別レポートを Siretta 社に提出し、結果として 62 件の CVE が発行されました。本調査では、デフォルトでアクセスできる Siretta QUARTZ-GOLD ルータのすべての側面を対象にしました。具体的には、HTTP サーバー、SNMP サーバーの実装、さまざまな CLI(コマンドライン インターフェイス)ツールなどです。ルータのファームウェアの大部分は、オープンソースのルータファームウェアである FreshTomato のフォークです。QUARTZ-GOLD はこのファームウェアを使用しており、オープンソースのコードベースを利用する他の多くのプロジェクトと同様に、コードの再利用の脆弱性をプロジェクトから継承しています。
注目すべき脆弱性
- TALOS-2022-1638:この脆弱性は、QUARTZ-GOLD の M2M 機能に存在していました。M2M 機能を有効にすると、m2m バイナリが実行されます。このバイナリは、独自の UDP プロトコルを使用して豊富な機能を提供します。たとえば「DELETE_FILE」は、system 関数を通じて rm -rf <base_folder>/<M2M_data_entry.data> & コマンドの実行を可能にする機能です。このコマンドの M2M_data_entry.data の部分は UDP パケット内で指定されており、M2M_data_entry.data の文字列の解析やサニタイズは行われません。この機能にはコマンドインジェクションの脆弱性がありました。さらに、DELETE_FILE 機能は認証を必要としていませんでした。この脆弱性を利用すれば、認証されていない攻撃者が任意のコマンドを実行できます。
- TALOS-2022-1615:この脆弱性は、ルータの SNMP 機能に存在していました。QUARTZ-GOLD は、ルータ内で独自に OID を定義できる機能を実装しており、攻撃者は独自の OID を送信することができます。送信コマンドは、OID が照会されるたびに実行されます。最も簡単な方法は、Linux シェルでルートユーザーとして直接コマンドを実行することでした。攻撃者はこの脆弱性を利用して、任意のコマンドを挿入することができます。
- TALOS-2022-1610:この脆弱性は、QUARTZ-GOLD の Web サーバーの機能で発見されました。このデバイスのファームウェアは FreshTomato ファームウェアをベースにしており、多くのデフォルト機能が FreshTomato ファームウェアの文書化されていない機能から継承され、デバイス機能の一部となっています。もっと具体的に説明すると、FreshTomato ではデバッグ機能が無効化されておらず、Web インターフェイスで認証されたユーザーが、あたかもシェルの実行権限を持っているかのように直接 Linux コマンドを発行できるようになっていました。認証された攻撃者は、この脆弱性を利用して任意のコマンドを挿入することができます。
調査結果
Siretta QUARTZ-GOLD で発見された脆弱性の多くは、この製品に含まれているサードパーティのコードベースから継承されていました。FreshTomato には多くの機能があらかじめ組み込まれていますが、Siretta 社がビルド元のコードにもっと精通していれば、これらの機能を無効にできたかもしれません。FreshTomato が提供するデバッグ機能の多くは、Siretta デバイスの機能として文書化されておらず、意図せずに含まれているようです。大量のコードベースを再利用する場合は、そのコードベースに何が含まれているのかと、開発者が考えているユースケースに対してどのようにすれば適切な設定ができるのかを知ることが重要です。
Synology SRM – RT2600ac
調査担当:Claudio Bozzato
背景情報
Synology RT2600ac はハイエンドの SOHO ルータです。すべての Synology ルータに対応した Linux ベースのオペレーティングシステムである Synology SRM(Synology Router Manager)で動作します。このルータを調査対象とした理由は、その人気と品質に対する評判の高さです。Talos は Synology 社に 9 件のレポートを提出しました。そのうち 2 件は同社の VPN サービス(QuickConnect)に影響し、1 件は SRM で使用されている Qualcomm 社のツールに影響します。最終的に 10 件の CVE が開示されました。QuickConnect は Synology の VPN サービスであり、ルータのリモート管理を可能にします。管理ポートを公開するためにルータを設定する必要も、リモートでルータを特定するために DDNS サービスを管理する必要もありません。
本調査の詳細は Talos のこちらのブログに記載しています。報告した脆弱性をいくつか組み合わせれば、一般にアクセス可能な Synology の VPN サービスを介してリモートコードを実行することができ、SRM デバイスでの事前の認証は必要ありません。ブログでは、その仕組みについて説明しています。
注目すべき脆弱性
- TALOS-2020-1064:ルータを QuickConnect VPN に接続すると、専用のサブネットに配置されます。ただし、本レポートによるとこのサブネットは論理的に分割されていません。そのため、ルータに割り当てられたネットマスクをより大きなものに変更すれば、同じ VPN に接続されている他のルータとの通信が可能になります。VPN には、ルータを QuickConnect に登録するとアクセスできるようになります。ところが一度登録するとルータの接続は不要になり、デバイスとは無関係に攻撃を行うことができます。利用できる VPN の中には、簡単に列挙できて、位置情報が特定できそうなものがいくつかあります。
- TALOS-2020-1066:本レポートで説明している脆弱性は、ルータ内の iptables のルールに関するものです。SRM はフィルタリングルールを定義していますが、これは LAN からのアクセスを特定のポートのみに制限するというルールです。ただし、QuickConnect VPN からの接続については、このようなルールがありません。つまり、デバイスでリッスンしているすべてのサービスに、VPN からリモートでアクセスできることになります。この脆弱性を TALOS-2020-1064 と組み合わせれば、VPN で到達可能なサービスのうち、選択したデバイスで実行されている任意のネットワークサービスと無制限に通信可能になります。
- TALOS-2020-1065:このレポートで説明しているのは、Qualcomm 社の lbd(ポート 7786 および 7787 でリッスンしていて、LAN 経由で到達可能なサービス)で発見された脆弱性です。攻撃者がルータと同じ LAN 上にいる場合、このサービスを利用して、認証なしで root として直接シェルコマンドを実行することができます。このサービスは LAN 経由で到達できるため、VPN 経由でも到達可能です。この脆弱性を上記 2 件の脆弱性と組み合わせると、QuickConnect に接続されている任意のルータに対して、事前の認証なしで VPN 経由で root として任意のコマンドを実行できるようになります。
調査結果
Synology SRM は、動的 IP アドレスで動作する SOHO ルータのリモート管理問題を解決する便利な VPN サービスを提供しています。しかし本調査により、この VPN サービスにはアタックサーフェスを広げる危険性もあることがわかりました。通常、DDNS 経由で公開されているデバイスを発見するにはインターネット全体をスキャンする必要があるため、かなりの労力が必要です。ところが、QuickConnect ではすべてのデバイスが同じ VPN(一般にアクセス可能で、位置情報サービスを簡単に列挙できる VPN)に接続されているため、簡単に発見できます。
TCL Linkhub Mesh Wifi
調査担当:Carl Hurd
背景情報
TCL Linkhub は、TCL 社が販売する新製品の 1 つです。その機能セットと価格から、低価格テレビ市場のように急速に普及する可能性があります。Talos は調査の過程で 17 件の個別レポートを TCL 社に提出し、結果として 42 件の CVE が発行されました。TCL Linkhub Mesh Wi-Fi システムに関する本調査では、デバイスの管理全般に使用される API サービスを主な対象としました。Linkhub は、ユーザーインターフェイスを提供するために Web サーバーを使用しません。デバイスの操作はすべてスマートフォンアプリを使って行います。このアプリは、ProtoBuffer ベースの API を通じてデバイスと通信します。この API サービスはデフォルトで開いている数少ないポートの 1 つであるため、本調査の主な対象としました。
注目すべき脆弱性
- TALOS-2022-1463:この脆弱性は、LinkHub のフラッシュで値を取得し設定するコードに存在していました。この脆弱性が興味深いのは、特定のライブラリに含まれているわけではなく、デバイス上のほぼすべてのバイナリで使用されていた点です。この関数では、フラッシュから値を取得する際に宛先バッファの長さが考慮されていませんでした。設定値は、簡単に大きな値に変更することができ、次にその変数がフラッシュからロードされたときにバッファオーバーフローを引き起こすことになります。この脆弱性は任意のコード実行につながります。
- TALOS-2022-1455:この脆弱性は、スマートフォンアプリで使用するために公開されている API サービスに存在していました。管理アプリケーションとデバイス間のあらゆる通信には、ProtoBuffer を利用したシリアル化が使用されます。バッファが逆シリアル化されると、デバイスのさまざまなハンドラにディスパッチされます。set_mf_rule 機能では、ユーザー入力に基づいて長さを直接決定する memcpy 関数が使用されています。攻撃者はこの機能を使用して、デバイス内の静的なサイズのバッファよりも大きなフィールドを含む mf_rule メッセージを送信することができます。この脆弱性は、バッファオーバーフローと任意のコード実行につながります。
- TALOS-2022-1458:この脆弱性は、スマートフォンアプリで使用するために公開されている API サービスに存在していました。管理アプリケーションとデバイス間のあらゆる通信には、ProtoBuffer を利用したシリアル化が使用されます。バッファが逆シリアル化されると、デバイスのさまざまなハンドラにディスパッチされます。ルータメッシュにサテライトを追加するために使用される ucloud_add_node 機能では、MxpManageList メッセージが system 関数に直接渡されます。攻撃者はこの脆弱性を利用し、悪意のあるメッセージを使用することで、任意のコマンドを実行できます。
調査結果
TCL LinkHub は、独自のアプローチで管理しているため、アタックサーフェスが大きく変化します。Protobuffer は十分なテストを経て管理されているライブラリなので、シリアル化に Protobuffer を利用することは、開発者としては良い判断です。ただしデータが逆シリアル化されると、入力の多くは管理アプリケーションから取得されたものとみなされるため、無条件に信頼されます。このデータはすべてユーザーデータとして扱うべきであり、memcpy のように悪用される可能性のある関数で使用する前に、逆シリアル化された時点でもっときちんと検証する必要があります。
TP-Link TL-R600VPN
調査担当:Jared Rittle および Carl Hurd
背景情報
TP-Link の TL-R600VPN を本調査の対象にした理由は、VPNFilter の攻撃に直接関係があるからです。TP-Link TL-R600VPN は 5 ポート搭載の SOHO ルータで、Realtek RTL8198 統合 SoC(システムオンチップ)を採用しています。この SoC では、Lexra 社が開発した、MIPS-1 から派生したアーキテクチャが使用されています。このデバイスはごく普通の小型ルータであり、ネットワーク診断機能と、デバイス上で Web サーバーによって管理される基本的なルータ機能を備えています。Talos は調査の過程で 4 件のレポートを TP-Link 社に提出し、結果として 4 件の CVE が発行されました。このデバイスに関する調査の詳細は、こちらのブログ記事でご確認ください。
注目すべき脆弱性
- TALOS-2018-0620:この脆弱性は、Web サーバー内の HTTP リクエストのヘッダー解析に存在していました。この脆弱性は、Web サーバー上のページの特定のサブセットにリクエストを送信することで引き起こされました。リクエストが送信されると、解析されたヘッダーに対して静的なサイズのバッファが使用されます。攻撃者は異常に長いヘッダーのエントリを使用してバッファをオーバーフローさせ、リターンアドレスを上書きできます。この脆弱性は任意のコード実行につながります。
- TALOS-2018-0619:この脆弱性は、デバイスのネットワークデバッグ機能に存在していました。R600-VPN の ping 機能には、ユーザー入力によってチェックされないパラメータが含まれていました。攻撃者は異常に長い ping_addr パラメータを指定することで、値を保持するために使用される静的なサイズのバッファをオーバーフローさせ、リターンアドレスを上書きできます。この脆弱性は任意のコード実行につながります。
- TALOS-2018-0618:この脆弱性は、R600-VPN の HTTP サーバーに含まれていました。ユーザーが指定した URL は、「../」のような特殊文字を無視して解析され、ディレクトリツリーの上位に移動しました。通常、このような特殊文字は URL 内で削除または無視され、ディレクトリのナビゲーションは発生しませんが、R600-VPN ではこのナビゲーションを使用してデバイス上の任意のファイルを取得することが可能です。この脆弱性は、機密情報の漏洩につながります。
調査結果
TL-R600VPN で発見された脆弱性のほとんどは、Web サーバーと、サーバーの機能に関するものでした。最も簡単なリスク緩和策の 1 つは、Web サーバーをゼロから開発したり、テストされていないコードを製品に含めたりせずに、十分にテストされた Web サーバーを統合することです。脆弱なコードの一部は Web サーバー自体に含まれていましたが、その多くは、ネットワーク診断のようなシンプルな追加機能のためにメーカーが追加したものでした。本調査で明らかになったように、こうした問題を防ぐには、コードを追加したら必ずレビューする必要があります。
ZTE MF971R
調査担当:Marcin Noga
背景情報
ZTE MF971R モバイルルータは ZTE MF モバイルルータファミリの最新デバイスの 1 つであり、少なくともポーランドでは非常に人気のあるデバイスです。主要な GSM プロバイダーが販売していることや、一部の製品/サービスに無料で付加されていることからも、このデバイスの人気の高さがわかります。Talos は調査の過程で 7 件のレポートを ZTE 社に提出し、結果として 7 件の CVE が発行されました。ZTE MF971R ルータに関する調査では、デバイスの管理全般に使用される Web アプリケーション/サーバーを主な対象としました。Talos は、Web API に一連の脆弱性を発見しました。これらの脆弱性を組み合わせるとワンクリックエクスプロイトを作成することができ、デバイスへのフルリモートアクセスが可能になります。詳細な説明については、こちらのホワイトペーパーをご覧ください。
注目すべき脆弱性
- TALOS-2021-1317:この脆弱性は、Web API における CSRF 対策/API 通信制限の実装に関連するものです。特定の Web API と通信するには、127.0.0.1 のアドレス、またはデフォルトのルータ IP アドレスである 192.168.0.1 からリクエストを送信する必要がありますが、これは HTTP リファラの値をチェックすることで検証されます。残念なことに、このチェックが実装されている方法では、リファラ URL のいずれかの部分に文字列 127.0.0.1 を追加するだけでチェックをバイパスし、API 通信へのフルアクセスを取得できます。
- TALOS-2021-1320:この脆弱性は、ADB_MODE_SWITCH Web API の実装において発見されました。この API の一部であるパスワードパラメータは、その長さのコンテキストにおいて適切にサニタイズされず、スタックベースのバッファオーバーフローを引き起こします。ユーザーは、ログインしていなくてもこの脆弱性の影響を受けることになります。攻撃者が乗り越えなければならない唯一の制約はリファラチェックですが、TALOS-2021-1317 で説明したとおり、このチェックは簡単にバイパスできます。この認証前のスタックベースのリモート バッファ オーバーフローにより、リターンアドレスを上書きする際に攻撃者が完全な制御を取得できます。その結果、Talos が実証したように、ワンクリックでリモートコード実行が可能になります。
調査結果
ZTE MF971R のセキュリティが侵害される理由はいくつかあります。まず、特定の Web API へのアクセスを減らすために目に見える対策を講じたにもかかわらず、依然としてその対策をバイパスできることが挙げられます。このため、攻撃ベクトルが増加しました。また、メインの Web サーバーのバイナリは、ASLR(アドレス空間配置のランダム化)やスタック Cookie といった基本的な緩和策との互換性がないため、既存の脆弱性をエクスプロイトするのはごく簡単です。前述のセキュリティ対策を改善することで攻撃ベクトルの数が減り、既存の脆弱性(特に認証なしでエクスプロイトできる脆弱性)が悪用されにくくなるか、実質的に悪用が不可能になります。
共通のフレームワーク
これまでのセクションでは、調査した特定のルータについて説明しましたが、一部のルータが実行する特定のソフトウェアは、多くのルータに共通していました。それが、OpenWrt、FreshTomato、AsusWRT、DD-WRT などオープンソースのファームウェアです。また、KCodes という特定のカーネルモジュールを実行するルータもありました。このようなソフトウェアは、ルータのセクションで取り上げたベンダーに固有のものではないため、発見した脆弱性を以下にまとめています。
OpenWrt
調査担当:Claudio Bozzato
背景情報
OpenWrt は Linux ベースの OS です。ネットワークトラフィックをルーティングするために組み込みデバイスで主に使用されます。高度なカスタマイズが可能であり、リソースが限られているハードウェア上で動作するように最適化されているツールとライブラリのセットも提供されるため、SOHO ルータでは OpenWrt がよく使用されます。
注目すべき脆弱性
- TALOS-2019-0893:この脆弱性は、OpenSSL、mbed TLS、wolfSSL の SSL ラッパーとして機能する ustream-ssl ライブラリに影響します。具体的に説明すると、HTTPS サーバーから不正な証明書が提供されても、ライブラリが SSL 接続をすぐに終了しないという脆弱性です。このため、接続が終了する前に、検証されていない証明書を使用してクライアントからリクエストを送信することができます。OpenWrt は wget などのツールでこのライブラリを使用しているため、このライブラリを使用している機能はすべて、HTTPS URL をリクエストする際にこの情報漏洩の影響を受けます。最悪の場合、攻撃者が中間者攻撃を行い、リクエスト内の機密情報を盗み出す可能性があります。
調査結果
HTTPS 接続は最終的にエラーで終了するため、この問題は見過ごされがちです。OpenWrt はカスタマイズやスクリプトの記述が簡単なプラットフォームであるため、この脆弱性は多くのユーザーに影響を与える可能性があります。
FreshTomato
調査担当:Francesco Benvenuto
背景情報
FreshTomato は、人気のあるオープンソースのファームウェアプロジェクトです。頻繁にメンテナンスされている最新のファームウェアプロジェクトであり、SOHO ルータで広く使用されています。SSH、VPN 機能、Telnet、ルーティングなど、複数の機能がデフォルトで備わっています。
注目すべき脆弱性
- TALOS-2022-1642:この脆弱性は、FreshTomato の HTTP サーバーが提供する機能の 1 つに存在していました。この機能は、シンプルなテンプレート言語(ユーザーによって特定のフォルダに提供されたファイルの内容を読み込むためのテンプレート関数)を提供します。サニタイズが行われず、ハードコードされているパスと提供されたファイル名を連結することでファイルパスが構成されるため、この機能はパストラバーサルに対して脆弱です。有効なログイン情報を持つ攻撃者は、ファイルシステム内の任意のファイルを読み取ることができます。
- TALOS-2022-1641:この脆弱性は、FreshTomato の HTTP サーバーが提供するログ関連の機能の 1 つに存在していました。この機能により、ユーザーは OS コマンドを使用してログファイル内の特定の文字列を見つけることができます。ユーザーが指定するパラメータのサニタイズが行われないため、この機能には OS コマンドインジェクションの脆弱性があります。攻撃者は、この脆弱性を利用して任意のコマンドを挿入できます。
- TALOS-2022-1509:この脆弱性は、FreshTomato の HTTP サーバーが提供する URL のアンエスケープ機能に存在していました。「%」の後に必ず 2 つの文字が続くと仮定してアンエスケープ処理を行っていますが、これは誤りで、このように仮定することで境界外の読み取りと書き込みが可能になってしまいます。
調査結果
FreshTomato プロジェクトは多くのルータのベースとなっているため、ソフトウェアの脆弱性が発見された場合、影響が広範囲に及ぶ可能性があります。ファームウェアがどのように導入されていて、これらの脆弱性がどの程度の影響を導入済みのルータに与えるのかを完全に把握することはできません。
Asuswrt、Asuswrt-Merlin New Gen、DD-WRT
調査担当:Francesco Benvenuto
背景情報
FreshTomato と同様に、Asuswrt、Asuswrt-Merlin New Gen、DD-WRT は SOHO ルータのベースファームウェアです。
注目すべき脆弱性
- TALOS-2022-1511:この脆弱性は、Asuswrt および Asuswrt-Merlin New Gen の HTTP サーバーが提供する URL のアンエスケープ機能に存在していました。「%」の後に必ず 2 つの文字が続くと仮定してアンエスケープ処理を行っていますが、これは誤りで、このように仮定することで境界外の読み取りと書き込みが可能になってしまいます。
- TALOS-2022-1510:この脆弱性は、DD-WRT の HTTP サーバーが提供する URL のアンエスケープ機能に存在します。「%」の後に必ず 2 つの文字が続くと仮定してアンエスケープ処理を行っていますが、これは誤りで、このように仮定することで境界外の読み取りと書き込みが可能になってしまいます。
調査結果
Talos の研究者が TALOS-2022-1509 を発見した後、アンエスケープ機能にこれと同じ脆弱なパターンがある別のソフトウェアが特定されました。Asuswrt および Asuswrt-Merlin New Gen の TALOS-2022-1511 と DD-WRT の TALOS-2022-1510 です。
KCodes NetUSB.ko
調査担当:Dave McDaniel
背景情報
一部の NETGEAR ルータは、台湾の KCodes 社の NetUSB.ko という特注のカーネルモジュールを使用しています。このモジュールは各デバイス用に特注で製造されていますが、機能は類似しています。このモジュールは TCP 経由で USB デバイスを共有することにより、クライアントがさまざまなベンダーのドライバとソフトウェアを使用してこれらのデバイスに接続できるようにします。具体的には、クライアントマシンが、コンピュータに接続されているローカル USB デバイスとしてリモートデバイスを扱うようになっています。NETGEAR ルータでは NETGEAR USB Control Center というソフトウェアが使用されており、通信には NetUSBUDSTcpBus.sys ドライバ(Windows の場合)が使用されます。
注目すべき脆弱性
- TALOS-2019-0775:静的な AES キーが復元されると、ハンドシェイク後に 1 つのオペコードを使用して、簡単に DoS やリモート情報漏洩を引き起こすことができます。
- TALOS-2019-0776:TALOS-2019-0775 と同様に、この脆弱性はメモリをリークします。この脆弱性の場合は、スタックの境界アドレス、特定の config 関数へのポインタ、さらにこれが特に重要ですが、実行中の NetUSB.ko カーネルモジュールのベースアドレスといった非常に有用なメモリがリークされます。この脆弱性が他のリモート攻撃と組み合わせて使用される(標的に対する特定のペイロードを設計する際にこのデータが使用される)可能性があります。
調査結果
NetUSB.ko は、上記に記載した製品以外にも多くの製品で使用されています。研究者たちは 2015 年に公開された脆弱性により、このカーネルモジュールの欠陥が、複数のベンダーの 92 もの製品に存在する可能性があると考えました。今回の分析では R8000 ハードウェアを使用して、NetUSB.ko の R8000 バージョン(1.0.2.66)と R7900 バージョン(1.0.2.69)をテストしました。両モジュールが同じカーネル用にコンパイルされているからです。TALOS-2019-0776 で公開された情報は、このカーネルモジュールを使用するアーキテクチャやオペレーティングシステムの種類に関係なく、機密性の高いメモリアドレスを復元してペイロードを生成する際に特に有用だと思われます。
調査結果のまとめ
SOHO ルータは、ネットワーク内での位置付けと、一般的なネットワーク展開において広く導入されていることから、攻撃者にとって格好の標的になっています。比較的安価で入手しやすく、ユーザーフレンドリーな管理機能を備えているため、多くの家庭、小規模オフィス、ホームオフィス、保管倉庫、喫茶店、その他多くの事業所で SOHO ルータが使用されています。また、産業用の環境にリモートアクセスを提供するゲートウェイとしても導入されています。
このようなルータの脆弱性がさまざまな攻撃のきっかけとなったり、他に影響を与えるために使用されたりする可能性があります。つまり攻撃者にとっては非常に価値のある標的だと言えます。
低価格ルータのセキュリティ態勢はここ数年で改善されていますが、大まかに言えば、これらのデバイスに対するセキュリティ上のアドバイスはこれまでと同じです。メーカーにとって重要なセキュリティ上の注意点は次のとおりです。
- デバイスの動作にとって重要でない機能とサービスは、デフォルトで無効にするべきです。
- WAN 側の管理はデフォルトで無効にするべきです。
- TLS/SSL 暗号化などの最新のセキュリティ機能をサポートし、それらの機能が正しく実装されていることを確認します。
- ユーザーの入力は一切信用しないようにします。
- サードパーティのコードを常に最新の状態にしておきます。
- 統合したコードを監査するか、十分に理解します。
- 情報がなく、よくわからない診断機能やログイン情報は使用しないようにします。
発見された脆弱性は、これらのカテゴリのいずれかに該当します。コードの品質は常に懸念事項であり、開発中は安全な関数を使用するよう徹底する必要があります。理想的な方法は、開発中に静的な解析ツールを使用することですが、消費者価格を低く抑えたい多くの製品にとっては予算的に難しいかもしれません。その場合は、コンパイラの警告に注意するなどの方法で、できるだけ高いコード品質を確保します。
開発プロセスを変更するだけでも、コード品質の問題による最悪の影響の大半を軽減できます。最も明白な脆弱性の 1 つであるメモリ破損は、メモリセーフな言語(Rust や Go)を使用することで緩和できます。メモリセーフな言語を使用できない場合は、コンパイラベースと OS ベースの両方で、できるだけ多くの緩和策を導入する必要があります。緩和策の例としては、実行不可能なスタックや ASLR(アドレス空間配置のランダム化)などがあります。
次に有用な変更は、ユーザー操作の境界を定義することです。一般的な文字列は、解析やアクセス制御の適用が難しいとされていますが、明確に定義された API の境界を使用することで、ユーザーのリクエストと入力を検証しやすくなります。この境界は、悪意のあるユーザーが任意のコマンドを実行したり、予期しない動作につながる入力を提供したりするのを防ぐためのアクセス制御リストとしても機能します。
こうしたデバイスを使用しているユーザーが講じることのできる最も重要なセキュリティ対策は、デバイス上に存在する各サービスを評価することです。個々のデバイスが日常的に動作するうえで実行中の各サービスが必要なのかを確認し、不要なサービスはすべて無効にします。サービスを無効にできない場合は、最小限のアクセスに徹底的に制限するか、代替手段(トラフィックをブロックするファイアウォールルールなど)を用いて完全にブロックする必要があります。可能であればデバイスの購入プロセス中に基本的な調査を行い、正常で安全なデバイスのデフォルト設定が有効になっていることを確認するようにしてください。たとえば、リモートアクセスと管理には暗号化プロトコルを使用するといったことです。購入前であっても、ルータのユーザーマニュアルを熟読して評価を始めてください。ユーザーマニュアルにデバイスの機能がどの程度詳しく記載されているかは、往々にして製品全体の品質を示しています。
SOHO ルータのセキュリティ態勢が全般的に改善されてきている一方、多くの場合、低コストの緩和策を導入することによりセキュリティ態勢が劇的に向上するというメリットを得られます。Talos はここ数年間で、13 機種の SOHO ルータおよび産業用ルータと 6 つの共通フレームワークにおいて 289 件の CVE を対象とした 141 件のアドバイザリを発表しました。シスコのお客様を保護するという使命が、常に Talos の脆弱性調査の原動力となっていますが、調査対象のすべてのデバイスのセキュリティを向上させることも目指しているところです。すべての調査内容は、シスコの脆弱性開示ポリシーに従ってベンダーに報告した後、一般に公開されています。情報開示はそのまま脆弱性の修正につながり、脆弱性のあるデバイスを使用しているすべてのユーザーのセキュリティ態勢が改善されます。
脆弱性リスト
このブログ記事では各ルータの概要を説明し、一部の脆弱性を取り上げています。以下は、VPNFilter を発見した後に Talos が公開したすべてのアドバイザリのリストです。
Talos ID(レポートにリンク) | CVE | 製品 |
TALOS-2022-1511 | CVE-2022-26376 | Asuswrt および Asuswrt-Merlin New Gen |
TALOS-2022-1592 | CVE-2022-38393 | Asus RT-AX82U |
TALOS-2022-1590 | CVE-2022-38105 | Asus RT-AX82U |
TALOS-2022-1586 | CVE-2022-35401 | Asus RT-AX82U |
TALOS-2021-1361 | CVE-2021-21913 | D-Link DIR3040 |
TALOS-2021-1285 | CVE-2021-21820 | D-Link DIR3040 |
TALOS-2021-1284 | CVE-2021-21819 | D-Link DIR3040 |
TALOS-2021-1283 | CVE-2021-21818 | D-Link DIR3040 |
TALOS-2021-1282 | CVE-2021-21817 | D-Link DIR3040 |
TALOS-2021-1281 | CVE-2021-21816 | D-Link DIR3040 |
TALOS-2022-1510 | CVE-2022-27631 | DD-WRT |
TALOS-2022-1642 | CVE-2022-38451 | FreshTomato |
TALOS-2022-1641 | CVE-2022-42484 | FreshTomato |
TALOS-2022-1509 | CVE-2022-28664 – CVE-2022-28665 | FreshTomato |
TALOS-2022-1523 | CVE-2022-25932 | InHand Networks InRouter302 |
TALOS-2022-1522 | CVE-2022-29888 | InHand Networks InRouter302 |
TALOS-2022-1521 | CVE-2022-28689 | InHand Networks InRouter302 |
TALOS-2022-1520 | CVE-2022-26023 | InHand Networks InRouter302 |
TALOS-2022-1519 | CVE-2022-30543 | InHand Networks InRouter302 |
TALOS-2022-1518 | CVE-2022-29481 | InHand Networks InRouter302 |
TALOS-2022-1501 | CVE-2022-26518 | InHand Networks InRouter302 |
TALOS-2022-1500 | CVE-2022-26075 | InHand Networks InRouter302 |
TALOS-2022-1499 | CVE-2022-26420 | InHand Networks InRouter302 |
TALOS-2022-1496 | CVE-2022-27172 | InHand Networks InRouter302 |
TALOS-2022-1495 | CVE-2022-26510 | InHand Networks InRouter302 |
TALOS-2022-1481 | CVE-2022-26780 – CVE-2022-26782 | InHand Networks InRouter302 |
TALOS-2022-1478 | CVE-2022-26042 | InHand Networks InRouter302 |
TALOS-2022-1477 | CVE-2022-25995 | InHand Networks InRouter302 |
TALOS-2022-1476 | CVE-2022-26002 | InHand Networks InRouter302 |
TALOS-2022-1475 | CVE-2022-26007 | InHand Networks InRouter302 |
TALOS-2022-1474 | CVE-2022-26020 | InHand Networks InRouter302 |
TALOS-2022-1473 | CVE-2022-26085 | InHand Networks InRouter302 |
TALOS-2022-1472 | CVE-2022-21182 | InHand Networks InRouter302 |
TALOS-2022-1471 | CVE-2022-24910 | InHand Networks InRouter302 |
TALOS-2022-1470 | CVE-2022-25172 | InHand Networks InRouter302 |
TALOS-2022-1469 | CVE-2022-21238 | InHand Networks InRouter302 |
TALOS-2022-1468 | CVE-2022-21809 | InHand Networks InRouter302 |
TALOS-2019-0776 | CVE-2019-5017 | KCodes NetUSB.ko |
TALOS-2019-0775 | CVE-2019-5016 | KCodes NetUSB.ko |
TALOS-2018-0625 | CVE-2018-3953 – CVE-2018-3955 | Linksys E シリーズ |
TALOS-2023-1723 | CVE-2023-25582 – CVE-2023-25583 | Milesight UR32L |
TALOS-2023-1718 | CVE-2023-24019 | Milesight UR32L |
TALOS-2023-1716 | CVE-2023-25081 – CVE-2023-25124 | Milesight UR32L |
TALOS-2023-1715 | CVE-2023-24018 | Milesight UR32L |
TALOS-2023-1714 | CVE-2023-22653 | Milesight UR32L |
TALOS-2023-1713 | CVE-2023-24595 | Milesight UR32L |
TALOS-2023-1712 | CVE-2023-22299 | Milesight UR32L |
TALOS-2023-1711 | CVE-2023-22365 | Milesight UR32L |
TALOS-2023-1710 | CVE-2023-24582 – CVE-2023-24583 | Milesight UR32L |
TALOS-2023-1706 | CVE-2023-24519 – CVE-2023-24520 | Milesight UR32L |
TALOS-2023-1705 | CVE-2023-23546 | Milesight UR32L |
TALOS-2023-1699 | CVE-2023-22659 | Milesight UR32L |
TALOS-2023-1698 | CVE-2023-22306 | Milesight UR32L |
TALOS-2023-1697 | CVE-2023-23902 | Milesight UR32L |
TALOS-2023-1696 | CVE-2023-23571 | Milesight UR32L |
TALOS-2023-1695 | CVE-2023-23547 | Milesight UR32L |
TALOS-2023-1694 | CVE-2023-23550 | Milesight UR32L |
TALOS-2023-1704 | CVE-2023-24496 – CVE-2023-24497 | MilesightVPN |
TALOS-2023-1703 | CVE-2023-22371 | MilesightVPN |
TALOS-2023-1702 | CVE-2023-23907 | MilesightVPN |
TALOS-2023-1701 | CVE-2023-22319 | MilesightVPN |
TALOS-2023-1700 | CVE-2023-22844 | MilesightVPN |
TALOS-2022-1598 | CVE-2022-38458 | Netgear Orbi Router RBR750 |
TALOS-2022-1597 | CVE-2022-36429 | Netgear Orbi Satellite RBS750 |
TALOS-2022-1596 | CVE-2022-37337 | Netgear Orbi Router RBR750 |
TALOS-2022-1595 | CVE-2022-38452 | Netgear Orbi Router RBR750 |
TALOS-2019-0893 | CVE-2019-5101 – CVE-2019-5102 | OpenWrt |
TALOS-2022-1580 | CVE-2022-34845 | Robustel R1510 |
TALOS-2022-1579 | CVE-2022-33897 | Robustel R1510 |
TALOS-2022-1578 | CVE-2022-34850 | Robustel R1510 |
TALOS-2022-1577 | CVE-2022-33150 | Robustel R1510 |
TALOS-2022-1576 | CVE-2022-32765 | Robustel R1510 |
TALOS-2022-1575 | CVE-2022-35261-CVE-2022-35271 | Robustel R1510 |
TALOS-2022-1573 | CVE-2022-33325-CVE-2022-33329 | Robustel R1510 |
TALOS-2022-1572 | CVE-2022-33312-CVE-2022-33314 | Robustel R1510 |
TALOS-2022-1571 | CVE-2022-28127 | Robustel R1510 |
TALOS-2022-1570 | CVE-2022-32585 | Robustel R1510 |
TALOS-2018-0756 | CVE-2018-4072 – CVE-2018-4073 | Sierra Wireless AirLink |
TALOS-2018-0755 | CVE-2018-4070 – CVE-2018-4071 | Sierra Wireless AirLink |
TALOS-2018-0754 | CVE-2018-4069 | Sierra Wireless AirLink |
TALOS-2018-0753 | CVE-2018-4068 | Sierra Wireless AirLink |
TALOS-2018-0752 | CVE-2018-4067 | Sierra Wireless AirLink |
TALOS-2018-0751 | CVE-2018-4066 | Sierra Wireless AirLink |
TALOS-2018-0750 | CVE-2018-4065 | Sierra Wireless AirLink |
TALOS-2018-0749 | CVE-2018-4064 | Sierra Wireless AirLink |
TALOS-2018-0748 | CVE-2018-4063 | Sierra Wireless AirLink |
TALOS-2018-0747 | CVE-2018-4062 | Sierra Wireless AirLink |
TALOS-2018-0746 | CVE-2018-4061 | Sierra Wireless AirLink |
TALOS-2022-1640 | CVE-2022-42490-CVE-2022-42493 | Siretta QUARTZ-GOLD |
TALOS-2022-1639 | CVE-2022-41991 | Siretta QUARTZ-GOLD |
TALOS-2022-1638 | CVE-2022-40222 | Siretta QUARTZ-GOLD |
TALOS-2022-1637 | CVE-2022-41154 | Siretta QUARTZ-GOLD |
TALOS-2022-1615 | CVE-2022-38066 | Siretta QUARTZ-GOLD |
TALOS-2022-1613 | CVE-2022-40985-CVE-2022-41030 | Siretta QUARTZ-GOLD |
TALOS-2022-1612 | CVE-2022-40220 | Siretta QUARTZ-GOLD |
TALOS-2022-1611 | CVE-2022-39045 | Siretta QUARTZ-GOLD |
TALOS-2022-1610 | CVE-2022-38715 | Siretta QUARTZ-GOLD |
TALOS-2022-1609 | CVE-2022-38088 | Siretta QUARTZ-GOLD |
TALOS-2022-1608 | CVE-2022-38459 | Siretta QUARTZ-GOLD |
TALOS-2022-1607 | CVE-2022-40969 | Siretta QUARTZ-GOLD |
TALOS-2022-1606 | CVE-2022-40701 | Siretta QUARTZ-GOLD |
TALOS-2022-1605 | CVE-2022-36279 | Siretta QUARTZ-GOLD |
TALOS-2020-1064 | None (Cloud) | Synology QuickConnect |
TALOS-2020-1060 | None (Cloud) | Synology QuickConnect |
TALOS-2020-1087 | CVE-2020-27659-CVE-2020-27660 | Synology SRM |
TALOS-2020-1086 | CVE-2020-27658 | Synology SRM |
TALOS-2020-1071 | CVE-2020-27656-CVE-2020-27657 | Synology SRM |
TALOS-2020-1066 | CVE-2020-27655 | Synology SRM |
TALOS-2020-1065 | CVE-2020-27654, CVE-2020-11117 | Synology SRM |
TALOS-2020-1061 | CVE-2020-27652-CVE-2020-27653 | Synology SRM |
TALOS-2020-1059 | CVE-2020-27650-CVE-2020-27651 | Synology SRM |
TALOS-2020-1058 | CVE-2020-27648-CVE-2020-27649 | Synology SRM |
TALOS-2020-1051 | CVE-2019-11823 | Synology SRM |
TALOS-2022-1507 | CVE-2022-26346 | TCL LinkHub Mesh Wifi |
TALOS-2022-1506 | CVE-2022-27178 | TCL LinkHub Mesh Wifi |
TALOS-2022-1505 | CVE-2022-27185 | TCL LinkHub Mesh Wifi |
TALOS-2022-1504 | CVE-2022-27630 | TCL LinkHub Mesh Wifi |
TALOS-2022-1503 | CVE-2022-27633 | TCL LinkHub Mesh Wifi |
TALOS-2022-1502 | CVE-2022-27660 | TCL LinkHub Mesh Wifi |
TALOS-2022-1484 | CVE-2022-26342 | TCL LinkHub Mesh Wifi |
TALOS-2022-1483 | CVE-2022-26009 | TCL LinkHub Mesh Wifi |
TALOS-2022-1482 | CVE-2022-25996 | TCL LinkHub Mesh Wifi |
TALOS-2022-1463 | CVE-2022-24005 – CVE-2022-24029 | TCL LinkHub Mesh Wifi |
TALOS-2022-1462 | CVE-2022-23103 | TCL LinkHub Mesh Wifi |
TALOS-2022-1459 | CVE-2022-22144 | TCL LinkHub Mesh Wifi |
TALOS-2022-1458 | CVE-2022-22140 | TCL LinkHub Mesh Wifi |
TALOS-2022-1457 | CVE-2022-21178 | TCL LinkHub Mesh Wifi |
TALOS-2022-1456 | CVE-2022-21201 | TCL LinkHub Mesh Wifi |
TALOS-2022-1455 | CVE-2022-23918 – CVE-2022-23919 | TCL LinkHub Mesh Wifi |
TALOS-2022-1454 | CVE-2022-23399 | TCL LinkHub Mesh Wifi |
TALOS-2018-0620 | CVE-2018-3951 | TP-Link TL-R600VPN |
TALOS-2018-0619 | CVE-2018-3950 | TP-Link TL-R600VPN |
TALOS-2018-0618 | CVE-2018-3949 | TP-Link TL-R600VPN |
TALOS-2018-0617 | CVE-2018-3948 | TP-Link TL-R600VPN |
TALOS-2021-1321 | CVE-2021-21749 | ZTE MF971R |
TALOS-2021-1320 | CVE-2021-21748 | ZTE MF971R |
TALOS-2021-1319 | CVE-2021-21747 | ZTE MF971R |
TALOS-2021-1318 | CVE-2021-21746 | ZTE MF971R |
TALOS-2021-1317 | CVE-2021-21745 | ZTE MF971R |
TALOS-2021-1316 | CVE-2021-21744 | ZTE MF971R |
TALOS-2021-1313 | CVE-2021-21743 | ZTE MF971R |
本稿は 2023 年 08 月 02 日に Talos Group のブログに投稿された「The many vulnerabilities Talos discovered in SOHO and industrial wireless routers post-VPNFilter」の抄訳です。