Centos 9/8/7 离线/在线升级内核(漏洞编号CVE-2024-1086)

北京吉普2020 2024-06-23 08:37:12 阅读 97

一、背景

针对Linux内核提取权限漏洞 (漏洞编号CVE-2024-1086),整理离线环境的修复方案。本文以离线修复方案为主进行说明,第八章对在线修复方案进行说明。

(一) 漏洞简介

近日,绿盟科技CERT监测网上有研究员公开披露了一个Linux内核权限提升漏洞(CVE-2024-1086)的细节信息与验证工具,由于Linux内核的netfilter:nf_tables组件存在释放后重利用漏洞, nft_verdict_init() 函数允许在钩子判定中使用正值作为丢弃错误,当 NF_DROP 发出类似于 NF_ACCEPT 的丢弃错误时,nf_hook_slow() 函数会导致双重释放漏洞,本地攻击者利用此漏洞可将普通用户权限提升至 root 权限。目前已有PoC公开,请相关用户尽快采取措施进行防护。目前已有PoC公开,请相关用户尽快采取措施进行防护。

Netfilter是Linux内核提供的一个框架,它允许以自定义处理程序的形式实现各种与网络相关的操作。Netfilter为数据包过滤、网络地址转换和端口转换提供了各种功能和操作,它们提供了通过网络引导数据包和禁止数据包到达网络中的敏感位置所需的功能。

(二) 影响范围

受影响版本

3.15 <= Linux kernel < 6.1.76

6.2 <= Linux kernel < 6.6.15

6.7 <= Linux kernel < 6.7.3

Linux kernel = 6.8-rc1

不受影响版本

Linux kernel = 4.19.307

Linux kernel = 5.4.269

Linux kernel = 5.10.210

Linux kernel = 5.15.149

Linux kernel >= 6.1.76

Linux kernel >= 6.6.15

Linux kernel >= 6.7.3

Linux kernel >= 6.8-rc2

二、检查内核版本

远程服务器,使用uname -rs命令查看操作系统内核版本

三、下载新版内核

(一) 下载公钥,用于校验软件包

RPM-GPG-KEY-elrepo.org

https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

(二) 下载ELRepo源

根据操作系统下载对应版本ELRepo源

Centos 9:elrepo-release-9.el9.elrepo.noarch.rpm

https://www.elrepo.org/elrepo-release-9.el9.elrepo.noarch.rpm

其他操作系统

Centos 8:

https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm

Centos 7:

https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm

(三) 下载新版内核

1. 方案A

找一台相同操作系统,可联网的服务器,下载内核相关安装包,默认下载最新版本

yum install --downloadonly --downloaddir=/home/kernel --enablerepo=elrepo-kernel kernel-mlyum install --downloadonly --downloaddir=/home/kernel --enablerepo=elrepo-kernel kernel-ml-coreyum install --downloadonly --downloaddir=/home/kernel --enablerepo=elrepo-kernel kernel-ml-modules

命令说明:

yum install 安装软件包

–enablerepo=elrepo-kernel 此次安装过程中临时启用elrepo-kernel这个仓库

kernel-ml 新版内核软件包名称

注意默认源中的内核软件包名称为kernel

ml版与lt版可共存

目前CetnOS 9只有ml版本

kernel-ml: 稳定主线版,支持周期短,更新速度快,更快体验新特性。

kernel-lt: 长期维护版,支持周期长,更新速度慢,更加稳定。

2. 方案B

访问ELRepo官方网站下载对应内核版本

①打开下载页面

download [ELRepo Wiki]

②选择任意镜像网站,下载内核版本即可

Centos 9:Index of /kernel/el9/x86_64/RPMS

其他操作系统

Centos 8:Index of /kernel/el8/x86_64/RPMS

Centos 7:Index of /kernel/el7/x86_64/RPMS

③下载如下三个内核包

kernel-ml-6.9.3-1.el9.elrepo.x86_64.rpm

kernel-ml-core-6.9.3-1.el9.elrepo.x86_64.rpm

kernel-ml-modules-6.9.3-1.el9.elrepo.x86_64.rpm

(四) 下载结果如下,共有五个文件

四、安装新版内核

