RTOS Zephyr 中存在 25 个漏洞,包括通过 ICMP 数据包利用的漏洞

NCC集团研究人员 发表 免费项目审核结果 和风, 发展 实时操作系统(RTOS),旨在装备符合物联网概念(IoT,Internet of Things)的设备。 审计过程中发现 25个漏洞 Zephyr 中存在 1 个漏洞,MCUboot 中存在 XNUMX 个漏洞。 Zephyr 是在英特尔公司的参与下开发的。

总共在网络堆栈中发现了 6 个漏洞,其中 4 个在内核中,2 个在命令 shell 中,5 个在系统调用处理程序中,5 个在 USB 子系统中,3 个在固件更新机制中。 有 9 个问题被评为严重,9 个为高问题,4 个为中等问题,4 个为低问题,15 个需要考虑。 严重问题会影响 IPvXNUMX 堆栈和 MQTT 解析器,危险问题会影响 USB 大容量存储和 USB DFU 驱动程序。 截至信息披露时,仅针对 XNUMX 个最危险的漏洞准备了修复程序;导致拒绝服务或与其他内核保护机制中的缺陷相关的问题仍未得到纠正。

该平台的 IPv4 堆栈中发现了一个可远程利用的漏洞,该漏洞在处理以某种方式修改的 ICMP 数据包时会导致内存损坏。 另一个严重问题是在 MQTT 协议解析器中发现的,该问题是由于缺乏适当的标头字段长度检查而导致的,并可能导致远程代码执行。 在 IPv6 堆栈和 CoAP 协议实现中发现了不太严重的拒绝服务问题。

其他问题可以在本地被利用,导致拒绝服务或在内核级别执行代码。 大多数这些漏洞与缺乏对系统调用参数的正确检查有关,并且可能导致内核内存的任意区域被写入和读取。 这些问题还扩展到系统调用处理代码本身——调用负的系统调用号会导致整数溢出。 内核还发现了 ASLR 保护(地址空间随机化)和在堆栈上设置金丝雀标记的机制的实现问题,导致这些机制失效。

许多问题会影响 USB 堆栈和各个驱动程序。 例如,当设备连接到攻击者控制的 USB 主机时,USB 大容量存储中的问题可能会导致缓冲区溢出并在内核级别执行代码。 USB DFU 是一种通过 USB 加载新固件的驱动程序,该驱动程序允许您将修改后的固件映像加载到微控制器的内部闪存中,而无需使用加密并通过使用数字签名验证组件来绕过安全启动模式。 此外,还研究了开放引导加载程序代码 单片机启动,其中发现了一个良性漏洞,
在 UART 上使用 SMP(简单管理协议)协议时,这可能会导致缓冲区溢出。

回想一下,在 Zephyr 中,只为所有进程提供一个全局共享虚拟地址空间(SASOS,单地址空间操作系统)。 应用程序特定的代码与应用程序特定的内核相结合,形成可以在特定硬件上加载和运行的整体可执行文件。 所有系统资源都是在编译时确定的,从而减少了代码大小并提高了性能。 系统映像可以仅包含运行应用程序所需的那些内核功能。

值得注意的是,Zephyr 的主要优势包括 提到 发展要牢记安全。 得到正式认可的开发的所有阶段都必须经历确认代码安全性的强制性阶段:模糊测试、静态分析、渗透测试、代码审查、后门实施分析和威胁建模。

来源: opennet.ru

添加评论