livepatch-mgr是Alibaba Cloud Linux操作系统提供的内核热补丁管理工具,您可以在Alibaba Cloud Linux 2操作系统中使用livepatch-mgr查看、安装或卸载内核热补丁。

背景信息

Alibaba Cloud Linux 2发行版为保障系统的稳定与安全,会紧密跟进Linux业界与社区发现的各种软件问题及安全漏洞(CVE),及时更新包括内核在内的软件包,修复软件缺陷(Bugfix)并修补安全漏洞(CVE)。Alibaba Cloud Linux 2的安全更新记录,请参见Alibaba Cloud Linux 2.1903 Security Advisories

您可以基于安全更新记录,选择冷补丁或热补丁的方式更新软件包,本文主要提供内核热补丁管理工具livepatch-mgr的使用说明。

安装并查看livepatch-mgr工具

  1. 远程连接需要热补丁的Alibaba Cloud Linux实例。
    具体操作,请参见连接方式概述
  2. 运行以下命令,安装内核热补丁管理工具livepatch-mgr。
    yum install livepatch-mgr -y
  3. 安装完成后,运行以下命令,查看livepatch-mgr支持的功能。
    livepatch-mgr -h
    命令行返回结果如下图所示:livepatch-mgr使用说明livepatch-mgr提供了4个子命令,每个子命令支持的功能说明如下:
    • update:安装并使能适用于本主机的热补丁。命令的具体使用说明,请参见安装并使能热补丁
    • list:查询本主机的热补丁相关信息。命令的具体使用说明,请参见查询热补丁信息
    • load:加载(使能)已安装在本主机的热补丁。命令的具体使用说明,请参见加载(使能)热补丁
    • unload:卸载已安装在本主机的热补丁。命令的具体使用说明,请参见卸载热补丁

安装并使能热补丁

安装并使能本主机适用的所有热补丁命令如下:
livepatch-mgr update
同时,livepatch-mgr工具提供了--bugfix--security以及-cve=<CVEs>参数,供您在不同的场景下选择使用。具体说明如下:
  • 安装并使能本主机适用的Bugfix类热补丁。
    livepatch-mgr update --bugfix
  • 安装并使能本主机适用的CVE类热补丁。
    livepatch-mgr update --security
  • 安装并使能指定的CVE类热补丁。
    livepatch-mgr update -cve=<CVEs>
    变量<CVEs>表示可以指定一个或多个CVE ID,当指定多个CVE ID时,需要使用半角逗号(,)间隔,且严格区分变量值的大小写。例如:
    livepatch-mgr update -cve=CVE-2021-33909,CVE-2021-22555
    说明 CVE ID的获取请参见Alibaba Cloud Linux 2.1903 Security Advisories
livepatch-mgr update命令为例,安装并使能本主机适用的所有热补丁的返回结果如下:
已加载插件:fastestmirror, langpacks, releasever-adapter, update-motd
Loading mirror speeds from cached hostfile
正在解决依赖关系
--> 正在检查事务
---> 软件包 kernel-hotfix-4121479-21.al7.x86_64.0.1.0-1.al7 将被 安装
--> 解决依赖关系完成

依赖关系解决

================================================================================
 Package                           架构        版本             源         大小
================================================================================
正在安装:
 kernel-hotfix-4121479-21.al7      x86_64      1.0-1.al7        plus      244 k

事务概要
================================================================================
安装  1 软件包

总下载量:244 k
安装大小:1.0 M
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安装    : kernel-hotfix-4121479-21.al7-1.0-1.al7.x86_64               1/1
installing /var/khotfix/4.19.91-21.al7.x86_64/4121479/kpatch-4121479.ko (4.19.91-21.al7.x86_64)
loading patch module: /var/khotfix/4.19.91-21.al7.x86_64/4121479/kpatch-4121479.ko
  验证中      : kernel-hotfix-4121479-21.al7-1.0-1.al7.x86_64               1/1

已安装:
  kernel-hotfix-4121479-21.al7.x86_64 0:1.0-1.al7

完毕!