将下载的安装包上传至目标服务器,使用cd命令导航至安装包所在目录

cd /home/soft

①导入公钥,用于校验软件包

rpm --import RPM-GPG-KEY-elrepo.org

②批量安装rpm包(不考虑依赖顺序,强制安装)

rpm -Uvh *.rpm --nodeps --force

五、关闭安全引导(可选)

新版内核安装完,重启服务器,部分服务器会报错无法进入,需要联系虚拟机管理人员禁用 UEFI 安全引导

具体操作步骤如下:

①关闭虚拟机

②邮件虚拟机编辑设置

③虚拟机选项》引导选项》安全引导,去除已启用

④启动虚拟机即可正常进入服务器

VMVare有 UEFI 安全引导的说明

六、重启服务器

重启服务器使用uname -rs命令,查看内核版本,已升级至最新版本

七、参考:

CentOS Stream 9升级内核_centos9内核版本-CSDN博客文章浏览阅读3.6k次,点赞2次,收藏5次。CentOS Stream 9升级内核_centos9内核版本

https://blog.csdn.net/u010044182/article/details/128322383

https://zhuanlan.zhihu.com/p/689767587

icon-default.png?t=N7T8

https://zhuanlan.zhihu.com/p/689767587

八、在线升级及异常处理

(一) 在线升级步骤

执行以下命令,导入ELRepo仓库。

1. 导入公钥,用于校验软件包

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

2. 导入yum源,用于从该仓库下载软件包

yum install https://www.elrepo.org/elrepo-release-9.el9.elrepo.noarch.rpm

3. 安装新版内核

导入ELRepo仓库后,执行以下命令,安装新版内核。

yum install --enablerepo=elrepo-kernel kernel-ml

命令说明:

yum install 安装软件包

–enablerepo=elrepo-kernel 此次安装过程中临时启用elrepo-kernel这个仓库

kernel-ml 新版内核软件包名称

注意默认源中的内核软件包名称为kernel

ml版与lt版可共存

目前CetnOS 9只有ml版本

kernel-ml: 稳定主线版,支持周期短,更新速度快,更快体验新特性。

kernel-lt: 长期维护版,支持周期长,更新速度慢,更加稳定。

4. 安装完成后重启系统,CentOS会自动使用最新安装的内核进行启动。

如果报错参考《五、关闭安全引导(可选)》

(二) 异常1-PG数据库相关

1. 异常报错

Error: Failed to download metadata for repo 'pgdg-common': repomd.xml GPG signature verification error: Bad GPG signature

2. 处理步骤

dnf --disablerepo=* -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm

3. 参考

linux - Failed to download metadata for repository 'pgdg-common' on CentOS 7 - Stack Overflow

icon-default.png?t=N7T8

https://stackoverflow.com/questions/77782695/failed-to-download-metadata-for-repository-pgdg-common-on-centos-7

PostgreSQL RPM repository GPG key update - 3 January 2024 - PostgreSQL YUM Repository

icon-default.png?t=N7T8

https://yum.postgresql.org/news/pgdg-rpm-repo-gpg-key-update/

(三) 异常2-Centos 8

1. 异常报错

Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist

2. 处理步骤

1.进入yum的repos目录

cd /etc/yum.repos.d/

2.修改所有的CentOS文件内容

sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*

sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*

3.生成缓存

yum clean all

yum makecache

4.运行yum update

慎用,我更新了1000多个包,还不包括内核,此处应可跳过直接进行后续内核升级操作

yum update -y

3. 参考

Failed to download metadata for repo ‘appstream‘: Cannot prepare internal mirrorlist No URLs in..._failed to download metadata for repo 'appstream': -CSDN博客文章浏览阅读399次。博主在使用yum源安装时候,出现下面错误“错误:Failed to download metadata for repo ‘AppStream’: Cannot prepare internal mirrorlist:No URLs in mirrorlist查阅资料发现是centos8在2021年年底停止了服务现在提供一种解决方案亲测有效1、进入yum的repos目录cd /etc/yum.repos.d/2、修改所有的CentOS文件内容sed -i 's/mi_failed to download metadata for repo 'appstream': cannot prepare internal mi

https://blog.csdn.net/weixin_62440328/article/details/134032675



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。