Japan

関連リンク

関連リンク

関連リンク

関連リンク

サイト内の現在位置

OWASP IoT Security Testing Guideを読んでみた

NECセキュリティブログ

2024年7月12日

NECサイバーセキュリティ戦略統括部 セキュリティ技術センターの長浜です。
2024年3月1日にOWASP IoT Security Testing Guide(ISTG)が公開されました。new window[1]

昨今IoT機器に関するニュースでは、各国でIoT機器に対する認証や規制の検討が行われていると報道されています。日本では、IoT製品に対するセキュリティ適合性評価制度構築の検討new window[2]が行われ、米国でもU.S. Cyber Trust Marknew window[3]と言われる認証制度作成の検討が行われています。一方、欧州連合(EU)では2024年に施行が予定されているEUサイバーレジリエンス法(CRA)new window[4]が審議されています。CRAでは、IoT機器を含むデジタル機器に対しての規制を強化しようとしています。
本ブログでは、昨今IoTへの規制が検討されている中、公開されたISTGの内容を紹介します。

目次

OWASP IoT Security Testing Guide(ISTG)とは

OWASP IoT Security Testing Guide(ISTG)は、OWASPが発行しているIoT機器に対するペネトレーションテストの包括的な方法論を提供するためのガイドです。本ガイドの中では、IoTデバイスモデルや攻撃者モデルの定義に加え、テスト方法の例などが記載されています。特に、本ガイドを利用することでIoTデバイス開発者とペネトレーションテスターとの間に共通用語が確立されコミュニケーションが円滑化できるとしています。

OWASP IoT Security Testing Guideの構成

ISGTは大きく2つのブロックから構成されています。
IoTデバイスや攻撃者のモデル、テスト方法の定義のための「IoT Security Testing Framework」とテスト方法や目的、脆弱性の修正方法案などがまとまった 「Catalog of Test Cases」から構成されています。
本ブログでは、「IoT Security Testing Framework」にのみフォーカスして紹介を行います。「Catalog of Test Cases」は、個々の内容についてはガイドを直接ご覧いただければと思います。

IoT Device Model

本ガイドのIoTデバイスの構成は、何らかの筐体(Enclosure)に囲まれていることを前提としています。要は回路基板やチップなどの内部とユーザなどが操作する空間(デバイス外部)が物理的に分離されていることを想定しています。内部と外部とのやり取りには「Interfaces」を介してのみアクセスが可能であり、ガイドの中では、「Interfaces」は筐体の一部としては見なさないとしています。また、侵入対象となるデバイス内部の要素を「Components」と定義してしています。

図1 IoT Deviceモデル(ISGTnew window[1]から引用)

Components

「Components」とは、IoTデバイスの構成するパーツのことです。各コンポーネントは理論的には個別にテストが可能なソフトウェアやハードウェアから構成されています。IoTデバイスのペネトレーションテストの範囲はコンポーネントリストが最大範囲となります。

Componentsは以下の4要素で構成されます。

Processing Unit(処理装置) x86やARM、AVRなどの各種プロセッサのことを指し、データ処理タスクの管理、実行を担当する。各タスクについてはMemoryから一連の命令をロードして実行する。
Memory(メモリ) 各タスクの命令や処理中の情報などの保存に使用する。RAMだけではなく、EEPROMなどの電源オフ時にもデータを保持するメモリもメモリコンポーネントとなります。
Firmware(ファームウェア) OSやリアルタイムOS(RTOS)、組み込みファームウェアなどのソフトウェアプログラムやハードウェアにプログラムされた命令セットのことを指します。ファームウェアに対しての攻撃は、「インストール済みのファームウェア」と「ファームウェアの更新メカニズム」が対象となります。
Data exchange service(データ交換サービス) 「Interfaces」を介して2つ以上のコンポーネント間でデータ転送を行うためのプログラムを指します。これは、ファームウェアの一部であり、データの送信か受信、その両方で使用されます。

