LAC WATCH

セキュリティとITの最新情報

RSS

株式会社ラック

メールマガジン

サイバーセキュリティや
ラックに関する情報をお届けします。

サービス・製品 | 

ファームウェア更新機能が搭載されているだけでは安心できない!IoT機器のセキュリティを考える

こんにちは。疑似攻撃を用いて、調査対象に対して攻撃者の目的が達成できてしまうか実証する「ペネトレーションテスト」を提供している、デジタルペンテスト部の藤原です。

デジタルペンテスト部では、IoT機器やIoTシステムのセキュリティ対策の有効性や影響を検証する「IoTデバイスペネトレーションテスト」を提供しています。このサービスは、通信ネットワーク機器や車載ユニット、IoT Gateway、医療機器など、様々なIoT機器に対して実施しています。

今回はIoT機器のファームウェア更新機能が「搭載されている」ことではなく、「問題のない設計・実装により搭載されている」ことが重要というお話をしたいと思います。

ファームウェア更新機能は攻撃者の侵入ポイント

現在、IoT機器に対するセキュリティ基準が国内でも海外でも検討されています。そのセキュリティ基準の要求事項の中には、必ずファームウェア更新機能が要求されています。では、IoT機器にファームウェア更新機能が搭載されているという事実があれば良いのでしょうか。

ファームウェア更新機能が搭載されていれば、IoT機器に脆弱性が発見された場合、ファームウェア更新機能を使ってファームウェアを修正するなどの対処ができます。しかし、この機能は攻撃者にとっては、対象の機器への「侵入ポイント」になるということに注意する必要があります。攻撃者はファームウェア更新機能に脆弱性があるか必ず調査します。なぜなら、その機器のファームウェア更新機能を悪用して、攻撃者が悪意のあるファームウェアに書き換えたら、その機器を乗っ取ることができるからです。

では、まずIoT機器における「ファームウェアの更新方法」について考えていきます。

IoT機器におけるファームウェア更新方法

IoT機器においてファームウェアを更新する方法として次の3つの仕様が多く見受けられます。

  • USBメモリにファームウェア更新ファイルを格納してIoT機器のUSB端子からファームウェアを更新する
    USBメモリにファームウェア更新ファイルを格納してIoT機器のUSB端子からファームウェアを更新する
  • LANやWi-FiからアクセスできるIoT機器のWeb管理画面から、ユーザがメーカーのサポートサイト等から取得したファームウェア更新ファイルをアップロードしてファームウェアを更新する
    Web管理画面から、ユーザがメーカーのサポートサイト等から取得したファームウェア更新ファイルをアップロードしてファームウェアを更新する
  • IoT機器がクラウドへ通信し、更新ファームウェアをダウンロードしてファームウェアを更新する
    IoT機器がクラウドへ通信し、更新ファームウェアをダウンロードしてファームウェアを更新する

そこで、各方法においてどのようなチェックを通過してファームウェアが更新されるのか事例をご紹介します。

①USBメモリにファームウェア更新ファイルを格納してIoT機器のUSB端子からファームウェアを更新する

まず、①のようにUSBメモリにファームウェア更新ファイルを格納し、機器のUSB端子に接続して読み込ませる場合、機器はどのような検証をしてファームウェアを更新するでしょうか。

事例としては、次のような検証仕様がありました。

  • 更新ファームウェアのファイルが、ある拡張子のファイルであれば、そのファイルを読み込み更新ルーチンに移行する
  • 更新ファームウェアのファイルが、あるディレクトリ名の配下にあれば、そのファイルを読み込み更新ルーチンに移行する
  • 更新ファームウェアのファイル名が、決められたファイル名であれば、そのファイルを読み込み更新ルーチンに移行する

そして、更新ルーチンでは、ファームウェア更新ファイルのIoT機器メーカー独自のヘッダ仕様に含まれているハッシュを用いてファイルの整合性を確認しているだけ、あるいは、何もチェックしていないことも見受けられました。

②LANやWi-FiからアクセスできるIoT機器のWeb管理画面から、ユーザがメーカーのサポートサイト等から取得したファームウェア更新ファイルをアップロードしてファームウェアを更新する

次に、②のように機器のWeb管理画面からファームウェア更新ファイルをアップロードする場合、機器はどのような検証をしてファームウェアを更新するでしょうか。

事例としては、①と同様の検証仕様も含め次のような検証仕様がありました。

  • 更新ファームウェアのファイルが、機器のファームウェアにハードコーディングされた暗号鍵で復号できれば更新ルーチンに移行する
  • 更新ファームウェアのファイルが、ある拡張子のファイルであれば、そのファイルを読み込み更新ルーチンに移行する
  • 更新ファームウェアのファイル名が、決められたファイル名であれば、そのファイルを読み込み更新ルーチンに移行する

そして、更新ルーチンは①と同様の場合が多く見受けられました。

③IoT機器がクラウドへ通信し、更新ファームウェアをダウンロードしてファームウェアを更新する

3つ目、③のようにクラウドから通信により更新ファームウェアをダウンロードする場合、機器はどのような検証をしてファームウェアを更新するでしょうか。

事例としては、次のような検証仕様がありました。

  • 予め設定されたアクセス先から送信された更新ファームウェアであれば更新ルーチンに移行する

そして、更新ルーチンは、①と同様の場合が多く見受けられました。

さて、いかがでしょうか。事例で紹介したような検証で良いでしょうか?ファームウェア更新機能が搭載されていても、事例で紹介したような検証により更新してしまう仕様であれば攻撃者は微笑んでいると思います。

