想了解沙箱技术

12

我希望学习更多有关沙箱技术的知识,不仅仅是了解它。我想要学习如何编写一个简单的沙箱。

令人惊讶的是,目前没有任何相关信息可供参考。即使维基百科的文章也不够好。

请问是否能推荐一些好的资料给我?我知道这是非常高级的概念。那么,学习和掌握它需要哪些先决条件呢?


1
https://dev59.com/2HI-5IYBdhLWcg3w99kH - claws
http://sandboxing.org的成员可能会给你一些很好的建议。 - user245671
阅读http://syprog.blogspot.in/2012/03/faking-kernel32dll-amateur-sandbox.html和http://www.fr33project.org/papers/p65_0x0a_phook%20-%20The%20PEB%20Hooker_by_Shearer%20and%20Dreg.txt。 - claws
7个回答

7

关于API Hooking,例如Sandboxie通过钩取Windows内核来过滤所有对文件系统的api调用,并将其结果重定向到沙箱中,您可以钩取API并过滤它,仅传递有效参数,对无效调用返回错误。

有关API Hooking的资料在网络上很多,可以在codeproject.com上尝试。


1
+1 for Sandboxie,我喜欢那个程序... 至少在我使用Win64之前是这样的。 - BlueRaja - Danny Pflughoeft

4

3

我本来也想建议同样的事情。。 - Earlz

3
一个简单的沙盒环境仅仅是让“某些东西”执行,但限制它能够做什么。
通常,“某些东西”是已经存在的语言,比如Java、JavaScript、C#或本地代码。Java有用于小程序等的“沙箱”API,.NET有不同的“信任”级别,JavaScript由解释器(浏览器)放置边界。
因此,除非你也有想要沙箱化的语言,否则“编写”自己的沙箱会有点奇怪。
你有这样的语言吗?你想具体学习什么?

哦哦哦..那我完全不是在指语言沙盒,它限制了用户可以编写的内容。我指的是Chrome中的沙盒,它限制了对系统资源的访问。就像杀毒软件沙盒一样,它允许应用程序运行,但拦截每一个恶意尝试并通知用户。 - claws
2
claws: 这是同样的事情;杀毒软件只是尝试查看本地应用程序正在进行哪些函数调用,并尝试确定它是否“合法”。你知道什么很有趣吗?面向方面编程。C# 有 'PostSharp',Java 也有一个框架。它允许您挂钩各种函数调用,然后在这些点上执行各种操作。它可能会让您探索这个想法(但它不是真正的“沙盒”)。如果您想了解安全概念(即如何完成),请查看 .NET 信任级别(但要准备好非常无聊 :P)。希望这可以帮助到您。 - Noon Silk

2
这非常取决于你想要隔离的内容。如果它是一个具有多个接口/可用语言的完整系统,你真的不想重复造轮子,而是在 VirtualBoxQEmu其他一些替代方案 中运行虚拟机。
无论如何,沙盒至少在某种程度上是你“应该运行”的系统的虚拟化...
如果你需要对单个(解释型)语言的应用做隔离,修改解释器似乎是明智的方法。

"sandboxie"是一款完美地描述了我心中所想的软件。 - claws

1
答案可能会因编程语言而异。不幸的是,大多数编程语言都没有内置沙盒功能。但是,函数式语言往往足够强大,可以从头开始构建一个沙盒而无需扩展语言。
在Tcl中,基本机制是创建从解释器:
interp create -safe sandbox
interp eval sandbox $set_up_code
set result [interp eval sandbox $unsafe_code]

1

前几天我写了一篇Linux中沙盒化的方式概述,其中链接了许多不同技术的参考资料。类似的方法也适用于其他操作系统。希望这对你有所帮助 - 我也没有找到太多全面记录的资料。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接