Interfaces

2つ以上のコンポーネントを相互接続するための要素とあります。デバイス内部と外部を接続するだけではなく、デバイス内部の要素同士もインターフェイスを介してのみ通信を行うこととなります。
インターフェイス内の分類としては、大きくデバイス内部や外部のマシン同士の通信に利用するインターフェイスとIoTデバイスに人間からの入力を受け付けるためのインターフェイスの2つに分類されます。

Internal Interfaces(内部インターフェイス) JTAGやUART、SPIなどのデバイス内部の要素同士の接続を確立するために使用し、デバイス筐体外からのアクセスはできません。
Physical Interfaces(物理インターフェイス) USBやイーサネットのようなコンポーネントと他のコンポーネントをそれぞれのインターフェイス介して物理的な接続を行うために使用する。これらのインターフェイスはデバイス筐体の外向けに接続するポートやソケットが露出されています。
Wireless Interface(無線インターフェイス) 物理インターフェイスと同様他のコンポーネントとの接続のために使用しますが、物理的な接続ではなくWi-FiやBluetoothなどの電波や光信号などを使って接続します。
User Interface(ユーザインターフェース) タッチディスプレイやカメラ、マイクに加え、IoTデバイス上で動作しているWebアプリケーションといったユーザとIoTデバイスがやり取りするために利用します。
接続方法は、物理、無線のいずれかで接続します。

Attacker Model

ここまでで、IoTデバイスのモデルを定義してきました。次に攻撃者のモデルについて紹介します。

本ガイドの中では、完全な脅威モデリング手法の一つであるSTRIDEモデルによるアプローチではなく、CVSSのメトリクスにおける「攻撃元区分」と「必要な特権レベル」の2つを拡張してAttacker Modelを作成しています。

物理アクセスレベル(physical access levels: PA)

物理アクセスレベルはCVSSにおける「攻撃元区分」をもとに作成されています。CVSSにおける「攻撃元区分」におけるネットワークとローカル、物理の3つのコンテキストを使用しています。物理コンテキストについては、IoTデバイス筐体を開封できるか否かでコンテキストを2つに分けて評価できるように拡張されています。

Remote Access (リモートアクセス) PA-1 個人とIoTデバイス間は任意の距離があり、攻撃者は世界中のどこにいても構わない。
グローバルエリアからのアクセス可能ということを示す。
Local Access(ローカルアクセス)PA-2 個人とIoTデバイス間は限定的な物理的距離にあるが、IoTデバイスと物理的な直接アクセスすることが制限されている。
ただ、IoTデバイスとはLANやWLANなどを介して直接アクセスができることを示す。
Non-Invasive Access(非侵襲的アクセス)PA-3 個人はIoTデバイスに物理的に直接アクセスすることはできるが、IoTデバイス筐体を容易に開封することができず、デバイス内部要素に直接アクセスすることができない。物理インターフェイスのすべてにアクセスできることを示す。
Invasive Access(侵襲的アクセス)PA-4 個人はIoTデバイスに物理的に直接アクセスすることができ、IoTデバイス筐体を容易に開封することも可能になっている。
デバイス内部要素に直接アクセスすることも可能であることを示す。

上記のように、物理アクセスレベルは攻撃者とIoTデバイスとの距離を定義することができます。この際物理アクセスレベルは、デバイス全体に適応されます。本定義に基づきペネトレーションテストを実施する際には、物理アクセスレベルの定義に沿ったコンポーネントにテストを実施する必要があります。

zoom拡大する
図2 物理アクセスレベルのイメージ図(ISGTnew window[1]の内容から著者作成)

認可アクセスレベル(authorization access levels: AA)

認可アクセスレベルはCVSSメトリクスの「必要な特権レベル」をもとに作成されています。CVSSで定義された値に加え、製造業者レベルアクセスと呼ばれる非常に高い権限を追加しています。Webアプリケーションなどのサーバは管理されたエリア内で運用されることが多いですが、IoTデバイスは管理されていないエリアに設置して利用されることがよくあります。そのため、製造業者レベルアクセスでのデバイスに対する攻撃が可能になるため追加されています。

