私はLinuxカーネルv4.14を使用しています。私はカスタムボード用のAARCH64アーキテクチャ用のコアを構築しました。KASLR
このフラグを有効にしましたCONFIG_RANDOMIZE_BASE=y
。
しかし、起動するたびにカーネルコードとデータの物理アドレスが同じであることがわかります。 (私はこれを確認しました/proc/iomem
)。
KASLRはカーネルコードセグメントの物理アドレスをランダムに指定しませんか?
ベストアンサー1
バラよりAarch64のKconfig
説明RANDOMIZE_BASE
:
カーネル内部の場所に関する知識に依存する悪用の試みを防ぐためのセキュリティ機能として、カーネルイメージがロードされる仮想アドレスをランダムに指定します。
ブートローダの使命は、
/chosen/kaslr-seed
カーネルエントリからランダムなu64値を渡してエントロピーを提供することです。
EFI_RNG_PROTOCOL
UEFIスタブから起動するときにカーネルにエントロピーを提供するためにファームウェアの実装(利用可能な場合)を呼び出します。また、カーネルイメージの物理的な位置をランダムに指定します。
それ自体は、イメージRANDOMIZE_BASE
の物理アドレスをランダムに指定するために、カーネルイメージの仮想アドレスのみをランダムに指定するため、カーネルはブートローダの助けを必要とします。UEFIスタブ)。
他のアーキテクチャもランダムな物理アドレスをサポートします(例えばx86)。