SegmentFault思否 · 2021年07月22日

Linux 内核爆出权限提升漏洞,Ubuntu、Debian、Fedora 均受影响

近日,安全研究人员在 Linux 内核文件系统中发现了一个 size_t-to-int 类型转换漏洞,并认为 2014 年以来的所有 Linux 内核版本均有可能受到影响。该漏洞被命名为 Sequoia(编号 CVE-2021-33909),是一个权限提升漏洞,可使低权限用户获得 root 权限。

image.png

Sequoia 漏洞的原理

Linux 内核文件系统接口是一个层级架构,包括用户接口层、文件系统实现和存储设备驱动程序,是操作系统最重要的功能,在大多数 Linux 操作系统中极为普遍。

Linux 内核的 seq_file 接口产生包含记录序列的虚拟文件,每个记录必须适合 seq_file 缓冲区。当空间耗尽时,它只需将其体积翻倍即可扩大空间。然而,如果 size_t 变量被传递给 size 参数为 32 位整数而不是 size_t 的函数时,会发生什么呢?这正是 Sequoia 漏洞的攻击原理。

来自 Qualys 的安全研究人员表示:通过创建、挂载和删除一个总路径长度超过 1GB 的深层目录结构,并 open()s 和 read()s /proc/self/mountinfo,无特权的本地攻击者可以通过一系列其他操作实现内存越界写入。攻击者可以借此破坏数据,使系统崩溃,甚至执行未经授权的代码。

Qualys 研究人员成功利用该漏洞,在 Ubuntu 20.04、Ubuntu 20.10、Ubuntu 21.04、Debian 11 和 Fedora 34 工作站的默认安装设置下获得了完全的 root 权限。其他 Linux 发行版也有可能存在该漏洞并被利用。

解决方案

Qualys 团队于 6 月初发现该漏洞,目前红帽已经发布了补丁。7 月 20 日,Linux 内核维护者 Greg Kroah-Hartman 发布了 Linux 内核 5.13.4 版本针对 Sequoia 的内核补丁。

image.png

如果无法升级内核,用户仍然可以通过将 /proc/sys/kernel/unprivileged_userns_clone 设置为 0 来缓解问题,这可以防止攻击者在用户命名空间中挂载长目录。但是,攻击者仍然可以通过用户空间文件系统 (FUSE) 挂载长目录。当该长目录超过 8MB,systemd 会耗尽其堆栈,崩溃,导致整个操作系统崩溃。

用户还可以将 /proc/sys/kernel/unprivileged_bpf_disabled 设置为 1,以防止攻击者将 eBPF 程序加载到内核​​。

然而以上缓解措施只阻止了 Qualys 的特定漏洞利用方法,可能还存在其他攻击方式。要完全修复该漏洞,必须给内核打上补丁。

参考链接:

扩展阅读:
Java 宣布解散 AWT、2D、Swing 和 Sound 组, OpenJFX 未受影响

image.png

推荐阅读
关注数
4187
内容数
863
SegmentFault 思否旗下人工智能领域产业媒体,专注技术与产业,一起探索人工智能。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息