Cisco Japan Blog

注目の脆弱性:Samsung SmartThings Hub における複数の脆弱性

2 min read



エグゼクティブ サマリー

Cisco Talos では最近、Samsung SmartThings Hub のファームウェア内に複数の脆弱性を発見しました。各脆弱性は Cisco Talos が定めた責任ある開示方針に従って Samsung 社に開示されており、問題を修正したファームウェアpopup_icon提供されるようpopup_icon同社と協力してきました。これらの脆弱性を利用して、攻撃者は対象デバイス上で OS コマンドまたはその他の任意のコードを実行する可能性があります。

SmartThings Hub は、スマート ホームで一般的な各種 Internet of Things(IoT)デバイスを一元管理できるコントローラです。それらのデバイスには、スマート プラグ、LED 電球、サーモスタット、カメラなどpopup_iconが含まれます。つまり SmartThings Hub を利用すれば、スマートフォンを使用してこれらのデバイスにリモート接続し、管理できます。SmartThings Hub で実行されるファームウェアは Linux ベースで、Ethernet、Zigbee、Z-wave、Bluetooth などの規格を介して IoT デバイスと通信できます。

これらのデバイスは機密情報を頻繁に収集するため、デバイスの脆弱性がエクスプロイトされると、機密情報へのアクセスや、家庭内のデバイスの監視や制御などの不正アクティビティを許す危険性があります。以下は不正アクティビティの例です。

  • SmartThings Hub によって制御されるスマート ロックが解除され、家屋への物理的アクセスを許す
  • 家庭内に配置されたカメラを使用して、住人がリモートで監視される
  • ホーム警報システムで使用されるモーション検出機能が無効にされる
  • スマート プラグが制御され、Hub に接続された各種デバイスがオン/オフされる
  • 権限のない攻撃者によりエアコンが制御される
  • スマート ホーム/スマート プラグに接続された家電などが、攻撃により物理的に損傷する

スマート デバイスの導入は広範囲に渡るため、上のシナリオはごく一例です。Cisco Talos では、該当する SmartThings Hub を必ず最新バージョンのファームウェアに更新し、これらの脆弱性に確実に対処することをお勧めします。

エクスプロイト

Talos は Samsung SmartThings Hub において合計 20 件の脆弱性を検出しました。脆弱性をエクスプロイトするのに必要なアクセス レベルはそれぞれ異なります。脆弱性により攻撃者が得られるアクセス レベルも同様です。単独ではエクスプロイトが難しい脆弱性もありますが、組み合わされるとデバイスへの重大な攻撃につながる危険性があります。このセクションでは、3 種類の脆弱性を連鎖させることでデバイスを完全に制御できる方法について説明します。記事の後半では 20 件の脆弱性すべてについて説明します。

連鎖

複数の脆弱性を組み合わせることで、単独の脆弱性ではエクスプロイト不可能なバグでもエクスプロイト可能になります。これを一般に「連鎖」と呼びます。脆弱性の重大度を検討する際は、脆弱性が連鎖の一部として使用される可能性があることを念頭に置いておくことが不可欠です。連鎖は脆弱性の重大度を大幅に高めるからです。

今回は、注目すべき連鎖を 3 件特定しました。そのうち 3 件目の連鎖では、事前認証なくリモートでデバイスを侵害できる可能性があります。

A

任意コードのリモート実行:TALOS-2018-0556 は、デバイス内部のデータベースに対して任意の SQL クエリを実行可能にする「post-auth」の脆弱性です。この脆弱性単体では、データベース全体の変更のみが可能です。しかし、一連のメモリ破壊の脆弱性(TALOS-2018-0557、TALOS-2018-0576、TALOS-2018-0581、TALOS-2018-0583)を組み合わせることで、攻撃者が任意の SQL クエリを実行できる限り、任意コードを実行できるようになります。これは TALOS-2018-0556 の脆弱性で、連鎖によりネットワークから任意コードを実行される危険性があります。ただし脆弱性の他の組み合わせも可能なため、この一覧はごく一例です。

