主要观点:系统编程取得巨大成功,新的系统编程语言如 Rust 能消除多种漏洞,但已有大量软件用其他语言编写,新语言需能与现有外国库高效交互。与外国代码交互可能导致安全违规,破坏内存或类型安全。Omniglot 是能在不同环境下保持内存和类型安全的新方法和框架,通过减少对外国代码的假设并进行运行时验证来实现安全交互。
关键信息:
- 过去几年系统编程进步,Rust 等语言消除常见漏洞且被广泛采用。
- 与外国库交互易致安全问题,如 OpenSSL 的 Heartbleed 漏洞。
- 传统隔离工具只能维持内存安全,不能保证类型安全。
- 以 Rust 为例,说明不同语言中枚举等类型的差异及违反类型安全可能导致的问题。
- Omniglot 方法:通过生成安全的外国函数绑定,用更宽容的类型声明函数符号, wrapper 检查和验证返回值,还处理内存安全和别名等问题。
重要细节:
- 列出 C 函数和 Rust 绑定的示例,展示类型差异导致的问题。
- 说明 Rust 中关于有效值等的安全规则及违反后的后果。
- 介绍 Omniglot 在 Linux 用户空间应用和 Tock 嵌入式 OS 内核中的应用及评估。
- 提及 Omniglot 引入的运行时开销及与其他方法的比较。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。