Unauthorized access(非認可アクセス) AA-1 個人はデバイスコンポーネントに匿名でアクセスすることが可能です。匿名アクセスでの攻撃者は未登録ユーザである可能性があります。
Low-privileged access(低権限アクセス)AA-2 個人がデバイスコンポーネントにアクセスできるのは、認証されて標準的な認可権限を持つ場合に限り可能です。低権限アクセスでの攻撃者は一般権限ユーザを主有している可能性があります。
High-privileged access(高権限アクセス)AA-3 個人がデバイスコンポーネントにアクセスできるのは、認証されて広範な権限を持つ場合に限り可能です。「広範な権限」とは、すべての登録ユーザが利用できるとは限らない制限されたデバイスコンポーネントの機能にアクセス可能なことを意味します。
Manufacturer-level access(製造業者レベルアクセス)AA-4 個人がデバイスコンポーネントにアクセスできるのは、認証されて製造業者レベルの認可権限を持つ場合に限り可能です。高権限アクセスとは対照的に、いかなる形でも制限されないため、デバイス管理者のためのデバッグアクセスやソースコードへのアクセス、ファームウェアへのルートレベルアクセスなどが可能なります。

上記のように、認可アクセスレベルはIoTデバイス内に含まれるデバイスコンポーネントごとの認可/パーミッションに依存します。ペネトレーションテストの際には、各デバイスコンポーネントにおける認可アクセスレベルを定義することが重要となります。この際、ペネトレーションテストの目的は、低権限で高権限のアクセスができないかを評価するべきなので、AA-1に設定されたコンポーネントに対しては、認可アクセス検査は有益な検査ではないと考えられています。

Testing Methodology

テスト方法は、IoTデバイスに対してペネトレーションテストを実行するための方法論を説明しています。これらはIoTデバイスモデルと攻撃者モデルで提示されたコンセプトに基づき、既存のペネトレーションテストワークフローやフレームワークとともに使用できます。したがって、個別のデバイスコンポーネントのためのテストケースのカタログを含み、テスト時に利用可能なテストケースはデバイスモデルと攻撃者モデルを適応した結果に依存します。

テストケースのカタログの構造

テストケースのカタログは階層構造になっています。単一のルーツノードから始まり、デバイスモデルの各コンポーネント、攻撃カテゴリ、テストケースの順に階層構造になっています。
各テストケースには、アクセスレベルなどを定義する「必要条件(Requirements)」とテストケースの説明としての「要旨(Summary)」、テスト担当者が確認すべき内容がまとまった「テスト対象(Test Objectives)」、脆弱性を修正するための方法を例示している「低減策 (Remediation)」の4つから構成されています。テストケースは89種類作成されています。

ここでは、個別のテストケースは紹介しませんが、気になる方は直接ガイドを参照いただければと思います。

まとめ

今回は、OWASPのIoT Security Testing Guide(ISTG)をご紹介しました。IoTデバイスに対するテストシナリオを考える際には非常に有益なガイドかと思います。今後自社でIoTデバイスのセキュア化に取り組んでみたい方やペネトレーションテスト・IoT機器診断を取り組みたい方は、本ガイドを利用してもよいのではないでしょうか。

参考文献

執筆者プロフィール

長浜 佑介(ながはま ゆうすけ)
セキュリティ技術センター リスクハンティング・アナリシスグループ

主にペネトレーションテスト、脆弱性診断などを担当しNECグループのセキュア開発・運用を推進。
2020年6月にIPA 産業サイバーセキュリティセンター中核人材育成プログラムを修了。
CISSP、GIAC(GXPN)、情報処理安全確保支援士(RISS)を保持。

執筆者の他の記事を読む

Escキーで閉じる 閉じる