Ksplice拡張クライアントでのkspliceコマンドの使用

概要

Ksplice拡張クライアントを管理するには、kspliceコマンドを使用します。このコマンドは、従来のKsplice Uptrackクライアントで使用されるuptrackコマンドのかわりに使用します。kspliceコマンドでは、カーネルのパッチ適用に加えて、ユーザー・スペースのパッチ適用を実行できます。

使用方法

kspliceコマンドは、次のサブシステムでアクションを実行します:

  • kernel: アクションはカーネル・サブシステムでのみ実行されます
  • user: アクションはユーザー・スペース・サブシステムでのみ実行されます
  • all: アクションはすべてのサブシステムで実行されます

サブコマンドの形式でのアクションは次のとおりです:

  • list-target: クライアントがパッチを適用できる使用可能なターゲットをリストします
  • show: クライアントによってすでに適用されている更新を表示します
  • apply: 更新パスで指定されたシステムに更新を適用します
  • undo: 一意のKsplice識別子で指定されたシステムへの更新を元に戻します
  • upgrade: 使用可能なすべてのKsplice更新でシステムを更新します
  • remove: 指定したKsplice識別子によって更新を削除するか、--allオプションを使用してすべての更新を削除します。

コマンド構文は次のとおりです。

ksplice [OPTIONS] SUBSYSTEM SUBCOMMAND

詳細は、ksplice(8)マニュアル・ページを参照してください。

Kspliceサブコマンド

  • ターゲットのリスト

    クライアントがパッチを適用できる実行中のすべてのユーザー・スペース・プロセスを表示するには、ksplice all list-targetsコマンドを使用します。次に例を示します:

    sudo ksplice all list-targets

    出力は次のようになります:

    User-space targets:
    
    glibc-libm-2.34.100.0.1.ksplice1.el9_4.2:
     - crond (46435)
     - ksplice (51778)
    
    glibc-libc-2.34.100.0.1.ksplice1.el9_4.2:
     - crond (46435)
     - ksplice (51778)
     - less (51781)
    
    openssl-libssl-3.0.7.27.0.3.ksplice1.el9:
     - ksplice (51778)
    
    openssl-libcrypto-3.0.7.27.0.3.ksplice1.el9:
     - ksplice (51778)
    
    
    Kernel version: Linux/x86_64/5.15.0-206.153.7.el9uek.x86_64/#2 SMP Thu May 9 15:59:05 PDT 2024

    このコマンドは、各Ksplice対応ライブラリについて、更新により影響を受ける実行中のプロセスをレポートします。このコマンドは、ロードされたカーネルの有効なバージョンもレポートします。

  • 更新の表示

    システムに適用された更新を表示するには、ksplice all showコマンドを使用します。

    sudo ksplice all show

    出力は次のようになります:

    Ksplice user-space updates:
    chronyd (705)
    httpd (1503)
      ├─ [h73qvumn]: CVE-2014-7817: Command execution in wordexp().
      └─ [ml55ngz4]: CVE-2015-1781: Privilege escalation in gethostbyname_r().
    
    Ksplice kernel updates:
    Installed updates:
    [nf9nfyzj] Enablement update for live patching.
    [fe2qyrtu] Denial-of-service when checking if an address is a jump label.
    [bvjiimlr] Enable livepatching of jump labels.
    [id9g0y8c] Known exploit detection.
    [aq4p03vt] Known exploit detection for CVE-2019-9213.
    [pjd4ekqc] Known exploit detection for CVE-2017-1000253.
    [syt1v7t7] Known exploit detection for CVE-2022-0847.
    [rpa4ixvy] Known exploit detection for CVE-2022-27666.
    [hisf1nu9] Known exploit detection for CVE-2016-5195.
    ...
    [gsf5wlo8] CVE-2024-36934: Information leak in QLogic BR-series Ethernet driver.
    [e12zrdy5] CVE-2024-36919: Denial-of-service in QLogic Fiber-Channel-over-Ethernet offload driver.
    [ednh9erf] CVE-2024-36904: Remote code execution in TCP/IP networking stack.
    [8vkhpraf] CVE-2024-27398: Denial-of-service in Bluetooth Classic (BR/EDR) features.
    
    Effective kernel version is 5.15.0-208.159.3.el9uek

    このコマンドは、実行中のプロセスに適用された更新およびカーネルへの更新をレポートします。この出力例では、KspliceはCVE-2014-7817およびCVE-2015-1781の更新を一部のユーザー・スペース・プロセスに適用しました。

    kspliceコマンドのスコープをユーザー・スペース更新またはカーネル更新に制限するには、コマンドでallのかわりにuserまたはkernelを指定します。

    PIDによって指定されたプロセスに適用された更新を表示するには、ksplice user showコマンドで--pid=$PID オプションを使用します。

    sudo ksplice user show --pid=705

    次のような出力が表示されます。

    chronyd (705)
      ├─ [h73qvumn]: CVE-2014-7817: Command execution in wordexp().
      └─ [ml55ngz4]: CVE-2015-1781: Privilege escalation in gethostbyname_r().
  • 更新の削除

    プロセスからすべての更新を削除するには、removeサブコマンドを使用します。次に例を示します:

    sudo ksplice user remove --all --pid=705

    Kspliceがプロセスに適用した特定の更新を削除するには、undoサブコマンドを使用します。

    sudo ksplice user undo --pid=705 h73qvumn

    ノート:

    指定した実行可能ファイルおよびライブラリにKspliceがパッチ適用しないようにできます。Ksplice拡張クライアントがユーザー・スペースのプロセスおよびライブラリにパッチを適用しないようにするを参照してください。

    Kspliceパッチは、/var/cache/uptrackディレクトリに格納されます。Kspliceは再起動後、ネットワークが構成される前の起動プロセスの早期に、これらのパッチを自動的に再適用して、システムを堅牢化したうえでリモート接続を確立できるようにします。

  • 使用可能な更新のリストとインストール

    使用可能なすべてのKspliceの更新をリストするには、upgradeサブコマンドを使用します:

    sudo ksplice -n kernel upgrade

    使用可能なすべてのKspliceの更新をインストールするには、次のようにupgradeサブコマンドを使用します:

    sudo ksplice -y user upgrade
  • カーネル・バージョンの表示

    Kspliceによって実行中のカーネルに更新が適用されると、カーネルはuname -aコマンドによって表示される元のブート・バージョンとは異なる有効なバージョンになります。

    カーネルの有効なバージョンを表示するには、ksplice kernel uname -rコマンドを使用します。

    sudo ksplice kernel uname -r

    ksplice kernel unameコマンドは、-a-rなどのよく使用されるunameフラグをサポートし、カーネルへのパッチ適用をアプリケーションが検出できるようにします。有効なバージョンは、Ksplice Uptrackがカーネルに適用した最新のパッチのバージョン番号に基づきます。

例3-1 使用例

次の例は、Ksplice更新に関する情報を表示したり、システム上のKsplice更新を管理する方法を示しています。

実行中のカーネルにKsplice Uptrackによって適用された更新を表示します。

sudo ksplice kernel show

インストール可能な更新を表示します。

sudo ksplice kernel show --available

カーネルからすべての更新を削除します。

sudo ksplice kernel remove --all
Kspliceがシステムの次回再起動時に更新を再適用しないようにするには、空のファイル/etc/uptrack/disableを作成します。
touch /etc/uptrack/disable

または、システムの次回再起動時に、ブート・コマンドラインにパラメータとしてnouptrackを指定できます。