Flo*_*sch 23 language-agnostic linux windows security macos
我正在寻找产生一个过程的概念:
这个概念被称为沙箱或监狱.
每个主要操作系统(Windows,MacOSX和Linux)都需要执行此操作,问题是概念性的(如何做,使用哪些API以及要观察的内容)而不是语言特定的.
我真的想接受一个答案并给你20分.我不能接受我自己的答案,反正我还没有.因此,如果您真的希望接受答案,请注意:
小智 14
Mac OS X有一个代号为Seatbelt的沙箱设施.它的公共API记录在沙箱(7),sandbox_init(3)和相关的手册页中.公共API有些限制,但设施本身非常强大.虽然公共API只允许您从一些预定义的沙箱中进行选择(例如"禁止所有基于套接字的网络"),但您也可以使用功能更强大的底层实现,它允许您准确指定可用的操作系统资源.类似计划的语言.例如,以下是用于portmap的沙箱的摘录:
(allow process-exec (regex #"^/usr/sbin/portmap$"))
(allow file-read-data file-read-metadata (regex
#"^/etc"
#"^/usr/lib/.*\.dylib$"
#"^/var"
#"^/private/var/db/dyld/"
#"^/dev/urandom$"))
(allow file-write-data (regex
#"^/dev/dtracehelper$"))
Run Code Online (Sandbox Code Playgroud)
您可以在/ usr/share/sandbox中看到系统使用的许多沙箱.通过使用sandbox-exec(1)命令可以轻松地试验沙箱.
对于Windows,您可能想看看David LeBlanc在Black Hat USA 2007上发表的"实用沙盒"演讲.Windows本身没有内置的沙盒技术,因此所描述的技术利用了Windows 2000引入的一种称为SAFER的不完整机制.通过使用受限令牌,可以创建对操作系统资源具有有限访问权限的进程.
对于Linux,您可能会研究复杂的SELinux机制: SELinux home, 一个HOWTO.例如,Red Hat使用它来强化某些产品中的某些系统服务.
对于Windows,Google Chrome中有一个沙盒.您可能想要调查它.它使用类似自由BSD的许可证.
对于Linux来说,有一个很好的老chroot或更复杂的http://plash.beasts.org/wiki/.
OS X,因为Leopard提供了类似SELinux的保护.
站点codepad.prg上有一个很好的“关于”页面,介绍了如何安全地执行任何代码段。
代码执行由基于geordi的主管处理。策略是在ptrace下运行所有内容,不允许或忽略许多系统调用。编译器和最终可执行文件都在具有严格资源限制的chroot监狱中执行。主管用Haskell编写。
当您的应用程序是远程代码执行时,您必须预期安全问题。我采取了一些额外的预防措施,而不仅仅是依靠chroot和ptrace主管:
主管进程在虚拟机上运行,这些虚拟机已进行防火墙保护,因此无法建立传出连接。
运行虚拟机的计算机也受到严格的防火墙保护,并定期从其源映像还原。
FreeBSD 有特定的监狱概念,Solaris 有容器。根据您要寻找的内容,这些可能会有所帮助。
chroot 监狱可以帮助限制应用程序可以执行的操作(尽管任何具有 root 权限的应用程序都可以逃脱监狱),并且它们在大多数 UNIXen 上都可用,包括 OS X。
至于Windows,我不确定。我确信,如果有一种简单的方法来对 Windows 应用程序进行沙箱处理,那么大多数应用程序现在都会更加安全。
| 归档时间: |
|
| 查看次数: |
4986 次 |
| 最近记录: |