阅读量:0
文章目录
漏洞说明
漏洞详情
Linux kernel权限提升漏洞(CVE-2024-1086)基本情况:攻击者利用该漏洞可在本地进行提权操作,最高可获取目标服务器的root管理权限。影响范围
3.15<= Linux kernel < 6.1.76
5.2<= Linux kernel < 6.6.15
6.7<= Linux kernel < 6.7.3
6.8:rc1 = Linux kernel修复建议
- 升级Linux内核版本修复漏洞。
- 若相关用户暂时无法进行更新,如果业务不需要,可以通过阻止加载受影响的 netfilter (nf_tables) 内核模块来缓解。
- 如果无法禁用该模块,可在非容器化部署中,对用户命名空间进行限制。
漏洞复现
Github官方Linux CVE-2024-1086漏洞复现视频
复现步骤
- root用户创建普通账号
# useradd 命令创建用户 [root@localhost testuser]# useradd testuser # passwd 命令设置密码 [root@localhost testuser]# passwd testuser Changing password for user testuser. New password: Retype new password: passwd: all authentication tokens updated successfully.
- 切换到普通用户账户
# 新建一个连接使用普通账号登录,不要使用su 命令切换账号 # 已经切换到testuser账号了 [testuser@localhost ~]$
- 在普通账号执行越权命令
# 普通账号查看/etc/shadow文件 被拒绝,该文件存储系统用户密码及相关安全信息的文件只有超级管理员才有足够权限来执行这个命令以查看其内容 [testuser@localhost ~]$ cat /etc/shadow cat: /etc/shadow: Permission denied
- 上传官方复现漏洞脚本
没有脚本可以点击这里下载# 上传完成后给脚本文件添加执行权限 [testuser@localhost ~]$ chmod 777 exploit
- 执行脚本
# 在脚本目录执行该脚本 [testuser@localhost ~]$ ./exploit [*] creating user namespace (CLONE_NEWUSER)... [*] creating network namespace (CLONE_NEWNET)... [*] setting up UID namespace... [*] configuring localhost in namespace... [*] setting up nftables... [+] running normal privesc [*] waiting for the calm before the storm... [*] sending double free buffer packet... [*] spraying 16000 pte's... [*] checking 16000 sprayed pte's for overlap... [+] confirmed double alloc PMD/PTE [+] found possible physical kernel base: 0000000221000000 [+] verified modprobe_path/usermodehelper_path: 0000000222a57ee0 ('/sanitycheck')... [*] overwriting path with PIDs in range 0->65536... [!] verified modprobe_path address does not work... CONFIG_STATIC_USERMODEHELPER enabled?
- 脚本执行完提升权限成功
# 输入id命令 看到已经是root权限了 sh-5.1# id uid=0(root) gid=0(root) groups=0(root) # 再输入 cat /etc/shadow 已经能访问了 sh-5.1# cat /etc/shadow | head -n 1 root:$6$jg8rz9HDnku9ji$Ql8fJ67n8vWy1thQ2o5nkdwvsBTS.2YxWJeRGxCo41bUk3LvII680RKaLXfwX2B383Y.O0/GkNP6d0:19843:0:99999:7:::
查看系统版本
通过查询系统版本信息验证是否在受影响版本内,不同发行版可能文件名不一样
查看系统版本
[root@localhost ~]# cat /etc/os-release NAME="openEuler" VERSION="22.03 LTS" ID="openEuler" VERSION_ID="22.03" PRETTY_NAME="openEuler 22.03 LTS" ANSI_COLOR="0;31"
内核版本
[root@localhost ~]# uname -r 5.10.0-60.18.0.50.oe2203.x86_64
CVE-2024-1086漏洞修复方法
适用系统版本
- Ubuntu
- 22.04
- 18.04
- OpenEuler
- 22.03
一、OpenEuler 修复方法
22.03 版本修复方法
查看内核版本
# 执行uname -r 查看内核版本 [root@localhost ~]# uname -r 5.10.0-60.18.0.50.oe2203.x86_64
在root权限下执行
# 使用dnf包管理器更新软件也包括更新内核,如果更新的软件较多且服务器在国外会下载较慢 [root@localhost ~]# dnf update -y
更新完成后重启系统
# 执行重启命令 [root@localhost ~]# reboot
重启后查看内核版本
# 内核版本升级完成漏洞修复 [root@localhost ~]# uname -r 5.10.0-60.139.0.166.oe2203.x86_64
再次复现漏洞
# 已经无法提升权限,漏洞修复成功
二、Ubuntu 修复方法
20.04 版本修复方法
查看内核版本
# 执行uname -r 查看内核版本 root@tzsdbusiness01:~# uname -r 5.4.0-182-generic
在root权限下执行更新软件资源库
# 更新软件资源库 root@tzsdbusiness01:~# apt update
root下执行更新软件库
更新软件库更新内核 root@tzsdbusiness01:~# apt upgrade -y
更新完成重启系统
# 执行重启 root@tzsdbusiness01:~# reboot
18.04 版本修复方法
- 查看内核版本
# 执行uname -r 查看内核版本 suroot@prod-dn03:~$ uname -r 5.4.0-150-generic
- 在root权限下执行更新软件资源库
# 更新软件资源库 root@prod-dn03:~# apt update
- root下执行更新软件库
# root下执行更新软件库 root@prod-dn03:~# apt upgrade -y
- 设置内核参数
# 版本为18.04的还需执行以下命令,其他版本无需执行 sudo sysctl -w kernel.unprivileged_userns_clone=0 echo kernel.unprivileged_userns_clone=0 | \sudo tee /etc/sysctl.d/99-disable-unpriv-userns.conf
- 重启系统
# 执行重启完成修复 root@prod-dn03:~# reboot
- 查看内核版本