ARMは、ハッカーが必然的に回避する方法を学ぶことになるIoTセキュリティ防御策を明らかにした。

Table of Contents

ARMは、ハッカーが必然的に回避する方法を学ぶことになるIoTセキュリティ防御策を明らかにした。

ARMは、マイクロコントローラーの設計図にTrustZone防御機能を追加することで、IoT(モノのインターネット)向けチップのセキュリティを向上したいと考えています。実質的にARMは、ハッカーがガジェットのファームウェアのプログラミングバグを悪用するために乗り越えるべきハードルをさらに高めているのです。

TrustZone とは何ですか?

TrustZoneは通常、ARMのアプリケーションプロセッサ設計(例えばスマートフォンのシステムオンチップ)に搭載されています。しかし、TrustZoneは2000年代初頭から存在しており、スマートモバイルブームのずっと前からARMv6 ARM11ファミリーに初めて搭載されていました。

これは、デバイスをセキュアドメインと非セキュアドメインの2つのドメインに分割することで機能します。通常、攻撃対象領域が広く脆弱性を抱える、高機能なオペレーティングシステム(Androidなど)は非セキュアドメインで実行され、セキュアドメインでは、コード署名の暗号化や指紋センサーのドライバーなど、保護が必要なものが実行されます。

TrustZone は 2 つの世界の間の障壁として機能し、非セキュア領域とセキュア領域が相互に通信できるようにしますが、非セキュア側がセキュア側を改ざんすることは決して許可しません。これにより、非セキュア ゾーンは、セキュア ゾーンが侵入されてシステムに悪意のある操作が行われていないことを信頼できるようになります。

この技術はハッカーを完全に防ぐことはできません。オペレーティングシステムでセキュリティホールとなるようなバグが、セキュアドメインで実行されるコードに出現する可能性があります。セキュアゾーンのコードにバッファオーバーフローや整数オーバーフローの脆弱性がある場合、非セキュア側からそれを悪用され、保護された領域に侵入される可能性があります。

ARM の TrustZone の安全性は、保護された世界で実行されるソフトウェアの安全性と同程度であり、スマートフォンのファームウェア開発者は、かなり安全性の低いコードを生み出してしまった。

ARMは、この技術をマイクロコントローラに実装するにあたり、デバイスに埋め込まれる可能性のある粗悪なコードに対するハードウェアレベルの防御機能を追加しました。ARMは、自社のマイクロコントローラ設計が多くのIoT(モノのインターネット)デバイスに採用されることを期待しているため、このメカニズムに追加の保護機能を組み込むことは歓迎すべきことです。

ARMv8-Mへようこそ

ARMの新しいマイクロコントローラアーキテクチャはARMv8-Mと呼ばれていますが、ARMv8-Aと混同しないでください。ARMv8-MはTrustZone機能とその他のいくつかの機能を備えた32ビット設計です。ARMv8-Aは、ハイエンドのハンドヘルドデバイスやサーバーチップで使用される64ビットアーキテクチャです。

ARMv8-Mは、バンク型スタックポインタと割り込み制御レジスタ、そしてセキュア空間において非セキュア側が呼び出せる関数を指定するための新しい命令を備え、セキュア状態と非セキュア状態間の高速切り替えに最適化されています。デバイスはセキュアモードで起動し、ハードウェアを初期化し、非セキュアモードで実行されるコードの整合性をチェックします。その後、非セキュアゾーンに切り替え、必要に応じて非セキュア領域からの関数呼び出しを処理します。

ARM が ARMv8-M について説明した内容を以下にまとめます。

ARMv8-MとARMv8-Aを混同しないでください。前者はマイクロコントローラ用の32ビットアーキテクチャであり、非常に特定の目的のためにソフトウェアを実行するチップです。

ARMv8-Mコアを搭載したハイエンドマイクロコントローラで実行できる最低限のことは、これが基本仕様です。

これは、ベースライン仕様に基づいてフル機能のマイクロコントローラコアを構築するメインライン仕様です。

このアーキテクチャには、ページングによって仮想メモリを提供する標準的なメモリ管理ユニット(MMU)がありません。代わりに、RAMの領域をアクセス可能またはアクセス不可としてマークできるメモリ保護ユニット(MPU)が搭載されています。ARMv8-Mでは、x86スタイルのセグメントに似た領域のサイズに関して、より柔軟性があります。以前のアーキテクチャでは、領域は固定ブロックからしか構築できませんでした。

ARMv8-Mは、ARMに精通したプログラマーにとっては非常に標準的なものに見えます。セキュアワールドと非セキュアワールドにそれぞれ独立したスタックとスタックリミットポインタを提供し、これらを自動的に切り替えることで、この処理をハードウェアに委ねることでコードのバグを最小限に抑えます。割り込み制御レジスタもセキュアワールドと非セキュアワールド間で分散管理されているため、保護されたゾーンは必要な割り込みを常に確実に受信できます。

メモリアドレスはセキュアゾーンまたは非セキュアゾーンへのアクセスとしてマークすることができ、非セキュアコードがセキュア領域にアクセスするのを防ぎます。この保護はRAMだけでなく、フラッシュストレージやメモリマップされた周辺機器にも適用されます。

さて、ここで興味深い点があります。それはSG命令です。非セキュア領域からセキュアゾーンへのエントリポイントは、この特定のマシンコード命令で始まる必要があります。これは、プロセッサにこれが正当な関数呼び出しであることを伝えます。非セキュアコードがセキュア領域内のSG命令でマークされていない関数を呼び出そうとすると、例外が発生します。

ついに、開発中のARMのIoT向けオペレーティングシステム「mbed」のテクノロジープレビューが利用可能になりました。このソフトウェアの開発は昨年の同時期に発表され、9月にベータ版としてリリースされました。®

Discover More