IoT機器とは
IoT機器とは、インターネットに接続される機器のことです。
パソコンやスマートフォンは当たり前のようにインターネットに接続されている機器ですが、近年では一般家庭向けの機器だけみても、エアコンや冷蔵庫、洗濯機など、これまでインターネットに接続されていなかった家電製品がインターネットに接続されるようになっています。
外出先から家の鍵の状況を確認し、解錠や施錠が行えるスマートロック、外出先から家の中の様子を確認できるネットワークカメラなど、様々な機器が販売されており、今後ますます広がりをみせていく分野となっています。
IoT機器に潜在するセキュリティリスク
機器がインターネットに接続され、便利な暮らしを提供するようになった一方、インターネットに接続されていない機器とは異なり、新たにセキュリティ上のリスクに対応する必要がでてきました。
適切なセキュリティ対策が行われていないと、悪意をもった第三者に機器が乗っ取られたり、機器で扱う重要な情報を窃取されたりするなど、重大な問題が発生する可能性があります。
IoT機器は、機器自体に利用されている基板やチップ、連携するサーバ、ソフトウェアなど、セキュリティを考慮しなければならない要素が多数存在します。
機器の基板やチップなどのハードウェアに潜在するリスク
IoT機器は、ソフトウェアだけでなく、ハードウェアそのものに対する攻撃にも対策が必要となります。
例えば、UARTなどのデバッグポートが利用可能なまま残されていると、攻撃者によって機器で利用しているシェルへの不正アクセスを許してしまい、重要なデータを窃取される恐れがあります。
その他にも、メモリ上からファームウェアを抜き取られ、解析される等のリスクがあります。
連携するサーバやWebアプリケーション / Web APIに潜在するリスク
IoT機器を管理するために利用するWebアプリケーションや、そのWebアプリケーションが稼働するサーバなど、ネットワーク経由で攻撃を受けるリスクがあります。
サーバやWebアプリケーションの脆弱性により、IoT機器を利用するユーザーの情報の窃取、サーバやIoT機器への不正アクセスなどが考えられます。
また、一般家庭向きのIoT機器ではスマートフォンアプリ(モバイルアプリ)と連携し、離れた位置からインターネット経由で機器を操作できるものが増えており、アプリで利用するAPI、アプリの動作についても同様の危険性があります。
ローカルで動作するソフトウェアに潜在するリスク
インターネットに接続されるIoT機器であっても、全ての動作がネットワーク経由で処理されているとは限りません。
例えば、液晶画面付きの機器を起動させた際に、機器へログインするための画面が表示されるとします。
機器へログインするためには、機器に登録されているユーザーである必要がありますが、何らかの方法によりログイン画面を迂回し、不正に内部機能の利用が可能であるかも知れません。
ネットワークを介さない部分の動作においてもセキュリティ上のリスクは存在します。
このようにIoT機器には、機器自体や関連する様々な要素に対してセキュリティのリスクが存在します。
起こり得る問題の具体的な例としては、脆弱なスマートロックを利用していた場合、モバイルアプリのローカル部分の動作不具合により、解錠権限のない第三者に家の鍵を開けられて侵入される、脆弱なAPIを利用するネットワークカメラによって、第三者に密かに家の中の様子を監視されていた、などが考えられます。
IoT機器のシステムに対する主な検証内容
IoT機器のシステムに対する検証内容の例をご紹介します。
IoT機器のシステムに対する検証では、IoT機器や関連するアプリケーションなど、様々な要素に対して検証が必要となります。
ハードウェア診断
IoT機器自体の基板やチップに対して、UARTやJ-TAGなどのデバッグ用のインターフェースが利用可能でないかを調査するハードウェア解析や、ファームウェアの解析、USB/Bluetooth/NFCなどの各種インターフェースの調査を行います。
プラットフォーム診断
IoT機器や、 IoT 機器が利用するサーバに潜在する脆弱性の有無を調査します。
Webアプリケーション / Web API診断
IoT機器との連携管理に利用されるWeb アプリケーションや、ルータ等の機器自体に内包されるWebアプリケーション、連携するモバイルアプリケーションの通信先となるWeb API に対する脆弱性を調査します。
探索型セキュリティテスト(総合的な動作確認)
AGESTでは、IoT機器単体での動作確認や、連携するWeb アプリケーション、モバイルアプリケーションを含めた動作確認など、正規ユ ーザーと同等の環境を想定した、探索型のセキュリティテストを実施することをお薦めしております。
探索型セキュリティテストにより、セキュリティ上問題のある仕様の洗いだしや、イレギュラーな操作によって機器の動作に問題が生じ、結果としてセキュリティにかかわる問題に繋がるなど、未知の不具合/脆弱性が発見される場合があります。
探索型セキュリティテストの具体例
では、一般家庭向けのスマートロックに対して探索型セキュリティテストを実施すると仮定して、機器の動作やモバイルアプリを検証する際の具体例をご紹介します。
一般家庭向けのスマートロックでは、既存の鍵の上に重ねるようにして貼り付けるタイプが多く、機器を動かすことによって、同時に既存の鍵を動かす、という仕組みになっています。
解施錠の判定
モバイルアプリと連動しているスマートロックでは、現在鍵が施錠されているのか、解錠されているのかをモバイルアプリで確認することができます。
機器側で施錠、解錠の判定が行われた後、機器からネットワーク経由(インターネット、またはBluetoothなど)で現在のステータスが送信され、モバイルアプリにも反映されます。
では機器側ではどのように判定を行うのでしょうか。
スマートロックでは、まず初回利用時に、施錠位置と解錠位置の設定を行います。
実際に家の鍵に取り付けた状態で施錠/解錠状態にし、モバイルアプリを利用して施錠/解錠位置として設定します。
このサムターン(鍵のつまみの部分)の位置によって機器が施錠位置と解錠位置を判定し、現在の状態がモバイルアプリに表示されることになります。
では以下の状態となったとき、モバイルアプリの表示はどのようになるべきでしょうか。
この状態では、実際に鍵は開いていない状況が高いと考えられるため、施錠されていると判定されるのか、それともサムターンが施錠状態の位置から解錠側へ動いているので、解錠されていると判定されるのか。
今回の場合、丁度施錠状態と解錠状態の中間に位置しているため、どちらを正解とするかは難しく、各種メーカーによって取扱いに違いがあるようです。
では次の例を見ていきましょう。
こちらの場合、大きく解錠側にサムターンが回っていますが、まだ完全に解錠位置に設定したところまでは回っていません。
モバイルアプリの表示も施錠状態のままであるとします。
実際に施錠されている状態なのであれば、モバイルアプリの表示は間違っていないことになりますが、取り付ける鍵の種類によっては、既にこの時点で解錠されてしまっているものが存在します。
つまり、実際には鍵が開いている状態であるにもかかわらず、機器側の判定、およびモバイルアプリの表示上は施錠されているということになります。
実際の状態を適切に反映できていないため、セキュリティ上問題があるといえます。
解施錠のログ
スマートロックでは、解錠/施錠が行われた際の記録がログとして残るものが多いです。
複数人でそれぞれモバイルアプリを利用している場合、モバイルアプリにログインするアカウントに設定されているユーザー名が履歴に表示されます。
また、スマートロックを取り付けていても、手動で解施錠を行うことはできるため、手動で操作した場合には、手動で施錠/解錠したログが表示されるものが多いです。
このログの機能も、誰がいつ利用したかを把握できるために存在するものと考えられるため、常に正しいログが保存されている必要があります。
正しくログが保存されなかったり、ログが改ざんされたりするようなことがあれば、セキュリティ上問題といえます。
モバイルアプリでログを表示する際には、サーバ上に保存されたログを取得していることが多く、モバイルアプリで解施錠を行うと同時に、モバイルアプリからサーバに向けてログ情報が送信されている場合もあります。
モバイルアプリから送信されるログ情報を改ざんして、不正なログを送信できないか、送信時のリクエストをドロップし、サーバにログ情報を送信しないことでログを残さず操作できないか、などもチェックします。
他の例として、手動解施錠によるログの扱いを取り上げます。
モバイルアプリで解施錠した場合には、モバイルアプリからログ情報が送信されますが、手動で解施錠した場合には、どのようにログが送信されるのでしょうか。
あくまで一例となりますが、インターネットに接続可能なスマートロックであれば、手動で解施錠した後、機器からサーバに対してログデータが送信されます。
インターネットに接続できず、Bluetoothのみで利用するタイプのスマートロックの場合には、未送信のログ情報が機器内部に保存されており、モバイルアプリで解施錠を行った際に、モバイルアプリでの解施錠のログと同時に、手動解解施錠のログも送信されるようになっています。
手動による解施錠でも正しくログが保存される必要がありますが、ログが正しく保存されない状況はないか、という考えでチェックを行います。
施錠状態から、ゆっくりとサムターンを回して解錠した場合に、正しいログが残るのか、逆に高速でサムターンを回しても正しくログが残るのか。
ログが残ることが当たり前のように思いますが、実際に検証してみなければ、どのような挙動になっているかは分かりませんので、実際の動作をしっかりと確かめます。
まとめ
IoT機器のシステムに潜在するセキュリティリスクと、検証方法の例についてご紹介しました。
IoTの分野は、今後も広がり続けていく分野と考えられており、より複雑なシステムが増えてくることが予想されます。
IoT機器では、サイバー空間からの攻撃によって機器が誤動作し、それを利用する人が怪我を負うなど、現実世界への影響も軽視できません。
このような問題を未然に防ぐためには、事前にしっかりとした検証を行うことが重要です。
AGESTでは、具体例として記載した探索型セキュリティテストを含めたIoT機器検証のサービスを展開しております。
セキュリティエンジニアとテストエンジニア双方の視点から、製品に含まれる問題を発見し、製品の品質向上に貢献いたします。
お困りごとがありましたら、お気軽に当社にご相談ください。