壹 漏洞概念
linux kernel
一般指Linux
内核。Linux
是一种开源电脑操作系统内核。它是一个用C语言写成,符合POSIX标准的类Unix操作系统。Linux
内核中 overlayfs
文件系统是 Ubuntu
的特定问题,由于没有正确的验证文件系统功能在用户名称空间中的应用,从而导致攻击者可以安装一个允许未授权挂载的 overlayfs
修补程序来提升权限。
贰 漏洞原理及利用条件
Linux
支持存储在扩展文件属性中的文件功能,它们的工作方式类似于setuid-bit
,但粒度更细。
在伪代码中设置文件功能的简化过程,重要的调用是cap_convert_nscap
,它检查与名称空间相关的权限。
如果我们从自己的名称空间和挂载上设置文件功能,就不会有问题,而且我们有权限这样做。但当OverlayFS
将此操作转发给底层文件系统时,它只调用vfs_setxattr
,并跳过cap_convert_nscap
中的检查。这允许在外部命名空间/mount
中的文件上设置任意功能,并且在执行过程中应用。
在Linux 5.11
中,对cap_convert_nscap
的调用被移到了vfs_setxattr
中,攻击很难实现。
叁 适用版本
uname -a
范围为在以下版本,可能存在漏洞:
Ubuntu 20.10
Ubuntu 20.04 LTS
Ubuntu 18.04 LTS
Ubuntu 16.04 LTS
Ubuntu 14.04 ESM
说实话这个不好判断!
肆 复现环境说明
使用了阿里云开源镜像站:传送门
伍 复现
# 查看版本
uname -a
# 建议重新编译,可能现成的工具用不了
gcc exploit.c -o exploit
# 添加执行权限
chmod +x exploit
# 运行
./exploit
# 查看权限
whoami
陆 利用Poc|Exp以及工具
EXP地址:传送门
CVE-2021-3493-main.zip
柒 危害
提权到root
权限!
捌 修复建议
更新Linux内核至5.11版本,补丁:链接。