Linux KASLRはAARCH64で物理アドレスのランダム化を提供しますか?

Linux KASLRはAARCH64で物理アドレスのランダム化を提供しますか?

私はLinuxカーネルv4.14を使用しています。私はカスタムボード用のAARCH64アーキテクチャ用のコアを構築しました。KASLRこのフラグを有効にしましたCONFIG_RANDOMIZE_BASE=y

しかし、起動するたびにカーネルコードとデータの物理アドレスが同じであることがわかります。 (私はこれを確認しました/proc/iomem)。

KASLRはカーネルコードセグメントの物理アドレスをランダムに指定しませんか?

ベストアンサー1

バラよりAarch64のKconfig説明RANDOMIZE_BASE:

カーネル内部の場所に関する知識に依存する悪用の試みを防ぐためのセキュリティ機能として、カーネルイメージがロードされる仮想アドレスをランダムに指定します。

ブートローダの使命は、/chosen/kaslr-seedカーネルエントリからランダムなu64値を渡してエントロピーを提供することです。

EFI_RNG_PROTOCOLUEFIスタブから起動するときにカーネルにエントロピーを提供するためにファームウェアの実装(利用可能な場合)を呼び出します。また、カーネルイメージの物理的な位置をランダムに指定します。

それ自体は、イメージRANDOMIZE_BASEの物理アドレスをランダムに指定するために、カーネルイメージの仮想アドレスのみをランダムに指定するため、カーネルはブートローダの助けを必要とします。UEFIスタブ)。

他のアーキテクチャもランダムな物理アドレスをサポートします(例えばx86)。

おすすめ記事