主要观点:沙箱和内存安全被认为是提高安全性的两种正交且互补的方法,内存安全减少漏洞引入的可能性,沙箱减少漏洞被利用的影响,但这种观点简化了像网页浏览器这样的复杂多进程架构中的沙箱情况,容易忽略内存安全对沙箱的潜在影响。
关键信息:
- 沙箱有两个相似但不同的目的,一是减少进程的语义特权,二是减少进程的攻击面。
- 实现沙箱政策需确定进程中依赖的操作并想办法停止,如将代码移到不同进程并使用 IPC。
- 若对某些 API 漏洞信心低,可能选择直接授予进程访问权限,以节省时间和复杂性。
- 要对 API 无漏洞有信心需使用内存安全语言,且需分析攻击面设计以确定风险。
- 减少攻击面通常对安全有益,但要考虑时间和投入产出,内存不安全语言下需追求攻击面减少。
重要细节: - 如拿走进程读取文件系统的能力减少语义特权,拿走进程的
futex
系统调用能力减少内核攻击面。 - 以浏览器播放 MP3 为例,限制浏览器渲染进程直接播放 MP3 是语义特权减少,可强制静音规则,但实际中更可能是播放 MP3 API 有漏洞导致更严重后果。
- 目前多数内核和操作系统守护进程漏洞是由于内存不安全,仅使用内存安全语言仍有 30%漏洞风险,需找到更可能无内存安全问题的攻击面。
- 减少攻击面可能会引入复杂性,如用跨进程 IPC 操作替代系统 API 调用。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。