使用 /dev 和 /proc 的 Chroot 风险

使用 /dev 和 /proc 的 Chroot 风险

我计划为一些用户设置一些 chroot 监狱来运行/测试 Java 应用程序(假设每个应用程序都是不受信任的)。将 /dev 和 /proc 安装到每个监狱中是否存在任何风险?如果存在,可以采取哪些措施来消除这种风险?

答案1

暴露/proc/dev暴露更多的信息,赋予监狱内的用户更多的权利。

请注意,监狱内外的 uids 和 gids 可能不同。例如,在监狱内部,用户“x”可能是组 123 的成员,该组在监狱中代表“用户”,而在系统上代表“磁盘”。通过绑定安装/dev,您将授予他们对原始磁盘设备的访问权限,这将允许他们进行虚拟 root 访问并摆脱困境。

我不会绑定挂载/dev。仅创建 Java 应用程序可能需要的几个具有适当所有权和权限的设备( nulltty、 ...)。zero

您是否考虑过使用 Linux 容器而不是 chroot Jail,后者会更加隔离它们(lxcs 只是比 chroot Jail 更进一步)。

答案2

这是一个相当大的主题,网上已经有很多关于它的文章,所以我鼓励您阅读一下。

基本总结是 chroot 从未被设计为安全功能。 root 用户可以通过多种方式“逃脱”chroot 监狱,普通用户也可以通过多种方式逃脱。例如,chroot 没有单独的进程空间,因此 chroot 内的进程可以使用正常的调试机制“附加”到任何外部进程。一些现代发行版启用了保护功能,可以阻止特定的攻击,但并非全部。无论如何,根用户几乎不受所有此类保护设备的影响,并且没有什么可以阻止它安装它选择的任何文件系统。

LXC 更好,并且也内置于许多现代发行版中(我相信),但也存在一些相同的问题(特别是 /sys 文件系统容易被滥用)。

OpenVZ 据说更安全,但设置起来要困难得多,而且我自己还没有尝试过。

相关内容