Linux 上の LivePatch の新しい提案、TuxTape

タックステープ

の概念 "ライブパッチは新しいものではない また、Red Hat、Oracle、Canonical、SUSE などが自社のディストリビューションにこの技術を実装しているにもかかわらず、ここ数年 Linux には実装されていません。

そして、それらは優れた解決策として確立されているが、 通常は閉じたプロセスに依存します パッチの作成において、 透明性と適応性が制限されます。 Gentoo の elivepatch や Debian の linux-livepatching などのこれまでのオープンソース プロジェクトは、プロトタイプ段階で長期間にわたって活動が停止したり、停滞したりしていました。

この一連の問題に直面して アクティブなLinuxカーネルパッチの生成、コンパイル、展開、インストールのプロセスにまだ直面している人々、 TuxTapeは解決策として登場する 独立しており、各ディストリビューション固有のパッケージに限定されることなく、Linux カーネルのあらゆるバージョンに適応できるように設計されています。

Linux のライブパッチソリューション TuxTape

TuxTapeは新しいソリューションです その 管理者を許可します システムの 独自のインフラストラクチャを実装する Linux カーネルにライブ パッチを作成、アセンブル、および展開します。

主な目的 TuxTapeが提供するのは ライブパッチの作成と配信を自動化する包括的なシステム。そのアーキテクチャにより、Red Hat の kpatch、SUSE の kGraft、Oracle の Ksplice などの既存のツールやその他の汎用ソリューションと互換性のあるパッチを生成できます。

パッチ 既存の機能を置き換えるカーネルモジュールとして実装されている ftrace サブシステムを使用すると、モジュールに含まれる新しい関数に実行がリダイレクトされます。さらに、TuxTape には、linux-cve-announce メーリング リストや Git リポジトリに投稿された脆弱性の更新を追跡する機能もあります。

TuxTape ライブパッチ

この情報を使用して、システムは脆弱性を重大度別に分類し、カーネル ビルド プロファイルの詳細な分析を通じて各パッチの適用可能性を評価し、対象環境に影響を与えない修正を破棄します。この選択的なアプローチにより、関連する変更のみが実装され、リスクが最小限に抑えられ、パフォーマンスが最適化されます。

プロジェクトのコンポーネントとアーキテクチャ

タックステープキット 複数の統合ツールで構成されています 検出からライブパッチまで:

  • 脆弱性追跡システム: これは、新しい脅威をリアルタイムで検出して記録する役割を担います。
  • データベースジェネレーター: 構造化されたデータベースでパッチと脆弱性に関する情報を提供する役割を担います。
  • gRPC を使用したメタデータ サーバー: パッチ生成に関連するサービスの通信と調整を管理します。
  • ディスパッチシステムとカーネル構築: 詳細なコンパイル プロファイルを生成することで、特定の構成でのカーネルのコンパイルを容易にします。
  • ジェネレーターとパッチファイル: 通常のパッチを動的にロード可能なカーネル モジュールに変換します。
  • エンドホストのクライアント: 実稼働システムでのパッチの受信と適用を可能にします。
  • インタラクティブインターフェース(ダッシュボード): 受信したソースに基づいてライブ パッチを確認、管理、作成できる管理コンソールをユーザーに提供します。

なお、TuxTape プロジェクトと開発は現在、実験的なプロトタイプ段階にあるため、現時点ではさまざまなコンポーネントを使用した初期テストのみに推奨されます。

プロジェクトのテストに興味がある場合は、現在次のような特定のツールでのみテストすることをお勧めします。

  • tuxtape-cve-パーサー: 脆弱性情報を分析し、パッチ データベースを構築します。
  • tuxtape サーバー: パッチの生成と配布のための gRPC インターフェースを実装します。
  • tuxtape カーネルビルダー: 指定された構成でカーネルを構築し、対応するコンパイル プロファイルを生成する役割を担います。
  • タックステープダッシュボード: 受信したソース パッチに基づいてライブ パッチを確認および作成するためのコンソール インターフェイスを提供します。

最後に、このプロジェクトは Rust で開発されており、Apache 2.0 ライセンスの下で配布されていることを述べておくことが重要です。詳細情報やソースコードについては、以下を参照してください。 次のリンク。