2020年3月30日,Daniel Borkmann发布了一个Linux内核的更新补丁。该补丁修复了一个漏洞:CVE-2020-8835。该漏洞是因为BPF验证程序没有正确计算一些特定操作的寄存器范围,导致寄存器边界计算不正确,进而引发越界读取和写入。攻击者利用该漏洞可造成内核信息泄露和权限提升。
漏洞名称:Linux内核权限提升漏洞CVE-2020-8835
威胁等级:高危
影响范围:Linux Kernel 5.4-5.5
漏洞类型:信息泄露、权限提升
利用难度:困难
漏洞分析
1 相关组件介绍
BPF的全称是Berkeley Packet Filter,是一个用于过滤网络报文的架构。BPF的过滤功能是以对于BPF虚拟机机器语言的一种解释器的形式实现的,使用这种语言编写的程序可以抓取数据包,对数据包中的数据采取算术操作,并将结果与常量或数据包中的数据或结果中的测试位比较,根据比较的结果决定接受还是拒绝封包。传统的Unix BPF实现能够被用于用户态,尽管它是为内核态编写。这是通过编译时的条件预处理完成的。
2漏洞分析
Linux内核存在权限提升漏洞,该漏洞是因为BPF验证程序没有正确计算一些特定操作的寄存器范围,导致寄存器边界计算不正确,进而引发越界读取和写入。攻击者利用该漏洞可造成内核信息泄露和权限提升。
导致该漏洞的原因是由于__reg_bound_offset32()函数的一处错误引起的,该函数用于验证BPF字节码中的32位操作,由于寄存器边界的计算不正确,因此在处理专门设计的BPF应用程序时,出现了在内核内存区域中分配的缓冲区之外写入和读取数据的条件。
该函数的代码如下所示:
影响范围
受影响版本
Linux Kernel 5.4
Linux Kernel 5.5
解决方案
1 检测方式
使用如下命令检测当前内核版本:
cat /proc/version
若检测当前版本在受影响范围内,则存在上述安全风险。
2修复建议
官方已发布该漏洞的修复补丁。
补丁链接:
https://lore.kernel.org/bpf/[email protected]/T/#u
2临时解决方案
将kernel.unprivileged_bpf_disabled的值设置为1。
Ubuntu:
sudo sysctl kernel.unprivileged_bpf_disabled=1
1 | sudo tee /etc/sysctl.d/90-CVE-2020-8835.conf =
Redhat:
sysctl -w kernel.unprivileged_bpf_disabled=1
时间轴
2020/3/30
官方发布漏洞修复补丁
2020/4/1
深信服千里目安全实验室发布漏洞分析文章。
点击阅读原文,及时关注深信服智安全Wiki平台查询漏洞的产品解决方案(需登录)~
文章推荐:
1.【更新】微软SMBv3 Client/Server远程代码执行漏洞深入分析(CVE-2020-0796)
3.微软Type 1字体解析远程代码执行漏洞安全风险通告(ADV200006)
解锁更多精彩内容
深信服千里目安全实验室
原文始发于微信公众号(深信服千里目安全实验室):Linux内核权限提升漏洞公告CVE-2020-8835
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论