IoT検証のイメージ

ファームウェア更新ファイルの検証仕様の調査

ラックのIoTデバイスペネトレーションテストではファームウェアを解析することで、ファームウェア更新ファイルをどのように検証しているか調査しています。同じように、攻撃者はIoT機器の内部の基板上のファームウェアが格納されているデバイスからファームウェアを抽出し、解析することで検証仕様を調査します。

解析のイメージ

すなわち、ファームウェアを解析調査すれば、ファームウェア更新時のファームウェア更新ファイルの検証仕様が解ってしまいます。

ファームウェア更新機能を悪用した攻撃

ファームウェアの更新ファイルは、メーカーのサポートサイト等インターネット上に公開されている場合が多く見受けられます。攻撃者は簡単に攻撃できることを考え、公開されているファームウェアの更新ファイルを使うことが想定されます。公開されている更新ファイルを、悪意のある機能を追加する等して改ざんして攻撃者はファームウェア更新ファイルを作成します。

①の事例のような仕様では、攻撃者が作成したファームウェア更新ファイルをUSBメモリに格納してIoT機器に取り付ければファームウェアを書き換えられます。

②の事例のような仕様では、Web管理画面の認証を回避できてしまえば、攻撃者はファームウェアを書き換えられます。

③の事例のような仕様では、例えば、IoT機器がクラウドとのTLS通信において証明書を適切にチェックしていなければ、攻撃者はなりすましたサーバーを用意し、そこにアクセスさせることで、改ざんしたファームウェア更新ファイルを送信し、ファームウェアを書き換えられてしまいます。

推奨するファームウェア更新時の検証仕様

ラックが推奨するファームウェア更新時の検証仕様の一例をご紹介します。IoT機器がファームウェア更新ファイルを受信したら、次のチェックをすることが重要です。

  • ファームウェア更新ファイルが本物かどうか(真正性)
  • ファームウェア更新ファイルが改ざんされていないか(完全性)

逆に、ファームウェア更新ファイルの作成仕様も、本物であり改ざんされていないことが判る仕様にする必要があります。そのための一例として、「デジタル署名」を用いてファームウェア更新ファイルを作成すること、IoT機器はそのデジタル署名を検証するように実装することを推奨します。

概略になりますが、ファームウェア更新方法の事例①でデジタル署名を用いた検証仕様の例を以下にご紹介します。

事前準備

  • 1.秘密鍵とそのぺアである公開鍵を作成する
    秘密鍵とそのぺアである公開鍵を作成する
  • 2.公開鍵は、IoT機器の基板上にあるセキュアエレメント等の攻撃者がアクセスできない領域に保管する
  • 3.秘密鍵は、更新ファイルを作成する側で保管する

更新ファイルの作成

  • 4.ファームウェアの更新データを作成する
  • 5.ハッシュ関数を用いて更新データのハッシュ値を算出する
  • 6.5で算出したハッシュ値を秘密鍵で暗号化し、署名データを作成する
    5で算出したハッシュ値を秘密鍵で暗号化し、署名データを作成する
  • 7.署名データをヘッダに含め、ファームウェアの更新データをペイロードに含めた更新ファイルを作成する
    署名データをヘッダに含め、ファームウェアの更新データをペイロードに含めた更新ファイルを作成する

ファームウェアの更新

  • 8.USBメモリにファームウェア更新ファイルを格納してIoT機器にセットする
  • 9.IoT機器はファイルのヘッダから署名データを取り出し、保管してある公開鍵を使って復号し、ハッシュ値を確認する
    IoT機器はファイルのヘッダから署名データを取り出し、保管してある公開鍵を使って復号し、ハッシュ値を確認する
  • 10.さらに、IoT機器はペイロードにあるファームウェアの更新データを5と同じハッシュ関数を用いてハッシュ値を算出する
  • 11.9と10のハッシュ値を比較する
  • 12.比較した結果、合致すれば本物であり、かつ改ざんされていないファームウェア更新データであることが確認できる
  • 13.ファームウェアを更新する

最後に

IoT機器のファームウェア更新機能は、「搭載されていること」ではなく「問題のない設計・実装により搭載されること」が重要であるということをご理解いただけましたでしょうか。ぜひ、設計・実装がセキュリティ上問題ないか検証する手段としてラックのIoTデバイスペネトレーションテストをご検討いただければと思います。お気軽にご相談ください。

IoTデバイスペネトレーションテストのイメージ

IoTデバイスのセキュリティ対策に役立つホワイトペーパーを公開!

IoTデバイスのセキュリティ対策:開発者・品質管理者に知ってほしい有効な調査手法

IoTデバイスに対するセキュリティ対策の一助になるように、インタフェースごとに確認を推奨する項目をまとめました。開発・品質管理に関わる方のセキュリティ対策検討に活用していただける内容です。ぜひご覧ください。

IoTデバイスのセキュリティ対策:
開発者・品質管理者に知ってほしい有効な調査手法
ダウンロード

「IoTデバイスペネトレーションテスト」に関するお問い合わせ

この記事は役に立ちましたか?

はい いいえ

関連記事

LAC WATCH

関連記事をご紹介します

  • OAを踏み台にしたOT環境への侵入を防ぐ対策とは~「マルウェア感染デモ」セミナーレポート

  • LAC Security Insight 第4号 2023 春 ペネトレーションテストから見る脅威の傾向

  • IoTセキュリティ検証でなぜファームウェア解析調査が必要なのか、8年の実績から見えたこと