查询热补丁信息

列出本主机适用的所有热补丁命令如下:
livepatch-mgr list
同时,livepatch-mgr工具提供了--installed--bugfix--security--running以及--available参数,供您在不同的场景下选择使用。具体说明如下:
  • 列出本主机已安装的热补丁。
    livepatch-mgr list --installed
  • 列出本主机已安装的Bugfix类热补丁。
    livepatch-mgr list --installed --bugfix
  • 列出本主机已安装的CVE类热补丁。
    livepatch-mgr list --installed --security
  • 列出本主机正在生效的所有热补丁。
    livepatch-mgr list --running
  • 列出本主机正在生效的Bugfix类热补丁。
    livepatch-mgr list --running --bugfix
  • 列出本主机正在生效的CVE类热补丁。
    livepatch-mgr list --running --security
  • 列出本主机可用的所有热补丁。
    livepatch-mgr list --available
  • 列出本主机可用的Bugfix类热补丁。
    livepatch-mgr list --available --bugfix
  • 列出本主机可用的CVE类热补丁。
    livepatch-mgr list --available --security
livepatch-mgr list命令为例,列出本主机适用的所有热补丁的返回结果如下。根据返回结果可以将查询到的热补丁分为三类:
  • Loaded patch modules:已加载(使能)的热补丁
  • Installed patch modules:已安装的热补丁
  • Available and not installed patch modules:可用且未安装的热补丁
Loaded patch modules:
               5692820 fix_trace_buffer_out_bound
CVE-2021-33909 5956925  seq_file: disallow extremely large seq buffer allocations;
               4375449  ovl: fix dentry leak in ovl_get_redirect;
               5260815  ext4: Avoid freeing inodes on dirty list;
               5000697  mm, compaction: make capture control handling safe wrt interrupts;
CVE-2021-22555 5928799  netfilter: x_tables: fix compat match/target pad out-of-bound write;
               4121479  fix XDP socket queue descriptor entries overflow;

Installed patch modules:
               5692820 fix_trace_buffer_out_bound
CVE-2021-33909 5956925  seq_file: disallow extremely large seq buffer allocations;
               4375449  ovl: fix dentry leak in ovl_get_redirect;
               5260815  ext4: Avoid freeing inodes on dirty list;
               5000697  mm, compaction: make capture control handling safe wrt interrupts;
CVE-2021-22555 5928799  netfilter: x_tables: fix compat match/target pad out-of-bound write;
               4121479  fix XDP socket queue descriptor entries overflow;

Available and not installed patch modules:
CVE-2020-14386 kernel-hotfix-3768348-21.al7.x86_64 Using tp_reserve to calculate netoff can overflow as tp_rese...(more)
               kernel-hotfix-5902278-21.al7.x86_64  We notice that hung task happens in a conner but practical ...(more)

加载(使能)热补丁

加载本主机中已安装的所有热补丁命令如下:
livepatch-mgr load
同时,livepatch-mgr工具提供了--security--bugfixload <目标热补丁标识>参数,供您在不同的场景下选择使用。具体说明如下:
  • 加载本主机中已安装的CVE类热补丁。
    livepatch-mgr load --security
  • 加载本主机中已安装的Bugfix类热补丁。
    livepatch-mgr load --bugfix
  • 加载本主机中某一具体的热补丁。
    livepatch-mgr load <目标热补丁标识>
    变量<目标热补丁标识>表示支持通过热补丁中的内核模块(ko文件)绝对路径或模块名称指定要加载的热补丁信息。例如:
    • 通过热补丁中内核模块(ko文件)的绝对路径指定热补丁包,命令使用示例如下:
      livepatch-mgr load /var/khotfix/4.19.91-21.al7.x86_64/5956925/kpatch-5956925.ko
      返回结果示例:
      loading kernel-hotfix-5956925
      loading patch module: /var/khotfix/4.19.91-23.al7.x86_64/5956925/kpatch-5956925.ko
    • 通过热补丁的模块名称(不带.ko后缀)指定热补丁包,命令使用示例如下:
      livepatch-mgr load kpatch-5260815
      返回结果示例:
      loading kernel-hotfix-5260815
      loading patch module: /var/khotfix/4.19.91-23.al7.x86_64/5260815/kpatch-5260815.ko
    • 通过热补丁的模块名称(带.ko后缀)指定热补丁包,命令使用示例如下:
      livepatch-mgr load kpatch-4121479.ko
      返回结果示例:
      loading kernel-hotfix-4121479
      loading patch module: /var/khotfix/4.19.91-23.al7.x86_64/4121479/kpatch-4121479.ko
