Erica Windisch警告说,Linux用户命名空间可能不够安全。如果真实root用户被移除了SYS_CAP_ADMIN能力,但随后创建了一个用户命名空间,该能力会为假root用户恢复。在创建命名空间之前,'mount'会被拒绝,但创建之后,'mount'系统调用会以有限的方式重新工作。这意义重大,以至于在真实root用户和具有用户命名空间的内核下,Linux能力可能被完全颠覆。
user_namespaces的手册页确认,通过clone(2)使用CLONE_NEWUSER创建的子进程在新用户命名空间中拥有一整套能力。用户命名空间允许安全模型的“有趣”交叉,将完整root能力授予新命名空间。这允许CLONE_NEWUSER有效地在其他网络命名空间上使用CAP_NET_ADMIN,尤其是在未使用容器的情况下。具有CAP_NET_ADMIN的进程攻击面很大,并已导致多个内核漏洞,可能允许无特权用户命名空间针对内核网络子系统。
演示表明,在编译了用户命名空间的主机上,用户可以使用ioctl和SIOCBRADDBR创建桥接,但使用cap_set_file设置文件能力会失败。Ubuntu启用了CONFIG_USER_NS,但打了补丁,使得可以通过sysctl unprivileged_userns_clone禁用无特权使用。内核配置对用户命名空间默认值为'n',建议启用MEMCG以限制无特权用户的内存。
来源: Hacker News · 由HeadlinesBriefing整理摘要