B

リモート情報漏えい:前述した TALOS-2018-0556 の脆弱性は、デバイス内の任意の場所に空のファイルを作成する目的でもエクスプロイトできます。「/hub/data/hubcore/stZigbee」のパスに空のファイルが存在すると「hubCore」プロセスがクラッシュします(TALOS-2018-0593)。また、「hubCore」プロセスがクラッシュする際に、ネットワーク上で情報が漏えいする脆弱性も引き起こします(TALOS-2018-0594)。これら 3 件の脆弱性を順番に連鎖することで、「hubCore」プロセスのメモリダンプを取得できます。メモリダンプには、Hub の中核的なロジックの大部分、すなわち機密情報が含まれています。

C

事前認証なくリモートでコードを実行可能:TALOS-2018-0578 の脆弱性では、内部の「video-core」プロセスに対して、部分的に制御された HTTP 要求を事前認証なくネットワークからインジェクトできます。この HTTP 要求は、TALOS-2018-0577 における脆弱性の連鎖(3 件の CVE を同時にエクスプロイト)により、制御範囲を拡大できます。TALOS-2018-0577 の脆弱性では、HTTP パイプライン処理時にバグをエクスプロイトすることで、HTTP 要求のメソッド、パス、およびボディの各部を変更できます。最後に、TALOS-2018-0573 の脆弱性でこの連鎖は終了します。この脆弱性では、ローカル HTTP 要求を「video-core」プロセスに送信することで、スタック上のバッファ オーバーフローをエクスプロイトします。これら 3 件の脆弱性を連鎖させることで、事前認証なくデバイス情報をリモートで詐取できます。なお、連鎖の最終段階では、他の類似の脆弱性が利用される可能性もあります。その場合はエクスプロイトの難易度が上がるかもしれません。

攻撃元区分

「C」連鎖は事前認証なしでエクスプロイト可能です。しかし、「A」と「B」の各連鎖や、報告された脆弱性の多くでは、攻撃区分に応じて前提条件が異なります。

攻撃対象領域を把握する上で着目すべきなのは、SmartThings Hub と、通信相手のリモート サーバとの間に信頼関係が存在していることです。この信頼関係のため、スマートフォン アプリ経由でスマート ホームを遠隔で監視、管理できます。また、独自の機能を追加すれば、公式サポート外のデバイスでも Hub で使用できるようになります。

Talos が報告した脆弱性の中には、注目すべき攻撃区分がいくつか存在します。

X

有効な OAuth ベアラー トークンを保持しているか、またはそれを取得するための相対ユーザ名とパスワードのペアを把握していれば、認証されたユーザとして SmartThings リモート サーバと通信できます。この段階で、TALOS-2018-0539 で説明したように、報告されたバグのいくつかをエクスプロイトされる危険性があります。

Y

サードパーティの開発者が「SmartApp」アプリを作成することで、正体不明のハードウェアから Hub と透過的に通信できる可能性があります。この種の SmartApp はアプリ ストアで公開される場合も、開発者 Hub で限定公開される場合も想定されます。SmartApp はサポート対象外のハードウェアと通信するため、ネットワーク メッセージを何らかの方法で送信する必要があります。そこで SmartApp では、Hub に指示を送信し、ネットワーク接続を代理で確立させることができます。ネットワーク メッセージはリモートの SmartThings サーバ(SmartApp が実際に実行される場所)から Hub に送信されます。サーバ内部では、これらの接続が「hubCore」プロセスによって実行されます。

その際の副次的な影響により、localhost にバインドされたサービス(video-core など)に SmartApp がアクセスできるようになります。これは本来の設計に反しています。

このような SmartApp が存在すれば、「A」と「B」の各連鎖や「video-core」の脆弱性全般を認証なしでエクスプロイトできるようになります。ただし、カスタム SmartApp をデバイス上で有効化しておく必要があります。

