セキュリティ研究者が、眼鏡が開発者ツールを検証する仕組みの欠陥を悪用し、MetaのRay-Banスマートグラス上で任意のコード実行とインタラクティブなシェルを獲得することに成功した。研究者は、ペアリングされたスマートフォンから送信される構成ファイルを操作することでMetaの署名検証をバイパスし、ウェアラブルデバイスのセキュリティアーキテクチャにおける重大な信頼境界の問題を浮き彫りにした。

この画像は、研究者が構成ファイルを操作するために使用したハードウェアとスマートフォンのペアリングメカニズムを示している。
ファームウェアの抽出とAPKの注入
研究者はまずMeta AIアプリを使用して眼鏡のファームウェアを抽出した。Fridaを使用してアプリの`OTAArtifactInfo`クラスをフックすることで、CDNのアップデートURLを傍受した。さらに、アプリのGraphQL入力を操作して増分アップデートではなくフルファームウェアのアップデートを要求し、デバイスのファイルシステムをダンプしてマウントすることに成功した。
ファームウェアを入手した後、研究者はカスタムコードを実行する方法を特定した。ファームウェアバージョン126では、眼鏡は開発者が眼鏡とやり取りするためのツールであるDevice Access Toolkit (DAT) APKがMetaによって署名されているかを確認していなかった。これにより、研究者は正当なDATアプリケーションを自身で作成した自己署名版に差し替えることが可能になった。
「署名検証を導入することと、信頼できない構成を通じてその強制をバイパスできないようにすることは別問題である。」
— Hacking the meta ray-ban smartglasses
デバッグとシェルの獲得
スマートグラスには画面やコンソールがないため、研究者は`android.media.ToneGenerator`を介した一連のオーディオビープ音を使用して、注入したコードの進捗を通知した。これにより、公式のCamera Accessアプリが期待されるDATアプリケーションを検出できない場合に接続を閉じてしまうタイムアウトエラーなどの問題をデバッグすることが可能になった。
永続的な接続を確立するために、研究者はCamera AccessアプリをフックしてMeta AIアプリから「high link lease」を要求した。これにより、眼鏡は特定のサブネット上のWi-Fi Directグループに強制的に参加した。眼鏡のTCPポート31337にリスナーをバインドすることで、研究者はスマートフォンから`nc`(netcat)を使用して、シェルレベルの実行が可能なインタラクティブなシェルにアクセスすることができた。
署名強制のバイパス
Metaは最終的にファームウェア127において、DAT APKに対する署名検証を強制することでAPK注入の欠陥に対処した。しかし、研究者はこのチェックがペアリングされたスマートフォンから取得される構成フラグ(`signature_verification_enabled`)によって制御されていることを発見した。眼鏡は、たとえ改ざんされていても、構成ファイルが構造的に正しければそれを受け入れた。
研究者は`0.mctable`ファイル内の単一バイトを`0x80`から`0x00`に反転させることで、署名チェックを無効化した。これにより、自己署名されたAPKを再インストールし、シェルアクセスを奪還することが可能になった。研究者はこれらの発見をバグバウンティプラットフォームを通じてMetaに報告し、この問題は修正されたと考えられている。
Hacker Newsの読者の反応
- 疑問: あるコメント投稿者は、この実証が真のセキュリティ脆弱性として適格であるか疑問を呈し、すでに所有しスマートフォンとペアリングしているデバイスへのアクセス獲得は、ターミナルエミュレータのインストールに近いものかもしれないと示唆した。 コメント ↗
- 疑問: 別のユーザーは、このエクスプロイトの実用的な制限について疑問を投げかけ、特にソフトウェアアップデートに対する堅牢性や、永続性の欠如が影響を制限するかどうかを尋ねた。 コメント ↗
- 疑問: また別のコメント投稿者は、デバイスが意図的にユーザーのアクションを制限しているため、これはハックであると主張し、自動アップデートを無効にした状態でこの手法をテストする意向を表明した。 コメント ↗
Hacker Newsのスレッドで出た意見の要約です。事実として検証されたものではありません。 議論の全文を読む ↗