3个不稳定版本
使用旧的Rust 2015
0.2.1 | 2019年10月16日 |
---|---|
0.2.0 | 2017年1月26日 |
0.1.0 | 2015年11月30日 |
#145 in 操作系统
每月 4,833次下载
58KB
1K SLoC
gaol
简介
gaol
是一个用Rust编写的跨平台、操作系统级别的应用沙盒库。它允许您限制您的应用程序可以执行的操作集合,以提供一层防御,防止恶意或意外的操作尝试。
请参阅examples/example.rs
和测试用例,了解使用示例。
目前,gaol
在正确性和安全性方面仅进行了轻微的审查。它不应被视为成熟或“经过实战检验”。使用时请自行承担风险。
操作
gaol
设计用于在多进程场景中使用。(这在某些操作系统上,例如Windows和Linux,是沙盒化的必要条件。)在父进程中,您创建一个配置文件——允许进程执行的操作集——然后创建受该配置文件限制的较低权限进程。配置文件是一个白名单,而非黑名单;不在配置文件中的操作将自动被禁止。请参阅profile
模块的文档,以获取允许和禁止操作的完整列表。
并非所有操作系统都支持gaol
支持的所有的操作。如果配置文件包含当前操作系统不允许精确限制的操作,则配置文件构造函数将返回错误。这最大限度地减少了意外允许操作的可能性。您可以使用support()
方法查询每个操作,以确定它在当前操作系统上的支持程度。
经纪人进程
许多使用沙箱的应用程序使用具有特权的代理进程来启用沙箱配置文件无法精确描述的特权操作。例如,如果当前操作系统本身不允许根据端口(Linux有这种限制)限制TCP连接,那么一个有效的解决方案是拒绝在不受信任的进程中所有网络连接,当不受信任的进程想要执行网络连接时,让该进程向代理发送IPC消息,并由代理在代表不受信任的进程执行操作之前验证端口是否允许。代理进程的另一个有用用途是在执行可能危险的操作之前要求用户同意;例如,可以在授予不受信任的进程访问该文件的权限之前,要求用户通过对话框导航到该文件。
尽管gaol
被设计用于多进程场景,但它本身不提供任何“代理”功能。这是因为代理功能通常是特定于应用或操作系统的:例如,没有跨平台显示对话框的方法。因此,代理进程不在gaol
本身的范围内。然而,对于某些应用程序来说,在gaol
之上叠加一个通用的代理进程可能非常有用。这种功能最好留给一个单独的crate,它将与gaol
协同工作以提供灵活的沙箱。
依赖项
~130KB