第42章 セキュリティー向上のため、kstack の ランダム化オフセットを有効にする
カーネルスタック (kstack) ランダム化オフセットセキュリティー機能は、システムコールごとにカーネルスタックの位置をランダム化します。これにより、攻撃者がカーネルの脆弱性を悪用することを防ぐことができます。
kstack の ランダム化にサイクルカウンターを使用する他のアーキテクチャーとは異なり、信頼性に欠ける可能性があるこの方法とは対照的に、64 ビット ARM (aarch64) はカーネルの乱数生成器 (RNG) を使用します。このアプローチが好まれる理由はいくつかあります。
- 常に有効なサイクルカウンターまたは高速サイクルカウンターがない
- 遍在する高周波タイマーの欠如
-
v8.5
FEAT_RNG命令セットをサポートしていないシステム
カーネル乱数生成器は一般的に堅牢なソリューションですが、特にリアルタイム (RT) ワークロードにおいては、著しいレイテンシーの急増を引き起こす可能性があります。その結果、aarch64 リアルタイムカーネルでは、kstack の ランダム化オフセット機能はデフォルトで無効になっています。しかし、この決定にはトレードオフが伴う。カーネルのセキュリティーがわずかに低下するのだ。
42.1. 64 ビット ARM で kstack ランダム化オフセットを有効にする リンクのコピーリンクがクリップボードにコピーされました!
64 ビット ARM(aarch64) システムでは、リアルタイムカーネルにおいて kstack ランダム化オフセット機能はデフォルトで無効になっています。想定される遅延が使用状況において許容範囲内であれば、この機能を再度有効にしてカーネルのセキュリティーを向上させることができます。
前提条件
- 管理者権限がある。
- お使いのシステムは 64 ビット ARM(aarch64) アーキテクチャーで動作しています。
手順
grubbyを使用して、randomize_kstack_offsetカーネルパラメーターを有効にします。# grubby --update-kernel=ALL --args="randomize_kstack_offset=y"システムを再起動して、変更を有効にします。
# reboot
検証
/proc/cmdlineファイルにrandomize_kstack_offset=yパラメーターが指定されていることを確認してください。# cat /proc/cmdline出力には
randomize_kstack_offset=yが含まれます。