Talos では、リモートで任意コードが実行される脆弱性や、DoS 攻撃につながる脆弱性など、Insteon Hub で新たに発見された 12 件の脆弱性を公開しました。大部分の脆弱性は strcpy() 関数の安全でない用法(スタック オーバーフローやグローバル オーバーフローを引き起こす)に根本的な原因があります。
概要
Insteon Hub はセントラル コントローラです。エンドユーザがスマートフォンから接続することで、自宅のデバイスを遠隔管理できます。インターネットを介したリモート接続を実現するため、Insteon Hubでは「PubNub」と呼ばれるオンライン サービスを利用しています。
エンドユーザーは、スマートフォンに「Insteon for Hub」アプリをインストールします。アプリと Insteon Hub の双方には、PubNub ソフトウェア開発キット(SDK)が含まれています。この SDK は、PubNub の REST API を使用した双方向通信を可能にします。
特に明記しない限り、脆弱性はすべて Insteon Hub 2245-222(ファームウェア バージョン 1012)で発見されたものです。ファームウェア バージョン 1016 以降は各脆弱性が修正されていますが、これより前のバージョンは脆弱です。
TALOS-2017-0483:スタック オーバーフローによりリモートで任意コードが実行される脆弱性(メッセージ ハンドラ内に複数発見)
PubNub サービスを通じて送信されたコマンドをデバイスが処理する方法には、エクスプロイト可能なバッファ オーバーフローの脆弱性が存在します。これは、細工されたコマンドにより引き起こされるスタックベースのバッファ オーバーフローです。JSON 要求の処理では strcpy() 関数が使用されているため、結果的に任意のデータで上書きされる危険性があります。攻撃者がこのようなコマンドを送信するには、PubNub サービス内で認証されている必要があります。
注:CVE 規則では、個別に修正可能な脆弱性に対して個々の CVE コードを割り当てる必要があります。
CVE:CVE-2017-16252 ~ CVE-2017-16337
テクニカル アドバイザリの全文は、こちらをご覧ください。
TALOS-2017-0484:グローバル オーバーフローに起因して、リモートで任意コードが実行される脆弱性(メッセージ ハンドラ内に複数発見)
PubNub サービスを通じて送信されたコマンドをデバイスが処理する方法には、エクスプロイト可能なバッファ オーバーフローの脆弱性が存在します。これは、細工されたコマンドによりグローバル セクション内で引き起こされるバッファ オーバーフローです。JSON 要求の処理では strcpy() 関数が使用されているため、結果的に任意のデータで上書きされる危険性があります。攻撃者がこのようなコマンドを送信するには、PubNub サービス内で認証されている必要があります。
CVE:CVE-2017-16338、CVE-2017-16339、CVE-2017-16340、CVE-2017-16341、CVE-2017-16342、CVE-2017-16343、CVE-2017-16344、CVE-2017-16345、CVE-2017-16346、CVE-2017-16347
テクニカル アドバイザリの全文は、こちらをご覧ください。
TALOS-2017-0485:再起動タスクが実行される危険性を伴う、DoS の脆弱性
デバイスのファームウェアには、エクスプロイト可能な DoS の脆弱性が存在します。これにより、攻撃者は認証なしでデバイスを任意に再起動できる可能性があります。本脆弱性をエクスプロイトするには、UDP パケットを送信する必要があります。
CVE:CVE-2017-16348
テクニカル アドバイザリの全文は、こちらをご覧ください。
TALOS-2017-0492:ファームウェア更新時に情報漏えいを引き起こす脆弱性(HTTPExecuteGet 関数内に発見)
HTTP サーバ実装の欠陥により、指定された GET パラメータの数が誤ってチェックされます。このためデバイスのメモリ上で(攻撃者の指定する)任意情報が漏えいする危険性があります。攻撃者がこのようなコマンドを送信するには、PubNub サービス内で認証されている必要があります。
CVE:CVE-2017-14443
テクニカル アドバイザリの全文は、こちらをご覧ください。
TALOS-2017-0493:ファームウェアの更新時に URL パラメータ コードが実行される脆弱性(HTTPExecuteGet 関数内に発見)
HTTP サーバ実装の欠陥により、ファームウェアの更新要求中に URL パラメータが正しく処理されません。このためグローバル セクションでバッファ オーバーフローが発生します。ベンダーが使用するライブラリは、バッファ オーバーフローに対してある程度の保護効果があります。ただし TALOS-2017-0492 の脆弱性が利用されると、こうした保護効果を回避して任意コードを実行される危険性があります。攻撃者がこのようなコマンドを送信するには、PubNub サービス内で認証されている必要があります。
CVE:CVE-2017-14444
テクニカル アドバイザリの全文は、こちらをご覧ください。
TALOS-2017-0494:ファームウェアの更新時にホスト パラメータが適切に処理されないことに起因する、バッファ オーバーフローの脆弱性(HTTPExecuteGet 関数内に発見)
HTTP サーバ実装の欠陥により、ファームウェアの更新要求中にホスト パラメータが正しく処理されません。このためグローバル セクションでバッファ オーバーフローが発生します。ベンダーが使用するライブラリは、バッファ オーバーフローに対してある程度の保護効果を発揮しますが、今回のケースでは保護効果が不十分です。攻撃者がこのようなコマンドを送信するには、PubNub サービス内で認証されている必要があります。
CVE:CVE-2017-14445
テクニカル アドバイザリの全文は、こちらをご覧ください。
TALOS-2017-0495:HTTPExecuteGet 関数内で発見された、パラメータ抽出コードが実行される脆弱性
HTTP サーバ実装の欠陥により、クエリ文字列からパラメータが安全でない方法で抽出されます。このため、スタックベースのバッファ オーバーフローを引き起こします。この脆弱性は、引数の抽出時にサイズ制限が考慮されないことに起因します。攻撃者がこのようなコマンドを送信するには、PubNub サービス内で認証されている必要があります。
CVE:CVE-2017-14446
テクニカル アドバイザリの全文は、こちらをご覧ください。
TALOS-2017-0496:Insteon Hub PubNub のアドバタイジング チャネル向けメッセージ ハンドラで確認された、任意コードが実行される脆弱性
アドバタイジング チャネル向けの PubNub メッセージ ハンドラには、エクスプロイト可能なバッファ オーバーフローの脆弱性が存在します。細工されたコマンドが PubNub サービスを介して送信されると、スタックベースのバッファ オーバーフローが引き起こされ、任意のデータで上書きされる危険性があります。攻撃者がこのようなコマンドを送信するには、PubNub サービス内で認証されている必要があります。
CVE:CVE-2017-14447
テクニカル アドバイザリの全文は、こちらをご覧ください。
TALOS-2017-0502:Insteon Hub PubNub の制御チャネル向けメッセージ ハンドラで確認された、任意コードが実行される脆弱性
Hub が PubNub からの応答を処理する方法には、エクスプロイト可能なバッファ オーバーフローの脆弱性が存在します。グローバル セクションを任意のデータで上書きされる危険性があります。この脆弱性を引き起こすには、PubNub を偽装し、HTTPS GET 要求に応答する必要があります。
CVE:CVE-2017-14452、CVE-2017-14453、CVE-2017-14454、CVE-2017-14455
テクニカル アドバイザリの全文は、こちらをご覧ください。
TALOS-2018-0511:ファームウェアの更新時に、Insteon Hub PubNub で任意の MPFS バイナリがアップロードされる脆弱性
HTTP サーバ実装の欠陥により、任意の MPFS バイナリがアップロードされる危険性があります。隠れたリソースへのアクセスを可能にするようバイナリが改ざんされていると、未署名のファームウェア イメージがデバイスにアップロードされるおそれがあります。本脆弱性を引き起こすには、”/mpfsupload” HTTP 形式で MPFS バイナリをアップロードし、後で POST 要求を介してファームウェアを「firmware.htm」にアップロードできるクレデンシャルが必要です。
本脆弱性は、ファーム ウェアバージョン 1013 で検出されました。
CVE:CVE-2018-3832
テクニカル アドバイザリの全文は、こちらをご覧ください。
TALOS-2018-0512:Insteon Hub PubNub ファームウェアがダウングレードされる脆弱性
Insteon Hub(ファームウェア バージョン1013)には、ファームウェアのダウングレードを許す、エクスプロイト可能な脆弱性が存在します。ファームウェアのアップグレードは PubNub サービスを介して開始されます。この際に、暗号化されてない HTTP 要求を使用して署名付きのファームウェア バイナリを取得します。インストールされるファームウェア バージョンがデバイス側で確認されないため、以前のファームウェア イメージであっても MCU にフラッシュされる可能性があります。この脆弱性をエクスプロイトするには、リモート サーバ「cache.insteon.com」を偽装し、署名されたファームウェア イメージ(バージョンは問わず)をそこから配信する必要があります。
CVE:CVE-2018-3833
テクニカル アドバイザリの全文は、こちらをご覧ください。
TALOS-2018-0513:Insteon Hub PubNub のファームウェア アップグレード プロセスで確認された、永続的被害を引き起こす DoS の脆弱性
Insteon Hub(ファームウェア バージョン1013)には、永続的被害を引き起こす、エクスプロイト可能な DoS の脆弱性が存在します。ファームウェアのアップグレードは PubNub サービスを介して開始されます。この際に、暗号化されてない HTTP 要求を使用して署名付きのファームウェア バイナリを取得します。インストールされるファームウェア イメージの種類はデバイス側で確認されないため、署名されたファームウェアであれば種類を問わず MCU にフラッシュできます。デバイスには互換性のない各種の MCU が含まれているため、いずれかの MCU に不適切なファームウェアがフラッシュされると、デバイス自体が永久に使用不可能となる危険性があります。この脆弱性をエクスプロイトするには、リモート サーバ「cache.insteon.com」を偽装し、署名されたファームウェア イメージをそこから配信する必要があります。
CVE:CVE-2018-3834
テクニカル アドバイザリの全文は、こちらをご覧ください。
ディスカッション
IoT デバイスに関するこれまでの脆弱性調査(Foscam C1 の脆弱性、「Circle with Disney」で特定された脆弱性)では、 この種のデバイスの多くが脆弱性を抱えていることが判明しています。
Insteon Hub PubNub でも複数の脆弱性が発見されており、一部にはリモートで任意コードが実行される危険性もあります。ただし、これらの脆弱性をエクスプロイトするには一定の特権が必要です。いくつかの脆弱性では、エクスプロイトする上で PubNub ポータルへの認証が必要となります。中間者攻撃を実行できる特権が必要な脆弱性もあります。また、デバイス側で HTTP リクエストのサイズが制限されていることも脆弱性の緩和に役立っています。HTTP リクエストのサイズ制限は、脆弱性の 1 つで効果が実証済みです。
カバレッジ
この悪意ある試行は、以下の Snort ルールにより検出可能です。今後、脆弱性に関する新たな情報が追加されるまでの間は、ルールが追加されたり、現行のルールが変更されたりする場合がありますのでご注意ください。最新ルールの詳細については、Firepower Management Center、FireSIGHT Management Center、または Snort.org を参照してください。
Snort ルール:45441、45422、44863、45049、45086、45087、44863、45088
本稿は 2018年6月19日に Talos Group のブログに投稿された「Vulnerability Spotlight: Multiple Remote Vulnerabilities In Insteon Hub PubNub」の抄訳です。