プロジェクト OpenwallはLKRG0.8カーネルモジュールリリースをリリースしました (Linuxカーネルランタイムガード)、 攻撃を検出してブロックするように設計されています y コア構造の完全性の違反.
モジュール 既知のエクスプロイトに対する保護を整理するのに適しています Linuxカーネルの場合(たとえば、システム上のカーネルの更新に問題がある場合)、 未知の脆弱性に対するエクスプロイトに反対することに関して。
新しいLKRG0.8とは何ですか?
この新しいバージョンでは LKRGプロジェクトの位置付けが変更されました、何をする時間は別々のサブシステムに分割されていません 整合性を検証し、エクスプロイトの使用を決定するために、 しかし、それは完全な製品として提示されます 攻撃やさまざまな整合性違反を特定するため。
この新バージョンの互換性については、 5.3から5.7までのLinuxカーネルと互換性があることがわかりますオプションなしで、積極的なGCC最適化でコンパイルされたカーネル CONFIG_USBおよびCONFIG_STACKTRACE またはオプション付き CONFIG_UNWINDER_ORCまた、LKRGによってインターセプトされた関数がないカーネルでも、それなしで実行できます。
に加えて 32ビットARMプラットフォームの実験的サポート (Raspberry Pi 3モデルBでテスト済み)、AArch64(ARM64)の以前の利用可能なサポート Raspberry Pi4との互換性によって補完されます。
また、 新しいフックが追加されました、プロセス識別子ではなく「機能」によって操作される脆弱性をより適切に識別するための「フック()」呼び出しハンドラーが含まれています。
x86-64システムでは、SMAPビットがチェックされて適用されます (スーパーバイザーモードでのアクセスの防止)、dユーザースペースのデータへのアクセスをブロックするように設計されています カーネルレベルで実行される特権コードから。 SMEP(スーパーバイザーモード実行防止)保護は以前に実装されました。
それはそうだった プロセス追跡データベースのスケーラビリティの向上:スピンロックで保護された単一のRBツリーの代わりに、512個のRBツリーのハッシュテーブルが含まれ、それぞれ512個の読み取りロックと書き込みロックで保護されます。
デフォルトモードが実装され、有効になっていますその中で 識別子の整合性チェック 多くの場合、処理は現在のタスクに対してのみ実行され、オプションでトリガーされたタスク(ウェイクアップ)に対しても実行されます。 一時停止状態にある他のタスク、またはLKRG制御のカーネルAPI呼び出しなしで機能するタスクの場合、検証の実行頻度は低くなります。
に加えて systemdユニットファイルが再設計されました ロードの初期段階でLKRGモジュールをロードします(カーネルコマンドラインオプションを使用してモジュールを無効にすることができます)。
コンパイル中に、必須のCONFIG_ *カーネル設定の一部がチェックされ、あいまいな障害ではなく意味のあるエラーメッセージが生成されました。
この新しいバージョンで際立っている他の変更の中で:
- スタンバイ(ACPI S3、RAMへのサスペンド)およびサスペンド(S4、ディスクへのサスペンド)モードのサポートが追加されました。
- MakefileにDKMSのサポートが追加されました。
- 名前空間の制限から抜け出す試みを決定するために、新しいロジックが提案されています(たとえば、Dockerコンテナーから)。
- このプロセスでは、LKRG構成は、通常は読み取り専用のメモリページに配置されます。
- 攻撃に最も役立つ可能性のある情報(カーネル内のアドレス情報など)のログへの出力は、デフォルトで無効になっているデバッグモード(log_level = 4以上)によって制限されます。
- LKRGを調整するための新しいsysctlおよびモジュールパラメーターが追加されました。また、開発者が作成したプロファイルから選択することで構成を簡素化するためのXNUMXつのsysctlが追加されました。
- デフォルト設定が変更され、違反検出の速度と反応の有効性、および生産性への影響と誤検知のリスクの間でよりバランスの取れたバランスが実現されます。
- 新しいバージョンで提案された最適化によると、LKRG 0.8を適用した場合のパフォーマンスの低下は、デフォルトモード(「ヘビー」)で2.5%、ライトモード(「ライト」)で2%と推定されます。
あなたがそれについてもっと知りたいならば、あなたは相談することができます 詳細はこちら。