专栏名称: 深信服千里目安全实验室
深信服科技旗下安全实验室,致力于网络安全攻防技术的研究和积累,深度洞察未知网络安全威胁,解读前沿安全技术。
目录
相关文章推荐
武汉大学学生会  ·  青春本就是一片液态的疆域 ·  4 小时前  
浙江大学  ·  浙大病理AI助手,3秒锁定癌症病灶 ·  昨天  
武汉大学学生会  ·  珞珈青年社交观察局|当代青年的“聊缩力”困境 ... ·  3 天前  
武汉大学学生会  ·  图集|愿除旧妄生新意 ·  3 天前  
51好读  ›  专栏  ›  深信服千里目安全实验室

Linux内核eBPF权限提升漏洞通告(CVE-2020-27194)

深信服千里目安全实验室  · 公众号  ·  · 2020-11-04 19:28

正文

linux内核的bpf模块的verifier.c文件中的scalar32_min_max_or() 函数存在漏洞。 由于该函数错误地使用了64位值处理边界跟踪,导致边界检查错误,攻击者可以利用此漏洞进行权限提升。 Linux kernel5.7至5.8.14版本受影响。

漏洞名称 : Linux内核eBPF权限提升漏洞(CVE-2020-27194)

威胁等级 : 中危

影响范围 : Linux kernel 5.7-5.8.14

漏洞类型 : 提权

利用难度 : 中等


漏洞分析


1 Linux Kernel介绍

Linux Kernel是由 Linus Torvalds最初开发的开源的操作系统内核。实现了包括CPU,进程,内存,文件系统等核心模块,被广泛移植到Alpha、arc、arm、ia64、mips、powerpc、sparc、x86-64等许多体系结构上。目前多用于各种服务器和物联网终端等,也可在桌面终端使用Linux。


2 漏洞描述

linux内核的bpf模块的verifier.c文件中的scalar32_min_max_or() 函数存在漏洞。由于该函数错误地使用了64位值处理边界跟踪,导致边界检查错误,攻击者可以利用此漏洞进行权限提升。Linux kernel5.7至5.8.14版本受影响。


3 漏洞分析

该漏洞位于linux的kernel/bpf/verifier.c文件的scalar32_min_max_or() 函数,这个函数实现了ALU32(32位寄存器操作)的或运算的边界跟踪,其函数代码如下:

涉及漏洞的部分代码及其修复如下:

主要的修改是将原来的smin_value,umin_value和umax_value改为了这些数值对应的32位值。原先的赋值将64位无符号值直接赋值给32位有符号变量是错误的,这在umax_value大于2^32时会出现整数截断,导致边界检查绕过。修复的代码进行了正确的32位有符号值比较。


影响范围


影响版本

Linux kernel 5.7-5.8.14


解决方案


1 检测方案

输入以下命令查看本机的内核版本

uname -a

如显示的Linux version大于等于5.7且小于等于5.8.14,则漏洞可能存在。


2 修复建议

升级内核版本,可从以下链接选择5.8.15及其后的版本安装:

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

或使用命令升级:

sudo apt-get install linux-generic-lts-xenial linux-image-generic-lts-xenial (ubuntu,debian等系统使用)

yum -y update kernel (CentOS,RedHat等系统使用)


3 临时修复方案

将kernel.unprivileged_bpf_disabled sysctl设置为1,限制普通用户权限可以临时缓解该漏洞,方法如下:

$sudo sysctl kernel.unprivileged_bpf_disabled=1

$ echo kernel.unprivileged_bpf_disabled=1 | \sudo tee /etc/sysctl.d/CVE-2020-27194.conf(ubuntu,debian等系统使用)

sysctl -w kernel.unprivileged_bpf_disabled=1(CentOS,RedHat等系统使用)



时间轴








请到「今天看啥」查看全文