オープンウォールプロジェクト
新しいバージョンの変更点には次のようなものがあります。
- LKRG プロジェクトの位置付けが変更され、整合性のチェックやエクスプロイトの使用の決定を行うための個別のサブシステムに分割されることはなくなり、攻撃やさまざまな整合性違反を識別するための完全な製品として提示されます。
- 互換性は、5.3 から 5.7 の Linux カーネル、CONFIG_USB および CONFIG_STACKTRACE オプションなし、または CONFIG_UNWINDER_ORC オプションを使用して積極的な GCC 最適化でコンパイルされたカーネルとの互換性が提供されます。また、可能であれば、LKRG フック関数を持たないカーネルとも互換性が提供されます。不要になる。
- ビルド時に、不明瞭なクラッシュではなく意味のあるエラー メッセージを生成するために、一部の必須の CONFIG_* カーネル設定がチェックされます。
- スタンバイ (ACPI S3、RAM へのサスペンド) モードとスリープ (S4、ディスクへのサスペンド) モードのサポートが追加されました。
- Makefile に DKMS サポートを追加しました。
- 32 ビット ARM プラットフォームの実験的サポートが実装されました (Raspberry Pi 3 Model B でテスト済み)。 以前に利用可能であった AArch64 (ARM64) サポートは、Raspberry Pi 4 ボードとの互換性を提供するために拡張されました。
- 新しいフックが追加されました。これには、「
機能 " ではなく、プロセス ID (資格情報 ); - 名前空間の制限を回避する試み (たとえば、Docker コンテナから) を検出するための新しいロジックが提案されています。
- x86-64 システムでは、カーネル レベルで実行される特権コードからユーザー空間データへのアクセスをブロックするように設計された SMAP (スーパーバイザー モード アクセス防止) ビットがチェックおよび適用されます。 SMEP (スーパーバイザー モード実行防止) 保護は以前に実装されていました。
- 動作中、LKRG 設定は通常は読み取り専用のメモリ ページに配置されます。
- 攻撃に最も役立つ可能性のあるログ情報 (カーネル内のアドレスに関する情報など) は、デバッグ モード (log_level=4 以降) に限定されており、デフォルトでは無効になっています。
- プロセス追跡データベースのスケーラビリティが向上しました。512 つのスピンロックで保護された 512 つの RB ツリーの代わりに、XNUMX 個の読み取り/書き込みロックで保護された XNUMX 個の RB ツリーのハッシュ テーブルが使用されます。
- モードが実装され、デフォルトで有効になっています。このモードでは、多くの場合、プロセス識別子の整合性が現在のタスクに対してのみチェックされ、オプションでアクティブ化された (ウェイクアップしている) タスクに対してもチェックされます。 スリープ状態にある他のタスク、または LKRG によって制御されるカーネル API にアクセスせずに動作しているタスクの場合、チェックはそれほど頻繁には実行されません。
- LKRG を微調整するための新しい sysctl およびモジュール パラメーターを追加しました。また、開発者が用意した微調整設定 (プロファイル) のセットから選択することで構成を簡略化するための XNUMX つの sysctl を追加しました。
- デフォルト設定は、一方では違反の検出速度と対応の有効性、もう一方ではパフォーマンスへの影響と誤検知のリスクの間でよりバランスのとれたバランスを実現するために変更されました。
- systemd ユニット ファイルは、起動の早い段階で LKRG モジュールをロードするように再設計されました (モジュールを無効にするためにカーネル コマンド ライン オプションを使用できます)。
新しいリリースで提案されている最適化を考慮すると、LKRG 0.8 を使用した場合のパフォーマンスの低下は、デフォルト モード (「重い」) で 2.5%、軽いモード (「軽い」) で 2% と推定されます。
最近開催されたイベントでは
さらに、ディストリビューション開発者が
LKRG での整合性チェックは、カーネルとモジュールの実際のコードとデータ、いくつかの重要なデータ構造と CPU 設定を、対応するメモリ領域、データ構造、またはレジスタの保存されたハッシュまたはコピーと比較することによって実行されます。 チェックは、タイマーによって定期的に、またはさまざまなイベントの発生時にアクティブ化されます。
エクスプロイトの使用の可能性を判断し、攻撃をブロックすることは、カーネルがリソースへのアクセスを提供する前 (たとえば、ファイルを開く前) の段階で、プロセスが不正なアクセス許可を受け取った後 (たとえば、UID の変更) に実行されます。 不正な動作が検出されると、プロセスはデフォルトで強制終了されます。これは、多くのエクスプロイトをブロックするのに十分です。
出所: オープンネット.ru