/proc/sys/kernel/cap-bound
カーネル2.6.25以前は、システム全体でドロップを使用して、CAP_SYS_MODULE
悪用や再起動なしにカーネルスペースにロードされた現在のコードセットがすべてあるかどうかを確認することができました。
CAP_NET_ADMIN
その後、(!)なしでカーネルモジュールをロードできるようにすることを決定し、CAP_SYS_MODULE
値をCAP_SYS_MODULE
超えました。最新のカーネルを検索してみると、ランタイムチェックがCAP_SYS_MODULE
まだ存在しないことがわかりました。
現代的な選択肢は何ですか?
答え1
Kees Cookは、このニーズを満たすために2009年初めにsysctlを実装しました。文書に記載されているようにドキュメント/sysctl/kernel.txt:
modules_disabled
:別のモジュール式カーネルにモジュールをロードできるかどうかを示すトグル値。このトグルのデフォルト値はオフ(
0
)ですが、true(1
)に設定できます。 trueの場合、モジュールをロードまたはアンロードできず、トグルを再びfalseに設定できません。通常、「kexec_load_disabled」トグルと一緒に使用されます。
kexec_load_disabled
前述のように、カーネル空間でアクティブなコードを制御することが目標である場合は、次の方法を使用する必要があります。
kexec_load_disabled
:kexec_load システムコールが無効かどうかを示すトグルスイッチです。この値のデフォルト値は
0
(false:kexec_loadが有効)ですが、1
(true:kexec_loadが無効)に設定できます。 trueになると、kexecを使用できなくなり、トグルをfalseにリセットできなくなります。これにより、システムコールが無効になる前にkexecイメージをロードできるため、システムはイメージを変更せずにイメージを設定(後で使用)できます。通常、 "modules_disabled" sysctl と一緒に使用されます。