4.5. Kernel Adress Space Layout Randomization
Kernel Adress Space Layout Randomization (KASLR) は 2 つの部分で設定され、これらが共に機能して Linux カーネルのセキュリティーを強化します。
- カーネルテキスト KASLR
- メモリー管理の KASLR
カーネルテキストの物理アドレスと仮想アドレスの場所が、個別にランダム化されます。カーネルの物理アドレスは 64 TB の任意の場所に配置できますが、カーネルの仮想アドレスは、[0xffffffff80000000, 0xffffffffc0000000] の間の 1 GB 領域に制限されます。
メモリー管理の KASLR には 3 つのセクションがあり、これらのセクションの開始アドレスは特定のエリアでランダム化されます。したがって、悪意のコードが、カーネルアドレス領域にその記号が置かれていることを知る必要がある場合に、KASLR は悪意のコードにカーネルの実行を挿入またはリダイレクトしないようにすることができます。
メモリー管理の KASLR には、以下の 3 つのセクションがあります。
- 直接マッピングセクション
- vmalloc セクション
- vmemmap セクション
KASLR コードが Linux カーネルにコンパイルされ、デフォルトで有効になりました。明示的に無効にするには、nokaslr
カーネルオプションをカーネルコマンドラインに追加します。