监禁、沙盒和解释之间的区别

信息安全 沙盒
2021-08-13 14:06:30

在我的 IT 安全课程中,我经常遇到这些术语并且很难区分它们,所以我试图找出它们的区别:

沙盒:针对移动代码的防御机制,在单独的运行时环境中运行。代码和数据是分开的,以防止程序修改自己。这用于小型应用程序,例如 JVM 中的小程序。

解读:针对移动代码的防御机制防止直接访问硬件,并解释和分析所有地址和系统调用。Web 浏览器以牺牲性能为代价使用这种技术。

Jailing:针对未知程序的防御机制。受监督程序囚徒的所有系统调用都由另一个程序囚徒检查,该囚徒也可以拦截和阻止它们。

这些定义是否有效,或者还有我没有看到的更多差异/相似之处?尤其是一些现实世界的场景会很有帮助,例如我知道沙盒在 JVM 中被用作 Java 安全性的一部分。

1个回答

我听到用这些术语试图在更高的抽象层次上解释解决在您希望保护的系统上托管可执行代码的问题的连续方法。

  1. Native:允许可执行代码以系统上其他代码的完全权限和特权在目标系统上正常运行

  2. 监狱:允许可执行代码在目标系统上正常运行,除非以某种方式阻止对敏感资源的访问——从特定的系统调用到特定的 API 再到磁盘或网络 i/o 等资源——任何适合上下文的资源。将此视为黑名单 - 具有特定拒绝规则的默认允许策略。

  3. 沙盒:比监狱更严格的环境。可执行代码在目标系统的抽象中运行,但允许对敏感资源进行一些有限的直接访问。将其视为白名单 - 具有一些特定允许规则的默认拒绝策略(嗯,默认抽象/伪造)。

  4. Interpret: 是这个概念的一个糟糕的术语,它代表了 Native 的另一端。可执行代码在完全抽象的环境中运行,与目标系统上的资源完全没有直接交互。更好的术语可能是“模拟”。

希望有帮助。

其它你可能感兴趣的问题