摘要
了解 OverlayFS 中的一个漏洞如何允许 Ubuntu 下的本地用户获得 root 权限。
漏洞摘要
Linux 内核中 overlayfs 文件系统的一个 Ubuntu 特定问题,它没有正确验证文件系统能力在用户命名空间方面的应用。由于 Ubuntu 中允许非特权 overlayfs 挂载的补丁,本地攻击者可以利用此漏洞提升权限。
CVE-2021-3493
致谢
一位独立安全研究员已向 SSD 安全披露计划报告了此漏洞。
受影响的版本
Ubuntu 20.10
Ubuntu 20.04 LTS
Ubuntu 18.04 LTS
Ubuntu 16.04 LTS
Ubuntu 14.04 ESM
厂商回应
“我们今天为此问题发布了安全公告,网址为
https://ubuntu.com/security/notices/USN-4915-1 https://ubuntu.com/security/notices/USN-4916-1 https://ubuntu.com/security/notices/USN-4917-1
并在我们的 CVE 跟踪器中公开了该问题:
https://ubuntu.com/security/CVE-2021-3493
以下是发送到 oss-security 列表的消息内容:https://www.openwall.com/lists/oss-security/2021/04/16/1
漏洞分析
Linux 支持存储在扩展文件属性中的文件能力,其工作方式类似于 setuid 位,但可以更精细。在伪代码中设置文件能力的简化过程如下: setxattr(...): if cap_convert_nscap(...) is not OK: then fail vfs_setxattr(...)
重要的调用是 cap_convert_nscap,它检查与命名空间相关的权限。
如果我们从自己的命名空间并在自己的挂载点上设置文件能力,就没有问题,我们有权限这样做。问题在于,当 OverlayFS 将此操作转发到底层文件系统时,它只调用 vfs_setxattr 而跳过了 cap_convert_nscap 中的检查。
这允许在外层命名空间/挂载点上的文件上设置任意能力,这些能力在执行时也会被应用。
在 Linux 5.11 中,cap_convert_nscap 的调用被移到了 vfs_setxattr 内部,因此不再容易受到攻击。