Asayomu Tech
注目★★★★★Lobsters

ARM64の謎のハング、NX bitがAndroid起動を救った

30秒で把握

  • 1ARM64のCTR_EL0処理が投機的命令フェッチで端末停止を誘発
  • 2Device属性はデータアクセスのみ抑止し命令フェッチを許可
  • 3NX bit設定でMMIOへの投機的フェッチを防ぎAndroid起動に成功

要約

SonyaはARM64ハイパーバイザの開発中、CTR_EL0インターセプトを有効にすると端末が停止する原因を、NX bitの欠如による投機的命令フェッチだと突き止めた。ARMのDeviceメモリ属性は投機的なデータアクセスを防ぐが、命令フェッチは防がない。実行可能ページでは投機的フェッチがMMIO領域やアドレス0のBoot ROMに及び、システムが停止していた。メモリを非実行に設定すると、カーネルへのパッチなしでAndroidまで起動した。ARMではNX bitがセキュリティだけでなく、投機的命令アクセスを抑止する属性として機能する。

あなたへの影響

ARM64でハイパーバイザやMMIOを扱う開発者は、Device属性だけでなく実行権限も確認し、MMIO領域を非実行に設定してください。

推奨:NX bitはDEP(Data Execution Prevention)で使われる実行禁止属性です。

詳細を読む → 元記事へ※ 本文は元記事をご確認ください (asayomu は要約のみ提供)

関連する記事

※ 外部記事の権利は原著作者に帰属します。著作権削除要請は copyright@asayomu.jp までご連絡ください(受領確認 24h・実処理 72h 以内)。