Nothing Phoneのコード実行脆弱性に対するPoCが公開

概要:Nothing Phoneに深刻な脆弱性

Nothing Phone (2a)およびCMF Phone 1のセキュアブートプロセスにおける重大な脆弱性に対する概念実証(PoC)エクスプロイトが公開されました。この脆弱性は、信頼の連鎖を破壊し、最高権限レベルでの完全なコード実行を可能にするため、デバイスのセキュリティに深刻なリスクをもたらします。

この脆弱性は、MediaTekのセキュアブートチェーンにおけるロジックの欠陥に起因します。デバイスのブートローダーがアンロックされている場合、プリローダーはbl2_extパーティションの検証をスキップします。このパーティションは後続のすべてのブートステージを検証する役割を担っていますが、この欠陥によりチェックされません。このギャップを悪用することで、攻撃者はシステム内で最も高い特権レベルであるEL3で任意のコードを実行し、プリローダー実行後にセキュアブートチェーンを無効にすることができます。

技術的詳細とPoCコード

公開された概念実証エクスプロイトは「fenrir」と名付けられており、bl2_ext内の関数sec_get_vfy_policy()を常にゼロを返すようにパッチを適用します。これにより、認証ポリシーがバイパスされ、任意のブートイメージがチェックなしでロードされることを許容します。また、このエクスプロイトはデバイスのロック状態を偽装し、アンロックされているにもかかわらずロックされているように見せかけ、整合性チェックを通過させます。

PoCには、パッチ適用とフラッシュプロセスを自動化するためのPython、C、シェルスクリプトが含まれています。ビルドプロセスは以下の通りです。

  • オリジナルのブートローダーイメージをbin/[device].binに配置します。
  • ./build.sh pacman(またはカスタムパス)を実行します。
  • これにより、lk.patchedというパッチ適用済みファイルが生成されます。

フラッシュには、./flash.shを使用してfastboot経由でパッチ適用済みイメージをデバイスにアップロードします。fastbootが利用できない場合は、代替のフラッシュ方法が必要になる場合があります。このPoCはカスタムのfastbootコマンドも登録し、組み込みのブートローダー関数を動的に呼び出すことができます。ただし、実行時のメモリ変更は現在MMUフォルトを引き起こすため、まだ開発中です。

影響と緩和策

この脆弱性は、影響を受けるデバイスの信頼の連鎖全体を損ないます。一度悪用されると、攻撃者は不正なオペレーティングシステムをインストールしたり、ファームウェアを検出されずに操作したりすることができます。この欠陥はNothing Phone (2a)とCMF Phone 1で確認されており、予備テストではVivo X80 Proのような他のMediaTekベースの電話もリスクにさらされている可能性が示唆されています。

ユーザーは、公式パッチがリリースされるまでブートローダーのアンロックを避けるべきです。また、公式アップデートが適用されたら、ブートローダーを再ロックすることが推奨されます。デバイスメーカーとチップセットベンダーは、アンロックされている場合でもbl2_extのチェックを強制するようにセキュアブート検証を更新する必要があります。セキュリティチームは、不正なフラッシュ活動を監視し、エンドユーザーに公式アップデート適用後にブートローダーを再ロックするよう助言する必要があります。

詳細な説明、スクリプト、使用方法を含む完全なPoCリポジトリは、AGPL-3.0ライセンスの下でGitHubで公開されています。セキュリティ研究者とデバイスベンダーは、コードをレビューし、適切な検証措置を統合してセキュアブートチェーンを回復することが強く求められています。


元記事: https://gbhackers.com/poc-released-for-nothing-phone-vulnerability/