主要观点:有人称 CHERI 因捕获内存安全错误而不能用于安全关键系统,实则是误解。内存安全错误很糟糕,会导致“远距离幽灵行为”等问题,影响优化和机器指令生成,可能引发各种不确定行为。MISRA C 规则 1.3 禁止程序包含未定义行为,符合该规则的程序通常不会触发 CHERI 陷阱。CHERI 可在安全语言的不安全方言等情况下强化属性。对于内存安全错误的不同情况,CHERI 有不同影响,在某些情况下能提前捕获错误,改善情况。CHERIoT RTOS 提供三种处理 CHERI 失败的方式,对于无状态隔间,最后一种方式较合适,对于“良性”错误可通过第一种方式处理,中间方式常与longjmp
结合使用,需注意相关规则和问题。CHERI 及 CHERIoT 为构建高可用性和混合完整性系统提供很多工具。
关键信息:
- 内存安全错误的严重后果,如可导致特权提升等。
- MISRA C 规则及与 CHERI 的关系。
- CHERI 对不同内存安全错误情况的影响。
- CHERIoT RTOS 的三种错误处理方式及适用场景。
重要细节:
- 早期 UNIX 错误示例,说明逻辑错误与内存安全错误的区别。
- 编译器对内存安全错误的假设及优化行为。
- MISRA C 代码中存在豁免情况及示例。
- CHERI 使确定性“良性”内存安全错误在生产中更易捕获。
- CHERIoT 中不同错误处理方式的具体操作及注意事项。
- 一些高保证系统的重置机制及 CHERIoT 的相关应用。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。