当前位置: 首页 > news >正文

关于 ESP32 未公开 Bluetooth® HCI 命令的事实澄清

概述

乐鑫已就近期有关 ESP32 Bluetooth 控制器可能存在“后门”或“未公开功能”引发安全担忧的报道作出正式回应。

本文将重点介绍相关 Bluetooth HCI 命令的技术细节,并澄清这些未公开的 HCI 命令不会构成安全威胁,更不属于所谓的“后门”。

什么是 HCI 命令?

Bluetooth 协议栈主要由两层组成:

  • Bluetooth 控制器(底层) —— 负责无线电操作、链路管理及底层 Bluetooth 通信。ESP32 系列芯片通过软硬件结合实现该控制器。
  • Bluetooth 主机栈(上层) —— 负责处理更高层级的 Bluetooth 功能,如配对、加密及应用层交互。这一层完全由软件实现。ESP32 系列芯片基于开源的 NimBLE 和 Bluedroid 开发 Bluetooth 主机栈。

 

这两层通过标准接口 HCI(主机控制器接口) 进行通信。HCI 定义了一组标准命令,供 Bluetooth 主机调用。Bluetooth 控制器不仅实现了这些标准 HCI 命令,还支持厂家自定义 HCI 命令,主要用于实现标准 HCI 命令不支持的功能以及一些调试的功能。

报道中的安全问题是什么?

此次报道指出,ESP32 含有一组未公开的 HCI 命令,并声称这些命令可能被用于恶意访问运行 ESP32 Bluetooth 的设备。

这些未公开的命令是什么?

报告中提到的“未公开” HCI 命令实际上是 ESP32 Bluetooth 控制器中的调试命令。这些命令主要用于辅助调试(如读取/写入 RAM、读取映射到内存的 Flash、发送/接收数据包等),在与标准 Bluetooth主机栈(如 NimBLE 或 Bluedroid)的 HCI 通信中,这些命令并未起到作用。

此类调试命令在 Bluetooth 控制器的实现中较为常见,可帮助开发者调试控制器行为,尤其在双芯片 (Dual-Chip) 解决方案中尤为有用。

ESP32 Bluetooth 架构

在 ESP32 中,Bluetooth 控制器和主机栈运行在同一 MCU(微控制单元)上,主机栈和控制器之间仍然通过 HCI 进行通信。但由于二者运行在同一芯片上,HCI 可视为虚拟 HCI 层,即 ESP32 内部通信的一部分。 任何可以访问此虚拟 HCI 层的代码,必须首先在 ESP32 上执行,并且具有完整的执行权限。

 

影响分析

  • 大多数 ESP32 应用场景——由于蓝牙主机和控制器都集成在ESP32运行的同一个应用程序二进制文件中,因此这些 HCI 命令不会带来额外的安全风险。应用程序本身已经拥有对内存和寄存器的完全访问权限,并可自由发送/接收 Bluetooth 数据包,无需依赖这些自定义的 HCI 命令。
  • 无法通过远程方式触发——这些命令无法通过 Bluetooth、无线电信号或互联网触发,除非应用本身或无线协议存在漏洞。而如果存在此类漏洞,其影响远大于这些 HCI 命令的存在,且这些命令不会增加额外的攻击面。
  • 仅影响原始 ESP32 芯片——这些命令仅存在于 ESP32 芯片中,而 ESP32-C、ESP32-S 和 ESP32-H 系列 的 Bluetooth 控制器并不支持这些命令,因此不受影响。

ESP32 仅仅作为蓝牙控制器模块的情况(需要串口外接蓝牙主机,较少使用)

在某些不太常见的配置中,ESP32 仅仅作为蓝牙控制器,通过串口外接蓝牙主机(比如其他 MCU,PC 等)。这些蓝牙主机通过串口(如 UART HCI)给 ESP32 芯片发送 HCI 指令。这种配置通常用于 ESP32 作为通信协处理器的场景,而相比于独立运行模式,这种使用方式较少见。

 

在此类系统中,ESP32 完全信任主机。如果攻击者控制了主机系统,则可能通过这些调试命令影响 ESP32 的行为。然而,这首先需要攻击者成功入侵主机设备,因此属于第二阶段攻击路径,而非独立的安全漏洞。此外,攻击者还需对设备进行物理访问,才能通过串口发送 HCI 命令。 对于使用 UART-HCI 方式的应用,攻击者无法直接远程利用此漏洞。此外,乐鑫计划通过 OTA(在线更新)禁用这些调试命令,以增强安全性,并将在软件层面提供进一步的更新。

缓解措施

如前所述,目前没有已知的实际安全威胁,未公开的 HCI 命令不会对设备安全构成风险。然而,为了进一步增强安全性,乐鑫决定采取以下措施:

  • 发布软件修复补丁——在当前支持的 ESP-IDF 版本中,提供软件更新,移除 ESP32 芯片对这些 HCI 调试命令的支持。
  • 完善文档透明度——乐鑫将详细说明所有可能在客户产品中出现的自定义 HCI 命令,确保 HCI 层功能的透明性。

总结

综合来看,对于大多数 ESP32 应用而言,只要启用了推荐的安全特性,此次报道的问题不会带来实际影响。而对于少量基于 Bluetooth HCI 串口通信的场景,我们可以通过禁用调试命令来缓解潜在风险,并将在后续提供相关更新。 乐鑫始终遵循标准化的产品安全事件响应流程,并秉持负责任披露 (Responsible Disclosure) 原则。 我们始终认为,基于乐鑫芯片的设备安全至关重要,并承诺保持透明度,遵循最佳安全实践。我们将继续与社区合作,确保我们的设备安全可靠,并负责任地披露所有与安全相关的信息。

相关文章:

  • [多线程]基于环形队列(RingQueue)的生产者-消费者模型的实现
  • c++20 Concepts的简写形式与requires 从句形式
  • 二叉树_3_模拟实现二叉树
  • PySide(PyQT),QGraphicsItem的pos()和scenePos()区别
  • 【数据分析大屏】基于Django+Vue汽车销售数据分析可视化大屏(完整系统源码+数据库+开发笔记+详细部署教程+虚拟机分布式启动教程)✅
  • Kotlin D3
  • 推理模型对SQL理解能力的评测:DeepSeek r1、GPT-4o、Kimi k1.5和Claude 3.7 Sonnet
  • H3C交换机的VRRP配置
  • Ansible运行原理揭秘:如何用YAML脚本掌控数服务器?
  • 第二篇:CTF常见题型解析:密码学、逆向工程、漏洞利用、Web安全
  • vue3 element-plus form校验不生效
  • python-leetcode-递增的三元子序列
  • 详细介绍 Jupyter nbconvert 工具及其用法:如何将 Notebook 转换为 Python 脚本
  • 数据库系统概论(三)数据库系统的三级模式结构
  • 软考 中级软件设计师 考点知识点笔记总结 day03
  • Blender UV纹理贴图,导出FBX到Unity
  • SqlSugar 进阶之原生Sql操作与存储过程写法 【ORM框架】
  • centos安装python3.9.9总结和笔记
  • coze ai assistant Task 1
  • Java中的常用关键字
  • 微软将裁员3%,减少管理层
  • 重庆市委原常委、政法委原书记陆克华被决定逮捕
  • 人民日报仲音:大力纠治违规吃喝顽瘴痼疾
  • 中国恒大:清盘人向香港高等法院申请撤回股份转让
  • 国际博物馆日中国主会场确定,北京将展“看·见殷商”等展览
  • 法院就“行人相撞案”道歉:执法公正,普法莫拉开“距离”