【问题标题】:Is there a lightweight, programmable Sandbox API for the Windows platform? [closed]是否有适用于 Windows 平台的轻量级、可编程沙盒 API? [关闭]
【发布时间】:2011-01-02 06:28:56
【问题描述】:

为了在家中运行不受信任的代码,我使用了 VMWare 虚拟机。我想找到一个替代的轻量级沙盒 API 来运行不受信任的应用程序,而无需安装 VMWare 或任何其他类型的最终用户虚拟化工具的开销。 (编辑:我不希望它托管操作系统 - 我希望它运行不受信任的应用程序)。

理想情况下,沙盒应该是(或可以做成)透明的,这样在沙盒中运行的应用就不会显示任何额外的镶边或功能。 (他们不是在 Mac 上的 Parallels 中这样做)

我的 Windows .NET 开发人员希望有一个 API,因此我可以为它编写脚本脚本,而不是启动一个特殊的 GUI。

这就像谷歌 Chrome 网络浏览器如何包含自己的技术来沙盒从互联网上运行的脚本以保护系统。 Google 不需要在其浏览器中分发 VMWare,但他们为应用程序实现了沙盒安全性。

编辑:

寻找像谷歌浏览器这样轻量级的东西,它包含文件/网络/UI 访问、低权限等功能。而不是寻找运行/托管自己的操作系统。

【问题讨论】:

  • ....您在这里寻找什么样的沙盒?完全独立,在自己的操作系统上运行,等等等等?或者,文件/网络/用户界面访问受到极大限制?有很多方法可以回答这个问题,答案也千差万别。
  • @Kevin:好问题,谢谢,我通过编辑澄清了。
  • 您可以尝试将前端写入 Google Chrome 沙箱。 dev.chromium.org/developers/design-documents/sandbox
  • 也许有一种方法可以“滥用”UAC 虚拟化来做到这一点?见this article(和part 2)。

标签: windows api virtual-machine sandbox


【解决方案1】:

Google 的 Chrome 使用 4 个窗口机制来实现这一点:

A restricted token
The Windows job object
The Windows desktop object
Windows Vista only: The integrity levels

看看: https://sites.google.com/a/chromium.org/dev/developers/design-documents/sandbox

他们对他们正在做的事情有详细的描述。

【解决方案2】:

不,没有。

我的意思是,您可以使用不同的 Windows 帐户(具有您认为合适的任何权限),但您需要确保不受信任的应用程序无法摆脱该帐户。但是你在使用 VMWare 时确实有同样的问题(过去它有过让你崩溃的错误)。最好的办法是在虚拟机中运行。

【讨论】:

  • silky 100% 正确。我也不确定构建“轻量级可编程沙盒 API”是否可能 - 我所知道的沙盒的每个现有实现都是非常复杂的野兽(包括 AppArmor 和 SeLinux)。恕我直言,如果您是偏执狂,那么虚拟机是可行的方法 - 正如丝绸所说,存在虚拟机绕过问题,但使用虚拟机比不使用虚拟机更安全。
  • 哇,没有比你这样的人的确认更好的了:)
  • @silky:同意——这就是为什么如此棒的部分原因。专家和平民(指我自己:)在编程上打成一片。
  • 顺便说一句,通常我只建议以标准用户身份运行,但我看到有证据表明恶意软件作者正在采用他们的恶意软件作为标准用户运行 - 他们无法在您的计算机上安装 rootkit (这使得删除恶意软件更容易)但它们仍然可以对您的计算机或您的数据做坏事。
【解决方案3】:

您可能还对 Google 的 Native Client(也称为 NaCl)感兴趣。这是一个旨在能够在沙箱中运行(可验证)x86 代码的项目。

【讨论】:

  • 似乎只能通过浏览器插件在网络上运行 x86。不过非常有趣。
【解决方案4】:

我还没有实现这个..但是我的 $.02.

您可以考虑实施一个 Windows 工作站。 Windows 站基本上是包含桌面和进程的安全边界 控制台登录只允许一个 Windows Station (Winsta0) http://msdn.microsoft.com/en-us/library/windows/desktop/ms682573(v=vs.85).aspx

您可以在每个工作站的基础上实现、处理、Windows 对象和 ACL 隔离。 Windows Station 中使用的一些 API 函数如下所示: http://msdn.microsoft.com/en-us/library/windows/desktop/ms687107(v=vs.85).aspx

会话、桌面和 Windows 站概述。 http://blogs.technet.com/b/askperf/archive/2007/07/24/sessions-desktops-and-windows-stations.aspx

这里有一个带有源代码的示例: http://www.codeproject.com/Articles/21352/Virtual-Desktop-A-Simple-Desktop-Management-Tool

我建议使用 API Monitor 来调试 Win32 API 调用 http://www.rohitab.com/apimonitor

【讨论】:

  • 诶!拉里奥斯特曼在这个帖子上回答了。我不知何故错过了他的评论。)如果他说不,我猜答案是否定的。
【解决方案5】:

您可以使用Invincea FreeSpace 或免费的Sandboxie。不确定它们中的任何一个是否可编写脚本。

这些被称为遏制应用程序,即沙盒。你可以在这里阅读:https://www.fas.org/irp/congress/1997_hr/h970211gm.htm

【讨论】:

    【解决方案6】:

    在我的一个“沙盒”问题中,我被指向Sandboxie。 我根本没有解决我的问题,但也许这对你来说很有趣?

    我不知道它是否有 API,但快速谷歌表明它至少是 somehow automatable 通过命令行。

    【讨论】:

      【解决方案7】:

      不幸的是,对于 Windows 主机,您的选择非常有限。但是,在 Linux 主机上,mboxcapsicum 等选项可以执行您所描述的操作 - 即轻量级的应用程序级沙盒。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-04
        相关资源
        最近更新 更多