livepatch-mgr load命令为例,加载本主机中已安装的所有热补丁的返回结果如下所示:
loading kernel-hotfix-5956925-23.x86_64
loading patch module: /var/khotfix/4.19.91-23.al7.x86_64/5956925/kpatch-5956925.ko

loading kernel-hotfix-5902278-23.x86_64
loading patch module: /var/khotfix/4.19.91-23.al7.x86_64/5902278/kpatch-5902278.ko

loading kernel-hotfix-5260815-23.x86_64
loading patch module: /var/khotfix/4.19.91-23.al7.x86_64/5260815/kpatch-5260815.ko

loading kernel-hotfix-5928799-23.x86_64
loading patch module: /var/khotfix/4.19.91-23.al7.x86_64/5928799/kpatch-5928799.ko

loading kernel-hotfix-5577959-23.x86_64
loading patch module: /var/khotfix/4.19.91-23.al7.x86_64/5577959/kpatch-5577959.ko

卸载热补丁

卸载本主机中已安装的所有热补丁命令如下:
livepatch-mgr unload
同时,livepatch-mgr工具提供了--security--bugfixunload <目标热补丁标识>参数,供您在不同的场景下选择使用。具体说明如下:
  • 卸载本主机中CVE类热补丁。
    livepatch-mgr unload --security
  • 卸载本主机中Bugfix类热补丁。
    livepatch-mgr unload --bugfix
  • 卸载本主机中某一具体的热补丁。
    livepatch-mgr unload <目标热补丁标识>
    变量<目标热补丁标识>表示支持通过热补丁中的内核模块(ko文件)绝对路径或模块名称指定要卸载的热补丁信息。例如:
    • 通过热补丁中内核模块(ko文件)的绝对路径指定热补丁包,命令使用示例如下:
      livepatch-mgr unload /var/khotfix/4.19.91-21.al7.x86_64/5928799/kpatch-5928799.ko
      返回结果示例:
      unoading kernel-hotfix-5928799
      disabling patch module: kpatch_5928799
      unloading patch module: kpatch_5928799
    • 通过热补丁的模块名称(不带.ko后缀)指定热补丁包,命令使用示例如下:
      livepatch-mgr unload kpatch_5692820
      返回结果示例:
      unoading kernel-hotfix-5692820
      disabling patch module: kpatch_5692820
      unloading patch module: kpatch_5692820
    • 通过热补丁的模块名称(带.ko后缀)指定热补丁包,命令使用示例如下:
      livepatch-mgr unload kpatch_5000697.ko
      返回结果示例:
      unoading kernel-hotfix-5000697
      disabling patch module: kpatch_5000697
      unloading patch module: kpatch_5000697
livepatch-mgr unload命令为例,卸载本主机中已安装的所有热补丁的返回结果示例如下:
unloading kernel-hotfix-5956925-23.x86_64
disabling patch module: kpatch_5956925
unloading patch module: kpatch_5956925

unloading kernel-hotfix-5902278-23.x86_64
disabling patch module: kpatch_5902278
unloading patch module: kpatch_5902278

unloading kernel-hotfix-5260815-23.x86_64
disabling patch module: kpatch_5260815
unloading patch module: kpatch_5260815

unloading kernel-hotfix-5928799-23.x86_64
disabling patch module: kpatch_5928799
unloading patch module: kpatch_5928799

unloading kernel-hotfix-5577959-23.x86_64
disabling patch module: kpatch_5577959
unloading patch module: kpatch_5577959