内存安全仅仅是基础条件

主要观点:系统编程取得巨大成功,新的系统编程语言如 Rust 能消除多种漏洞,但已有大量软件用其他语言编写,新语言需能与现有外国库高效交互。与外国代码交互可能导致安全违规,破坏内存或类型安全。Omniglot 是能在不同环境下保持内存和类型安全的新方法和框架,通过减少对外国代码的假设并进行运行时验证来实现安全交互。

关键信息

  • 过去几年系统编程进步,Rust 等语言消除常见漏洞且被广泛采用。
  • 与外国库交互易致安全问题,如 OpenSSL 的 Heartbleed 漏洞。
  • 传统隔离工具只能维持内存安全,不能保证类型安全。
  • 以 Rust 为例,说明不同语言中枚举等类型的差异及违反类型安全可能导致的问题。
  • Omniglot 方法:通过生成安全的外国函数绑定,用更宽容的类型声明函数符号, wrapper 检查和验证返回值,还处理内存安全和别名等问题。

重要细节

  • 列出 C 函数和 Rust 绑定的示例,展示类型差异导致的问题。
  • 说明 Rust 中关于有效值等的安全规则及违反后的后果。
  • 介绍 Omniglot 在 Linux 用户空间应用和 Tock 嵌入式 OS 内核中的应用及评估。
  • 提及 Omniglot 引入的运行时开销及与其他方法的比较。
阅读 11
0 条评论