Z

リモートの SmartThings サーバを装うことで、誰でも Hub 上の「hubCore」プロセスに介入できます。これは結果的に「video-core」プロセスが直接アクセスされ、任意のバグがエクスプロイトされる危険性があります。Hub と通信する SmartThings サーバは、本来であれば Hub 上で任意のコードを実行できません。これを裏付けているのは、ファームウェア更新パッケージが(同じ TLS 接続経由で送信されるにせよ)暗号化/認証されていることです。こうした更新パッケージは、別のより権限の高いマシンによってパッケージ化されたと考えられます。

脆弱性の詳細

Samsung SmartThings Hub/RTSP 構成のパスワード変更機能に起因する、任意コマンド注入の脆弱性(TALOS-2018-0539/CVE-2018-3856

Samsung SmartThings Hub を利用すれば、さまざまな IP カメラを登録・設定し、ビデオ ストリームを表示できます。Hub ではユーザがカメラのパスワードを変更することもできます。パスワードは「video-core」によって内部データベースに保存されます。カメラのビデオ フィードにアクセスすると、内部データベースから「camera-password」パラメータを取得し、このパラメータを基にカメラ上で「ffmpeg」コマンドが実行されます。攻撃者はパスワードにスペースを含めることで、自身が制御するコマンドラインから「ffmpeg」のバイナリを起動できる可能性があります。コマンドラインから任意のシステム コマンドが実行される危険性もあります。TALOS-2018-0539 の CVE 番号は CVE-2018-3856 です。詳細については、こちらpopup_iconからアドバイザリを参照してください。

Samsung SmartThings Hub/video-core プロセス内の samsungWifiScan ハンドラに存在する、任意コードが実行される脆弱性(TALOS-2018-0548/CVE-2018-3863 CVE-2018-3866

Hub で使用される「video-core」HTTP サーバの samsungWifiScan ハンドラ内に、バッファ オーバーフローの脆弱性が複数存在します。細工した複数の HTTP POST 要求が該当デバイスに送信されると、脆弱性がエクスプロイトされる危険性があります。脆弱性は、「/samsungWifiScan」に対する HTTP POST 要求の一部として送信されたユーザ制御 JSON が、SmartThings Hub で適切に処理されないことに起因します。脆弱性のトリガーには、「user」、「password」、「cameraIp」、「callbackUrl」の各キーの値が使用されます。これらのキー内のデータは、メモリ内で宛先バッファのサイズが確認されずに(strcpy を使用して)転送されるため、オーバーフローを引き起こします。TALOS-2018-0548 の CVE 番号は、CVE-2018-3863 ~ CVE-2018-3866 です。詳細については、こちらpopup_iconからアドバイザリを参照してください。

Samsung SmartThings Hub/video-core プロセス内の samsungWifiScan ハンドラに存在する、コールバック コードが実行される脆弱性(TALOS-2018-0549/CVE-2018-3867

Hub で使用される「video-core」HTTP サーバの Samsung WifiScan コールバック通知機能内に、エクスプロイト可能なバッファ オーバーフローの脆弱性が存在します。細工した複数の HTTP POST 要求が該当デバイスに送信されると、脆弱性がエクスプロイトされる危険性があります。この脆弱性は、スマート カメラ検出プロセス時にスマート カメラから受信した通信を、SmartThings Hub が適切に処理できないことに起因します。脆弱性のトリガーに使用できる HTTP サーバでは、細工した HTTP コンテンツを攻撃者がホストする可能性があります。SmartThings Hub は、スマート カメラを登録する間、指定したホストからこれらのコンテンツを取得しようとします。取得されたコンテンツは、宛先バッファのサイズが確認されずに「sprintf」経由で転送されます。この脆弱性がエクスプロイトされると、任意コードが実行される可能性があります。TALOS-2018-0549 の CVE 番号は CVE-2018-3867 です。詳細については、こちらpopup_iconからアドバイザリを参照してください。

Samsung SmartThings Hub/video-core プロセスによる videoHostUrl の誤処理に起因して credentials ハンドラ内に存在する、任意コードが実行される脆弱性(TALOS-2018-0554/CVE-2018-3872

「video-core」HTTP サーバ(SmartThings Hub で使用)の credentials ハンドラ内に、エクスプロイト可能なバッファ オーバーフローの脆弱性が複数存在します。細工した HTTP POST 要求が該当デバイスに送信されると、脆弱性がエクスプロイトされる危険性があります。この脆弱性は、「/credentials」に対する POST 要求の一部として送信されたユーザ制御 JSON が、SmartThings Hub で適切に処理されないことに起因します。脆弱性のトリガーには、「videoHostUrl」キーの値が使用されます。このキーに含まれるデータは、メモリ内で宛先バッファのサイズが確認されずに転送されるため、オーバーフローを引き起こします。TALOS-2018-0554 の CVE 番号は CVE-2018-3872 です。詳細については、こちらpopup_iconからアドバイザリを参照してください。

Samsung SmartThings Hub/video-core プロセス内の credentials ハンドラに存在する、任意コードが実行される脆弱性(TALOS-2018-0555/CVE-2018-3873 CVE-2018-3878

Hub で使用される「video-core」HTTP サーバの「credentials」ハンドラ内に、エクスプロイト可能なバッファ オーバーフローの脆弱性が複数存在します。細工した HTTP POST 要求が該当デバイスに送信されると、脆弱性がエクスプロイトされる危険性があります。これらの脆弱性は、「/credentials」に対する POST 要求の一部として送信されたユーザ制御 JSON が、SmartThings Hub で適切に処理されないことに起因します。脆弱性のトリガーには、「secretKey」、「accessKey」、「sessionToken」、「bucket」、「directory」、「region」の各キーの値が使用されます。これらのキー内のデータは、メモリ内で宛先バッファのサイズが確認されずに(strncpy を使用して)転送されるため、オーバーフローを引き起こします。TALOS-2018-0555 の CVE 番号は、CVE-2018-3873 ~ CVE-2018-3878 です。詳細については、こちらpopup_iconからアドバイザリを参照してください。

Samsung SmartThings Hub/video-core プロセスの不適切な解析方法により credentials ハンドラ内に存在する、SQL インジェクションの脆弱性(TALOS-2018-0556/CVE-2018-3879

SmartThings Hub に使用される「video-core」HTTP サーバの「credentials」ハンドラ内に、SQL 注入の脆弱性が存在します。細工した複数の HTTP POST 要求が該当デバイスに送信されると、脆弱性がエクスプロイトされる危険性があります。この脆弱性は、「/credentials」に対する POST 要求の一部として送信されたユーザ制御 JSON が、SmartThings Hub で適切に処理されないことに起因します。SmartThings Hub では、他のデバイスに接続するためのクレデンシャルを変更できます。クレデンシャルの変更プロセスでは HTTP POST 要求が使用されます。この要求には、クレデンシャルの変更に必要なすべてのパラメータから構成された JSON が含まれます。ただし JSON は内部 SQLite データベースへの格納前に適切にサニタイズされません。そのため、攻撃者が要求内に JSON と SQL の構文を含めることで、JSON インジェクションを引き起こせる可能性があります。これは SQL インジェクション攻撃につながります。TALOS-2018-0556 の CVE 番号は CVE-2018-3879 です。詳細については、こちらpopup_iconからアドバイザリを参照してください。

Samsung SmartThings Hub/video-core プロセス内のデータベース find-by-cameraId 機能に存在する、任意コードが実行される脆弱性(TALOS-2018-0557/CVE-2018-3880

Hub で使用される「video-core」HTTP サーバでは、データベースの find-by-cameraId 機能内に、エクスプロイト可能なバッファ オーバーフローの脆弱性が存在します。細工した HTTP 要求が該当デバイスに送信されると、脆弱性がエクスプロイトされる危険性があります。この脆弱性は、SQLite データベース内に存在するレコードが video-core プロセスによって適切に処理されないことに起因します。脆弱性をエクスプロイトするには、まず SQLite データベースの「camera table」にカメラを(過度に長いカメラ情報も加えて)追加します。その上で、登録したカメラを指定する細工した HTTP DELETE 要求を送信します。これによりバッファ オーバーフローが発生します。ここでバッファ オーバーフローが発生するのは、カメラのデータベース検索中にプルされるデータが無制限なためです。TALOS-2018-0557 の CVE 番号は CVE-2018-3880 です。詳細については、こちらpopup_iconからアドバイザリを参照してください。

Samsung SmartThings Hub/video-core プロセス内の clips ハンドラに存在する、任意コードが実行される脆弱性(TALOS-2018-0570/CVE-2018-3893 CVE-2018-3897

Hub で使用される「video-core」HTTP サーバの「/cameras/XXXX/clips」ハンドラ内に、エクスプロイト可能なバッファ オーバーフローの脆弱性が複数存在します。これらの脆弱性は、細工した HTTP POST 要求を対象デバイスに送信することでエクスプロイトできます。これらの脆弱性は、「/cameras/<camera-id>/clips」に対する POST 要求の一部として送信されたユーザ制御 JSON が、SmartThings Hub で適切に処理されないことに起因します。脆弱性のトリガーには、「captureTime」、「startTime」、「endTime」、「correlationId」、「callbackUrl」の各キーの値が使用されます。これらのキー内のデータは、メモリ内で宛先バッファのサイズが確認されずに(strncpy を使用して)転送されるため、オーバーフローを引き起こします。TALOS-2018-0570 の CVE 番号は、CVE-2018-3893 ~ CVE-2018-3897 です。詳細については、こちらpopup_iconからアドバイザリを参照してください。

Samsung SmartThings Hub/video-core プロセス内のカメラ URL 置換機能に存在する、任意コードが実行される脆弱性(TALOS-2018-0573/CVE-2018-3902

Hub で使用される「video-core」HTTP サーバのカメラ置換機能には、エクスプロイト可能なバッファ オーバーフローの脆弱性が存在します。細工した HTTP 要求が該当デバイスに送信されると、脆弱性がエクスプロイトされる危険性があります。この脆弱性は、「/cameras/<camera-id>」に対する HTTP PUT 要求の一部として送信されたユーザ制御 JSON が、SmartThings Hub で適切に処理されないことに起因します。脆弱性のトリガーには、「url」キーの値が使用されます。このキーに含まれるデータは、宛先バッファのサイズが確認されずに(memcpy を使用して)転送されるため、オーバーフローを引き起こします。TALOS-2018-0573 の CVE 番号は CVE-2018-3902 です。詳細については、こちらpopup_iconからアドバイザリを参照してください。

Samsung SmartThings Hub/video-core プロセス内のカメラ更新機能に存在する、任意コードが実行される脆弱性(TALOS-2018-0574/CVE-2018-3903 CVE-2018-3904

Hub で使用される「video-core」HTTP サーバのカメラ更新機能には、エクスプロイト可能なバッファ オーバーフローの脆弱性が複数存在します。細工した複数の HTTP 要求が該当デバイスに送信されると、これらの脆弱性がエクスプロイトされる危険性があります。これらの脆弱性は、「/cameras/<camera-id>」に対する PATCH 要求の一部として送信されたユーザ制御 JSON が、SmartThings Hub で適切に処理されないことに起因します。脆弱性のトリガーには、「url」または「state」キーの値が使用されます。これらのキーに含まれるデータは、宛先バッファのサイズが確認されずに(memcpy を使用して)転送されるため、オーバーフローを引き起こします。TALOS-2018-0574 の CVE 番号は、CVE-2018-3903 および CVE-2018-3904 です。詳細については、こちらpopup_iconからアドバイザリを参照してください。

Samsung SmartThings Hub/video-core プロセス内のカメラ作成機能に存在する、任意コードが実行される脆弱性(TALOS-2018-0575/CVE-2018-3905

Hub で使用される「video-core」HTTP サーバのカメラ作成機能には、エクスプロイト可能なバッファ オーバーフローの脆弱性が存在します。細工した HTTP 要求が該当デバイスに送信されると、脆弱性がエクスプロイトされる危険性があります。この脆弱性は、「/cameras」に対する POST 要求の一部として送信されたユーザ制御 JSON が、SmartThings Hub で適切に処理されないことに起因します。脆弱性のトリガーには、「state」キーの値が使用されます。このキーに含まれるデータは、宛先バッファのサイズが確認されずに(memcpy を使用して)転送されるため、オーバーフローを引き起こします。TALOS-2018-0575 の CVE 番号は CVE-2018-3905 です。詳細については、こちらpopup_iconからアドバイザリを参照してください。

Samsung SmartThings Hub/video-core プロセスの不適切なデータベース(shard.videoHostURL フィールド)処理に起因する、任意コードが実行される脆弱性(TALOS-2018-0576/CVE-2018-3906

Hub で使用される「video-core」HTTP サーバからの不適切なデータベース フィールドの取得方法により、エクスプロイト可能なスタック ベースのバッファ オーバーフロー脆弱性が存在します。細工した HTTP 要求が該当デバイスに送信されると、脆弱性がエクスプロイトされる危険性があります。この脆弱性は、「video-core」HTTP サーバが SQLite データベースから「shard.videoHostURL」フィールドを不適切に抽出し、スタック ベースのバッファ オーバーフロー状態を引き起こすことに起因します。脆弱性をエクスプロイトするには、SQLite データベース内でこれらのフィールドの値を変更する必要があります。エクスプロイトは TALOS-2018-0556 の脆弱性により可能になります。TALOS-2018-0576 の CVE 番号は CVE-2018-3906 です。詳細については、こちらpopup_iconからアドバイザリを参照してください。

Samsung SmartThings Hub/video-core プロセスの REST パーサー内に存在し、パイプライン化された HTTP 要求の不適切な処理に起因する、SQL インジェクションの脆弱性(TALOS-2018-0577/CVE-2018-3907 CVE-2018-3909

「video-core」HTTP サーバの REST パーサー内には、エクスプロイト可能な脆弱性が複数存在します。細工した複数の HTTP 要求が該当デバイスに送信されると、これらの脆弱性がエクスプロイトされる危険性があります。これらの脆弱性は、パイプライン化された HTTP 要求が Hub 内で適切に処理されないことに起因します。脆弱性により、HTTP 要求のメソッドとコンテンツが上書きされ、悪意のあるデータが注入される危険性があります。他の脆弱性との連鎖では、攻撃による影響が拡大するおそれがあります。TALOS-2018-0577 の CVE 番号は、CVE-2018-3907 ~ CVE-2018-3909 です。詳細については、こちらpopup_iconからアドバイザリを参照してください。

Samsung SmartThings Hub/hubCore プロセスによる 39500 番ポートのリッスンに起因する、HTTP ヘッダー インジェクションの脆弱性(TALOS-2018-0578/CVE-2018-3911

Hub と通信相手のリモート サーバとの間のコミュニケーションに、エクスプロイト可能な HTTP ヘッダー インジェクションの脆弱性が存在します。細工した HTTP 要求が該当デバイスに送信されると、脆弱性がエクスプロイトされる危険性があります。この脆弱性は、Hub 内の「hubCore」バイナリによって実行される JSON 処理に起因します。他の脆弱性と組み合わされた場合は、任意コードの実行を許す可能性もあります。TALOS-2018-0578 の CVE 番号は CVE-2018-3911 です。詳細については、こちらpopup_iconからアドバイザリを参照してください。

Samsung SmartThings Hub/video-core プロセスの不適切なデータベース(shard テーブル)処理に起因する、任意コードが実行される脆弱性(TALOS-2018-0581/CVE-2018-3912 CVE-2018-3917

Hub で使用される「video-core」HTTP サーバからの不適切なデータベース フィールドの取得方法により、エクスプロイト可能なスタック ベースのバッファ オーバーフロー脆弱性が複数存在します。細工した複数の HTTP 要求が該当デバイスに送信されると、これらの脆弱性がエクスプロイトされる危険性があります。これらの脆弱性は、「video-core」HTTP サーバが SQLite データベースから複数のフィールドを不適切に抽出し、スタック ベースのバッファ オーバーフロー状態を引き起こすことに起因します。脆弱性をエクスプロイトするには、SQLite データベース内でこれらのフィールドの値を変更する必要があります。エクスプロイトは TALOS-2018-0556 の脆弱性により可能になります。TALOS-2018-0581 の CVE 番号は、CVE-2018-3912 ~ CVE-2018-3917 です。詳細については、こちらpopup_iconからアドバイザリを参照してください。

Samsung SmartThings Hub/hubCore プロセスによる 39500 番ポートのリッスンと、不適切な「Sync」操作に起因する、Denial Of ServiceDoS)の脆弱性(TALOS-2018-0582/CVE-2018-3918

Samsung SmartThings Hub と通信相手のリモート サーバとの間のコミュニケーションに脆弱性が存在します。この脆弱性は、Hub で管理するカメラを特定する「sync」操作に起因します。細工した HTTP 要求が該当デバイスに送信されると、脆弱性がエクスプロイトされる危険性があります。適切な認証が行われないため、リモートの攻撃者は Hub とリモート サーバとの間の信頼関係を利用して、本来は Hub に管理されるべきカメラを削除できます。TALOS-2018-0582 の CVE 番号は CVE-2018-3918 です。詳細については、こちらpopup_iconからアドバイザリを参照してください。

Samsung SmartThings Hub/video-core プロセスの不適切なデータベース(clips テーブル)処理に起因する、任意コードが実行される脆弱性(TALOS-2018-0583/CVE-2018-3919

Hub で使用される「video-core」HTTP サーバからの不適切なデータベース フィールドの取得方法により、エクスプロイト可能なスタック ベースのバッファ オーバーフロー脆弱性が存在します。細工した HTTP 要求が該当デバイスに送信されると、脆弱性がエクスプロイトされる危険性があります。この脆弱性は、SQLite データベース内の「clips」テーブルから video-core サーバがフィールドを適切に処理・抽出しないことに起因します。TALOS-2018-0556 の脆弱性も組み合わさった場合、Hub で想定された最大サイズを超える「captureTime」値がテーブル内に挿入される可能性があります。その場合、サイズ制限が正しく適用されないため、バッファ オーバーフローが発生します。TALOS-2018-0583 の CVE 番号は CVE-2018-3919 です。詳細については、こちらpopup_iconからアドバイザリを参照してください。

Samsung SmartThings Hub video-core AWSELB クッキーのコードが実行される脆弱性(TALOS-2018-0591/CVE-2018-3925

Hub で使用される「video-core」HTTP サーバのリモート video-host コミュニケーション内に、エクスプロイト可能なバッファ オーバーフローの脆弱性が存在します。細工した HTTP 要求が該当デバイスに送信されると、脆弱性がエクスプロイトされる危険性があります。この脆弱性は、AWSELB クッキーの内容を video-core サーバが適切に処理できないことに起因します。リモート video-host サーバから取得されたクッキー値は、値の長さが確認されずに宛先バッファにコピーされるため、バッファ オーバーフロー状態を引き起こします。TALOS-2018-0591 の CVE 番号は CVE-2018-3925 です。詳細については、こちらpopup_iconからアドバイザリを参照してください。

Samsung SmartThings Hub hubCore ZigBee ファームウェアのアップデート CRC16 チェック Denial of ServiceDoS)の脆弱性(TALOS-2018-0593/CVE-2018-3926

Hub で使用される「hubCore」バイナリでは、ZigBee ファームウェアのアップデート プロセス内に、エクスプロイト可能な整数アンダーフローの脆弱性が存在します。アップデート プロセスで使用される「data」ディレクトリ内に細工したファイルが作成されると、無限ループが発生し、サービスのクラッシュが引き起こされる危険性があります。この脆弱性は、ZigBee ファームウェアのアップデートを Hub 上で実行した場合に発現する、アップデート プロセス内のロジック エラーが原因です。TALOS-2018-0556 の脆弱性との連鎖では、細工したファイルのアップロードにより無限ループが引き起こされ、最終的にクラッシュする可能性があります。TALOS-2018-0593 の CVE 番号は CVE-2018-3926 です。詳細については、こちらpopup_iconからアドバイザリを参照してください。

Samsung SmartThings Hub/hubCore バイナリに存在し、Google Breakpad/backtrace.io の不適切な用法に起因する、情報開示の脆弱性(TALOS-2018-0594/CVE-2018-3927

Hub で使用される「hubCore」バイナリの例外ハンドラには、エクスプロイト可能な情報開示の脆弱性が存在します。Hub では現在、クラッシュの発生時にミニダンプを作成する目的で Google Breakpad を利用しています。作成されたミニダンプは、分析のためリモート サービス(backtrace.io)に「curl」ユーティリティ経由で送信されます。このユーティリティでは、データ伝送用に「-k」スイッチを活用するように設定されています。ただしこの「-k」スイッチは安全ではないため、自己署名 SSL 証明書を使用するリモート サーバへの接続を許す可能性があります。攻撃者がリモート サーバを偽装することで、自己署名証明書を使用してミニダンプを傍受し、プロセスの機密データを抽出できる危険性があります。TALOS-2018-0594 の CVE 番号は CVE-2018-3927 です。詳細については、こちらpopup_iconからアドバイザリを参照してください。

テスト済みのバージョン

Talos では、Samsung SmartThings Hub の次のファームウェア バージョンをテストしました。

Samsung SmartThings Hub STH-ETH-250:ファームウェア バージョン 0.20.17

まとめ

SmartThings Hub などのデバイスの多くは、利便性や自動化などのメリットをもたらします。ただし、デバイスを安全に構成し、ファームウェアを最新状態に保つよう特に配慮する必要があります。スマート デバイスの用途は多岐にわたるため、デバイスへの攻撃が成功した場合の影響は深刻なものとなります。そのため、これらのデバイスはできるだけ早く更新することをお勧めします。Samsung 社のデバイスでは最新ファームウェアが自動的にインストールされるため、ほとんどの場合、手動操作は不要です。ただしデバイスの脆弱性を解消するため、最新バージョンが実際にインストールされていることを確認することが重要です。今回の脆弱性では、問題を修正したファームウェアがすでに Samsung 社からリリースされています。これらの脆弱性に関するアドバイザリは、こちらpopup_iconからご覧いただけます。

カバレッジ

この悪意ある試行は、以下の Snort ルールにより検出可能です。今後、脆弱性に関する新たな情報が追加されるまでの間は、ルールが追加されたり、現行のルールが変更されたりする場合がありますのでご注意ください。最新のルールの詳細については、Firepower Management Center または Snort.org を参照してください。

Snort ルール:45891、46079、46090、46149、46150 ~ 46155、46211、46217、46296、46319、46320、46321、46390 ~ 46392、46395、46543、46661

本稿は 2018年7月26日に Talos Grouppopup_icon のブログに投稿された「Vulnerability Spotlight: Multiple Vulnerabilities in Samsung SmartThings Hubpopup_icon」の抄訳です。

コメントを書く