用户模式
概述
线程模型
用户模式线程被认为是Zephyr不可信任的,因此与其他用户模式线程和内核隔离。有缺陷或恶意的用户模式线程不能泄露或修改另一个线程或内核的私有数据/资源,也不能干扰或控制另一个用户模式线程或内核。
Zephyr的用户模式特性的示例用例:
内核可以防止许多无意的编程错误,否则这些错误可能会悄无声息地或壮观地破坏系统。
内核可以沙箱装复杂的数据解析器,如解释器、网络协议和文件系统,这样恶意的第三方代码或数据就不会危及内核或其他线程。
内核可以支持多个逻辑“应用程序”的概念,每个应用程序都有自己的线程组和私有数据结构,如果一个崩溃或受到损害,它们就会相互隔离。
设计目标
对于以非特权CPU状态(以下简称“用户模式”)运行的线程,我们的目标是防止以下情况:
- 我们防止对未特别授予的内存的访问,或对具有不兼容策略的内存的不正确访问,例如尝试写入只读区域。
- 对线程堆栈缓冲区的访问将由一个策略来控制,该策略部分依赖于底层的内存保护硬件。
- 默认情况下,用户线程将对其自己的堆栈缓冲区具有读/写访问权限。
- 默认情况下,用户线程永远无法访问非同一内存域成员的用户线程堆栈。
- 默认情况下,用户线程永远无法访问主管线程拥有的线程堆栈,或用于处理系统调用特权提升、中断或CPU异常的线程堆栈。
- 根据硬件的不同,用户线程可以对同一内存域中的其他用户线程
Zephyr内核的用户模式确保线程间隔离,防止恶意或错误行为破坏系统。设计目标包括防止未授权内存访问、错误驱动使用等。线程通过系统调用和内存域API进行通信,严格验证权限,检测堆栈溢出,阻止不安全的内核入口。然而,内核和构建过程被假定为可信,不能防止所有类型的攻击,且存在线程饥饿和堆栈溢出的风险。
订阅专栏 解锁全文
561

被折叠的 条评论
为什么被折叠?



