通往内存安全的道路是不可避免的

主要观点

  • 内存安全是热门话题,讨论时需明确所针对的内容和目标,完全用“内存安全语言”重写现有软件以消除安全漏洞不现实。
  • 不同编程语言虽有内存安全机制,但实际中可能因各种因素导致仍存在安全问题,成功实现内存安全需语言设计、工具支持和工程实践协同努力。
  • HardenedLinux 基于 Debian 分布,通过启用 sanitizers、运行回归测试和 fuzz 测试等方法处理“内存不安全”语言的应用和库的质量与安全风险。
  • 漏洞生命周期包括发现、确认、利用等阶段,QA 过程可采用如 Fil-C 等工具检测漏洞,Fil-C 能从可利用性角度实现安全的 C/C++。
  • 除了 sanitizers 和 fuzzers,还可通过编译器和 C 运行时库的缓解技术来应对漏洞,如硬件和软件级别的保护措施。
  • 呼吁开源软件开发者在调试和测试构建中启用 sanitizers,虽重写软件用内存安全语言成本高,但也可考虑用 Lisp/Scheme 重写。

关键信息

  • 不同内存安全方法的特点,如编译器静态分析、运行时机制等。
  • HardenedLinux 针对不同系统场景的测试工具和方法,如基于状态的 Linux 内核模糊测试工具。
  • Fil-C 对 C/C++的内存安全改进及与传统 sanitizers 的对比。
  • 各种缓解漏洞的技术和措施及其作用。
  • 开源软件开发者应启用 sanitizers 的呼吁。

重要细节

  • 早期 HardenedLinux 成员来自商业 Linux 分布背景,注重专业维护者管理软件和库。
  • 介绍 Fil-C 对 Clang/LLVM 编译器的定制及相关测试案例。
  • 列举常见的缓解漏洞的技术,如栈保护、影子栈等。
  • 以具体案例说明未启用 sanitizers 可能导致的问题及不同做法的效果差异。
阅读 27
0 条评论