攻撃者がルートを取得した場合、カーネル アクセスがなくても、バイナリの変更などを行うことで、マシンをほとんど所有していませんか?
多分そうでないかもしれません。 SELinux を使用すると、root ユーザーであっても、ブロック デバイスへのアクセスを制限できます。そのため、ルート パーティションが読み取り専用である場合 (そしてシステムが OverlayFS を使用して非永続的な変更を提供するように実行されている場合)、カーネルをルートから保護することで、再起動時にマシンが侵害された場合でも、一貫した状態を保証できます。ルート レベル。
一方、カーネルが root ユーザーから保護されていない場合、そのような保証はありません。
検証済みのモジュールと kexec
を使用した、検証済みの起動なし 特権エスカレーションに直面した場合に、カーネルが攻撃から身を守るためのより良い機会を与えることができます。デフォルトでは、2 つの機能は無効になっています:
kexec_load_disabled:
kexec_load syscall が無効になっているかどうかを示すトグル。この値のデフォルトは 0 (false:kexec_load が有効) ですが、1 (true:kexec_load が無効) に設定できます。 true になると、kexec は使用できなくなり、トグルを false に戻すことはできなくなります。これにより、syscall を無効にする前に kexec イメージをロードできるため、システムはイメージを変更せずにセットアップ (および後で使用) できます。通常、「modules_disabled」sysctl と一緒に使用されます。
modules_disabled:
モジュラー カーネルにモジュールをロードできるかどうかを示すトグル値。このトグルはデフォルトでオフ (0) ですが、真 (1) に設定できます。 true になると、モジュールはロードもアンロードもできず、トグルを false に戻すことはできません。通常、「kexec_load_disabled」トグルで使用されます。