Linuxカーネル構成でCONFIG_RANDOMIZE_BASEとCONFIG_RANDOMIZE_MEMORYの違い

Linuxカーネル構成でCONFIG_RANDOMIZE_BASEとCONFIG_RANDOMIZE_MEMORYの違い

これページこれはRANDOMIZE_BASE物理アドレスと仮想アドレスをランダムに指定するKASLRのためのもので、32ビットでは明らかで、64ビットでは理解できます。

しかし、RANDOMIZE_MEMORY正確に何をするのでしょうか?これページ説明する:

カーネルメモリ部分(物理メモリマップ、vmalloc、vmemmap)のデフォルト仮想アドレスをランダムに指定します。

どういう意味ですか?これは、さまざまな部分が何とか分かれていて、一緒ではありませんが、その間にいくつかのスペースがあることを意味しますか?

答え1

RANDOMIZE_BASEほとんどのアーキテクチャで利用可能な機能です。カーネルの仮想および物理ベースアドレスをランダムに指定する

RANDOMIZE_MEMORYx86-64 特定の機能ですまた page_offset_basevmalloc_base、のオフセットをランダム化します。vmemmap_baseつまりカーネルメモリの物理マッピングの場所、空間、および仮想vmallocメモリマッピング。接続されているメモリマップからわかるように、それらのすべての後ろに穴があり、メモリの前後の項目と重なる問題を処理することなく移動できます。

関連情報