CHERIoT,一个提高 C 语言安全性的 Microsoft 项目

切里奥特

CHERIoT,嵌入式系统安全的 MS 选项

最近有消息爆出, 微软已开放与 CHERIoT 项目相关的开发 (面向物联网的 RISC-V 的能力硬件扩展), 旨在阻止 C 和 C++ 代码中的安全问题 现存的。 CHERIoT 提供了一种解决方案来保护现有的 C/C++ 代码库,而无需重构它们。

保护是通过使用修改后的编译器实现的 它使用处理器提供的特殊扩展处理器指令集 (ISA),并在硬件级别监视内存访问,使用指针验证作业的正确性,并提供代码块隔离。

关于奇瑞

萨尔瓦多PROYECTO 是在理解 C 语言的低级性质的情况下创建的 成为内存错误的根源, 这会导致缓冲区溢出等问题, 访问已释放的内存、取消引用指针或双重释放。

实践表明,即使像谷歌和微软这样有严格的变更审查政策并使用现代开发方法和静态分析工具的大公司,也不能保证无错误地使用内存(例如,微软和谷歌大约 70% 的漏洞是由不安全的内存管理引起的)。

问题 可以使用保证安全工作的编程语言来解决。或带有附加控制的内存或链接,例如,通过使用 MiraclePtr (raw_ptr) 而不是公共指针,它执行附加控制以访问释放的内存区域。

这种方法更适合新代码 y 返工现有的C/C++项目相当麻烦, 特别是如果它们打算在资源受限的环境中运行,例如嵌入式系统和物联网设备。

MGI CHERIoT 硬件组件设计为微控制器 基于RISC-V架构,实现安全处理器架构CHERI(Capacity Hardware Extension for RISC-V),提供受控的内存访问模型。

巴萨多恩 指令集架构 (ISA) 在 CHERIoT 中,构建了一个编程模型,以保证在单个对象级别使用内存的安全性,提供对已释放内存访问的保护,并实现了用于内存访问的轻量级隔离系统。

这种编程保护模型直接反映了 C/C++ 语言模型,允许它用于保护现有应用程序(只需要在 ISA CHERIoT 兼容硬件上重新编译和运行)。

提议的解决方案允许阻止导致内存中对象越界的错误, 不允许指针替换(所有指针必须从现有指针生成),在释放后监视内存访问(错误指针或引用已释放对象的指针的任何内存访问都会引发异常)。

例如,使用 CHERIoT 允许在不进行任何代码更改的情况下实现自动边界检查,跟踪内存区域的生命周期,并确保处理不可靠数据的组件中指针的完整性。

萨尔瓦多PROYECTO 包括 CHERIoT 指令集架构的规范 扩展,ISA CHERIoT 兼容的 32 位 RISC-V CPU 的参考实现,以及修改后的 LLVM 工具集。

最后 如果您有兴趣了解更多信息, 你应该知道 原型图 Verilog 中的 CPU 和硬件块描述在 Apache 2.0 许可下分发。 lowRISC 项目的 Ibex 核心用作 CPU 的基础,CHERIoT ISA 代码模型以 Sail 语言定义并在 BSD 许可下分发。

此外,还提出了原型 CHERIoT RTOS 实时操作系统,即使在具有 256 MB RAM 的嵌入式系统上也能提供隔离隔间(compartment)的能力。

编码 CHERIOT实时操作系统 它是用 C++ 编写的,并在 MIT 许可证下分发。 以隔间的形式,设计了操作系统的基本组件,如引导加载程序、调度程序和内存分配系统。


成为第一个发表评论

发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责资料:AB Internet Networks 2008 SL
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。