Linux 内核CVE-2024-1086漏洞修复方法

漏洞说明

  • 漏洞详情
    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

  • 修复建议

    1. 升级Linux内核版本修复漏洞。
    2. 若相关用户暂时无法进行更新,如果业务不需要,可以通过阻止加载受影响的 netfilter (nf_tables) 内核模块来缓解。
    3. 如果无法禁用该模块,可在非容器化部署中,对用户命名空间进行限制。

漏洞复现

Github官方Linux CVE-2024-1086漏洞复现视频

复现步骤

  1. 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.
    
  2. 切换到普通用户账户
    # 新建一个连接使用普通账号登录,不要使用su 命令切换账号
    # 已经切换到testuser账号了
    [testuser@localhost ~]$
    
  3. 在普通账号执行越权命令
    # 普通账号查看/etc/shadow文件 被拒绝,该文件存储系统用户密码及相关安全信息的文件只有超级管理员才有足够权限来执行这个命令以查看其内容
    [testuser@localhost ~]$ cat /etc/shadow
    cat: /etc/shadow: Permission denied
    
  4. 上传官方复现漏洞脚本
    没有脚本可以点击这里下载
    # 上传完成后给脚本文件添加执行权限
    [testuser@localhost ~]$ chmod 777 exploit
    
  5. 执行脚本
    # 在脚本目录执行该脚本
    [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?
    
  6. 脚本执行完提升权限成功
    # 输入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
      
  • 17
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 19
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

20000_ZuuuuYao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值