像 codepad 或 ideone 这样的公共脚本站点如何管理它的沙盒?

信息安全 沙盒
2021-08-29 12:59:18

最近几个月我对这些东西进行了很多研究,但我无法掌握任何坚实的基础,说明它们如何在这么多语言中毫无问题地运行不安全的脚本!

我确定他们正在运行虚拟机,因为特定于语言的沙箱不会削减它,但是将每种语言列入白名单呢?

必须有另一种我没有看到的约束。

1个回答

Codepad 解释了他们如何在about 页面上提供安全性:

codepad.org 是一个在线编译器/解释器。[...] 策略是在 ptrace 下运行所有​​内容,同时不允许或忽略许多系统调用。编译器和最终可执行文件都在 chroot 监狱中执行,具有严格的资源限制。[...]

我不仅依赖 chroot 和 ptrace 主管,还采取了一些额外的预防措施:

  • 主管进程在虚拟机上运行,​​这些虚拟机有防火墙,因此它们无法进行传出连接。

  • 运行虚拟机的机器也有严格的防火墙,并定期从它们的源映像中恢复。

这对我来说似乎是一个合理的策略。

有关沙盒技术的更多背景信息,请参阅以下内容:什么是沙盒?,如何限制应用程序对我的计算机执行的操作?监控系统调用(以可靠和安全的方式),以及 维基百科在 chroot 上的条目