加入收藏 | 设为首页 | 会员中心 | 我要投稿 晋中站长网 (https://www.0354zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

Linux本地权限提升漏洞

发布时间:2022-10-24 22:32:16 所属栏目:Linux 来源:网络
导读:
Linux本地权限提升漏洞影响大多数Linux发行版。

漏洞概述
Qualys研究人员在Linux kernel中发现一个本地权限提升漏洞——Sequoia,该漏洞是Linux kernel文件系统层中的size_t-to-int 类型

linux权限_linux给用户赋予权限_linux mkdir权限不够

Linux本地权限提升漏洞影响大多数Linux发行版。

linux权限_linux mkdir权限不够_linux给用户赋予权限

漏洞概述

Qualys研究人员在Linux kernel中发现一个本地权限提升漏洞——Sequoia,该漏洞是Linux kernel文件系统层中的size_t-to-int 类型转化漏洞。漏洞CVE编号为CVE-2021-33909,攻击者利用该漏洞可以在大多数Linux发行版上获得root权限。

Linux文件系统

Linux文件系统是存储设备上数据和元数据的组织形式,控制着数据的存储、提取,其最重要的功能是管理用户数据。Linux文件系统接口以分层架构实现,可以将用户接口层与文件系统实现、以及操作存储设备的驱动隔离开来。

linux权限_linux mkdir权限不够_linux给用户赋予权限

技术细节

Linux kernel的 seq_file接口可以生成包含记录序列的虚拟文件。每个记录都必须与一个seq_file缓存相适配,缓存可以根据需要扩大,参见242行代码:

linux权限_linux mkdir权限不够_linux给用户赋予权限

m->size是 size_t(无符号64位整数),但是size_t也会传递给size参数为int(有符号32位整数)而非size_t的函数。比如,227行调用的show_mountinfo()函数调用了150行的seq_dentry()函数,该函数会调用530行的dentry_path(),该函数会调用387行的prepend():

linux mkdir权限不够_linux权限_linux给用户赋予权限

因此,如果非特权的本地攻击者创建、挂载或删除了完整路径长度超过1GB的目录结构,同时如果攻击者使用open()和 read()打开和读取/proc/self/mountinfo,那么:

?在seq_read_iter()中,就会分配一个2GB的缓存(242行),并调用show_mountinfo()(227行);

?在show_mountinfo()中,seq_dentry()以及2GB的空缓存会被调用(150行);

?在seq_dentry()中linux权限,dentry_path()以及2GB大小会被调用(530行);

?在dentry_path()中,int buflen是负的(INT_MIN, -2GB),p指向-2GB的偏移量,同时会调用387行的prepend();

?在prepend()中,*buflen会减少10字节,并成为更大的正的int(13行),*buffer会减少10字节,并指向-2GB-10B的偏移量(16行),10字节的字符串“//deleted”会越界写(17行)。

linux权限_linux mkdir权限不够_linux给用户赋予权限

漏洞影响

攻击者利用该漏洞可以在有漏洞的主机(默认配置情况下)上使非特权用户获得root权限。Qualys安全研究人员还独立验证了该漏洞,开发了漏洞利用,并在以下版本中获得了完全root权限:

?Ubuntu 20.04;

?Ubuntu 20.10;

?Ubuntu 21.04;

?Debian 11;

?Fedora 34 。

其他Linux发行版理论上也受到该漏洞的影响。

漏洞PoC视频参见

(编辑:晋中站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!