Nexus 5・6やGalaxy S7シリーズなどの多くの製品に影響が!?機密情報に不正にアクセス可能な「TrustZone」の脆弱性が発見 |
フロリダ州立大学のYue Chen氏とZhi Wang氏、Baidu X-LabのYulong Zhang氏、Tao Wei氏が共著で2017年7月17日に発表した論文「Downgrade Attack on TrustZone」にてAndroid搭載製品の多くに採用されている技術「TrustZone」に深刻な脆弱性が存在していることが発覚しました。
このTrustZoneにおける脆弱性が利用されると、TrustZoneのモジュールを動作させているソフトウェアを既知の脆弱性が存在する古いバージョンにダウングレードし、対象製品に対して攻撃することができてしまいます。
なぜこの問題が深刻なのかというと、例え最新バージョンを導入していたとしてもこの脆弱性を利用すればせっかく防いだはずの過去の脆弱性を使ってより重大な攻撃を防げないからです。
【そもそもTrustZoneとは一体何なのか】
今回、脆弱性が発覚したTrustZoneとは、Android搭載製品の多くに搭載されているARMコアベースのチップセット(SoC)のメインプロセッサー(CPU)内に存在する信頼された領域のことを指します。一部の「ZenFone 2」などがIntelのx86ベースのSoCを搭載していましたが、QualcommのSnapdragonシリーズやMediaTekのMTシリーズ、HiSillconのKirinシリーズなど、Android搭載製品のほとんどに搭載されているSoCはARMベースとなっています。
そのため、ほとんどのAndroid搭載製品が対象となり、このTrustZone内には独自の「TrustZone OS」というOSが動いており、製品全体のOSであるAndroidとは別に動作しています。
TrustZoneの役割は、暗号化されたデータを扱うなどといった最も重要かつ機密性の高い操作においてAndroidが安全に行えるような領域を用意することです。これらの操作はTrustZoneで動く、TrustZone OS内で「named trustlets」と呼ばれる特別なアプリケーションとして実行されます。
TrustZone OSがこのnamed trustletsを読み込むと、最初に与えられた暗号署名が正しいかどうか“完全性検査”と呼ばれるチェックを行います。これにより、改ざんされたnamed trustletsが読み込まれることを防ぐようになっています。
もし仮に改ざんされたnamed trustletsが読み込まれてしまうと、Androidが扱う重要かつ機密性の高いデータを簡単に盗み出される可能性が出てきてしまうのです。
【TrustZoneに潜む深刻な脆弱性】
そんなTrustZoneですが、今回投稿された論文において攻撃者がTrustZoneモジュールを古いバージョンにダウングレードできてしまう脆弱性を発見したのです。これはつまり、脆弱性がないはずの最新のTrustZoneモジュールが過去に脆弱性が存在した古いTrustZoneモジュールに入れ替えられてしまい、その古いTrustZoneモジュールの脆弱性を利用して重要で機密性の高い情報へ不正にアクセスできてしまうのです。
今回の脆弱性だけでは、重大な攻撃とはなりませんが、さらに過去の脆弱性を利用する2段階の攻撃を受けてしまうと、最新バージョンを導入しても容易にセキュリティーを突破されてしまうという高度ながらもこれまでにないくらい重大性の高い脆弱性であるということです。
【Galaxy S7やNexus 5・6などで脆弱性が利用可能!ただし、すでに修正済み】
この脆弱性を発表した論文によると、ARMのTrustZone技術が利用されている「Galaxy S7」や「Nexus 5」、「Nexus 6」、「HUAWEI Mate9」でこの脆弱性が利用できたと報告しています。この脆弱性ですが、これらの機種に限った話ではなく、あくまで論文を投稿した研究者のチームが実際に試したのであって、TrustZone技術が利用された製品であれば実行できてしまうため、市場に出回っているほぼすべてので動作すると言っても過言ではないでしょう。
一方で、論文の著者らの研究チームは影響のある製品のメーカーにすでに報告しており、この脆弱性を対処するには異なるバージョンの異なるキーペアを使用する必要があると述べられています。
また異なるキーペアを使用する場合は、さまざまな障壁があるので対処が困難でしたが、脆弱性が見つかれば、バージョン番号を増やして異なるバージョンとして認識させれば、その対処は容易です。実際、NexusシリーズやGalaxyシリーズ、Huawei、OP-TEEなどでは、この対処方法がすでに実装されています。
しかしながら、この解決策もあまり現実的ではないと述べられています。理由として、まず古い製品に対して対処を行う場合には非常に多くのリソースを割かなければいけません。
さらにこの脆弱性を利用するには、他の脆弱性を利用する必要があるため、利用される脆弱性が修正されていたり、関係のない製品であれば、この脆弱性が悪用されることはありません。
ただ脆弱性が一切存在しない製品など実際にはこの世には存在しないため、一時期の間だけ悪用される可能性があります。またこの脆弱性はユーザーが自分のニーズに合わせてダウングレードできるという側面、ユーザーエクスペリエンス(UX)を考慮すると、脆弱性ではなく、一部の機能としても見ることができます。
これらを踏まえると、著者らが論文で挙げているどの解決策もあまり効果を発揮しないのではないかと結論付けています。なお、論文では、これまでのメーカーからの回答から「Galaxy S8」および「Galaxy S8+」については対策済みだとしています。
このように各メーカーはそれぞれに対処はしているとしているものの、対処方法は信頼チェーンや製品流通、互換性の問題の複雑さが影響することから、古い製品もすべて含まれるAndroidエコシステムに対して行うにはあまりにも障壁が高いため、現実的でありません。
これには筆者としても同意見で、数多くの製品に影響がある脆弱性が発見される度に、問題として挙げられるAndroidエコシステムの弱点だと感じました。
その点、iPhoneなどのiOS搭載製品はOSを開発しているAppleしか製品を開発していないため、このような製品の根幹で発生する脆弱性への対応もAndroidと比べると比較的素早く対処できます。そういったところはAndroidと比べて非常に大きな強みでしょう。もちろん、iOSとはいえ、サポート期限が終了していれば、アップデートが提供されることはありませんが……。
【非常に複雑な手順を踏む必要がある】
今回の脆弱性の説明の際にも「高度である」と説明しましたが、攻撃にはAndroid搭載製品の管理者権限を奪取できる脆弱性、TrustZoneモジュールダウングレードの脆弱性、ダウングレードした古いTrustZoneモジュールで利用できる既知の脆弱性の計3つが必要になります。そのため、この脆弱性が悪用される可能性は今のところ低いと考えられています。また、この脆弱性を悪用したマルウェアについても今のところ存在は確認できていません。
高度な手順を踏む必要があるため、基本的には利用者への影響は少ないながらも、もし悪用されてしまうと甚大な被害を及ぼす恐れがあるので、少し心配ではあります。
何か画一的な解決策があれば良いのですが、ここまでシェアが広がりかつ、メーカーや部品メーカーなどの関係ベンダーが数多く存在することもあってか、今のところ有効な手順はないのかなぁというのが筆者の個人的な考えです。
記事執筆:YUKITO KATO
■関連リンク
・エスマックス(S-MAX)
・エスマックス(S-MAX) smaxjp on Twitter
・S-MAX - Facebookページ
・TrustZone Downgrade Attack Opens Android Devices to Old Vulnerabilities
・Cornell University Library