文章目录
Linux Kernel权限提升漏洞(CVE-2023-1829)centos7解决方案
一、漏洞说明
-
漏洞概述
6月20日,启明星辰VSRC监测到Linux Kernel权限提升漏洞(CVE-2023-1829)的漏洞细节及PoC在互联网上公开,该漏洞的CVSSv3评分为7.8。
Linux 内核流量控制索引过滤器 (tcindex) 中存在释放后使用漏洞,由于tcindex_delete 函数在某些情况下不能正确停用过滤器,同时删除底层结构,可能会导致双重释放结构,本地低权限用户可利用该漏洞将其权限提升为 root。 -
影响范围
2.6.12-rc2 <= Linux Kernel版本 < 6.3 -
整改建议
目前该漏洞已经修复,受影响用户可将Linux内核更新到以下版本:
- Linux Kernel 4.14.308
- Linux Kernel 4.19.276
- Linux Kernel 5.4.235
- Linux Kernel 5.10.173
- Linux Kernel 5.15.100
- Linux Kernel 6.1.18
- Linux Kernel 6.2.5
- Linux Kernel 6.3
二、centos7升级内核至kernel-lt-5.4.248,
综合评估,升级到kernel-lt-5.4.248,原因如下:
A. 长期支持版本(kernel-lt),更加稳定一些
B. 与当前版本差异小
关于内核种类:
kernel-ml
kernel-ml 中的ml是英文【 mainline stable 】的缩写,elrepo-kernel中罗列出来的是最新的稳定主线版本。
kernel-lt
kernel-lt 中的lt是英文【 long term support 】的缩写,elrepo-kernel中罗列出来的长期支持版本。
方式一:在线yum升级内核
- 载入密钥
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
- 安装 ELRepo 最新版本
yum install -y https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
- 列出可以使用的 kernel 包版本:
lt:长期维护版
ml:最新稳定版
yum list available --disablerepo=* --enablerepo=elrepo-kernel
- 安装指定的 kernel 版本
yum install -y kernel-lt-5.4.248-1.el7.elrepo --enablerepo=elrepo-kernel
- 设置开启系统启动时使用的内核版本
内核安装好后,需要设置为默认启动选项并重启后才会生效.
查看系统上的所有可用内核:
sudo awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
[root@rccccc sjnh]# sudo awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
0 : CentOS Linux (5.4.248-1.el7.elrepo.x86_64) 7 (Core)
1 : CentOS Linux (3.10.0-957.27.2.el7.x86_64) 7 (Core)
2 : CentOS Linux (3.10.0-514.el7.x86_64) 7 (Core)
3 : CentOS Linux (0-rescue-7455408d9cd4479488e3432aee44b4ce) 7 (Core)
刚刚安装的内核即0 : CentOS Linux (5.4.248-1.el7.elrepo.x86_64) 7 (Core)
把grub2默认设置为0(及默认启动刚安装的内核)
grub2-set-default 0
或者
grub2-set-default "CentOS Linux (5.4.248-1.el7.elrepo.x86_64) 7 (Core)"
或者手动修改
vim /etc/default/grub
将GRUB_DEFAULT设置为0
查看内核启动项
grub2-editenv list
- 生成 grub 配置文件并重启
- 生成grup配置文件
grub2-mkconfig -o /boot/grub2/grub.cfg
- 重启服务器
reboot
- 验证是否安装成功
uname -r
- 删除旧内核
rpm -qa | grep kernel
yum remove kernel-版本
方式二:离线rpm升级内核
- 下载rpm包
kernel rpm 历史版本:
https://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/
包说明:
- kernel-lt-headers 包含用于编译内核模块所需的头文件。
- kernel-lt-devel 包含用于开发和构建内核模块的库和工具。
- kernel-lt 是实际的内核包,包含了最新的长期支持内核版本。
如果你需要进行内核模块的开发或构建,你可能需要安装 kernel-lt-headers 和 kernel-lt-devel 包。而如果你只是想安装最新的长期支持内核版本,你可以直接安装 kernel-lt 包。
我这里只下载kernel-lt包
https://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-5.4.248-1.el7.elrepo.x86_64.rpm
- 下载密钥
https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
- 上传至服务器并安装
导入密钥
rpm --import ./RPM-GPG-KEY-elrepo.org
安装内核
rpm -ivh ./kernel-lt-5.4.248-1.el7.elrepo.x86_64.rpm
- 查看已安装的内核版本
rpm -qa | grep kernel
sudo awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
- 设置开启系统启动时使用的内核版本
grub2-set-default 0
或者
grub2-set-default "CentOS Linux (5.4.248-1.el7.elrepo.x86_64) 7 (Core)"
或者手动修改
vim /etc/default/grub
将GRUB_DEFAULT设置为0
查看内核启动项
grub2-editenv list
- 生成 grub 配置文件并重启
- 生成grup配置文件
grub2-mkconfig -o /boot/grub2/grub.cfg
- 重启服务器
reboot
- 验证是否安装成功
uname -r
- 删除旧内核
rpm -qa | grep kernel
yum remove kernel-版本