MichaelAdamGroberman/CVE-2026-13768
GitHub: MichaelAdamGroberman/CVE-2026-13768
该项目是 CVE-2026-13768 的安全公告与概念验证代码,揭示 Gardyn IoT Hub 因硬编码特权凭据导致的全机器设备枚举、设备 RCE 及家庭网络枢纽跳板风险。
Stars: 0 | Forks: 0
# CVE-2026-13768:特权 IoT Hub 凭据 — 机器枚举、设备 RCE 与家庭网络枢纽跳板
## 安全公告
| 字段 | 值 |
|-------|-------|
| **CVE** | CVE-2026-13768 |
| **ICSA** | [ICSA-26-183-03](https://www.cisa.gov/news-events/ics-advisories/icsa-26-183-03) (Gardyn IoT Hub) |
| **CVSS 3.1** | 10.0 (严重) |
| **向量 (3.1)** | `CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:L` |
| **向量 (4.0)** | `CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:L/SC:H/SI:H/SA:L` |
| **CWE** | CWE-798 (使用硬编码凭据) |
| **研究员** | Michael Groberman |
| **发布日期** | 2026-07-02 |
| **协同发现** | Gr0m-012 (IoT Hub 机器控制) + Gr0m-013 (横向网络访问) |
## 产品
| 字段 | 值 |
|-------|-------|
| 供应商 | Gardyn |
| 产品 | Gardyn Home Kit, Gardyn Studio |
| 组件 | Azure IoT Hub 控制平面, Cloud API, 设备固件 |
| 受影响版本 | Home 固件 < master.627, Studio 固件 < master.627, Cloud API < 2.12.2026 |
## 摘要
Gardyn 暴露了一个特权的 `iothubowner` 共享访问密钥。获取该密钥将允许恶意用户调用 Azure IoT Hub Registry Manager 函数,从而返回**所有** Gardyn Home Kit 和 Studio 设备的连接信息。同一个密钥还允许在特定已连接设备上执行任意命令,并可能让攻击者枢纽跳板至受害者家庭网络中的其他设备。
这是记录该管理凭据控制平面影响范围的 IoT Hub 安全公告 (ICSA-26-183-03)。它与 ICSA-26-055-03 中的 [CVE-2025-1242](https://www.cisa.gov/news-events/ics-advisories/icsa-26-055-03) 相关但又不同,后者记录了通过未授权 API 响应、移动端应用逆向工程和固件分析所导致的 `iothubowner` 凭据*暴露*问题。CVE-2026-13768 则涵盖了获取该凭据后所能执行的操作:全机器设备枚举、基于单个设备的远程代码执行 (RCE),以及向家庭 LAN 的横向移动。
## 漏洞详情
### 凭据
`iothubowner` 共享访问策略是 Azure IoT Hub 中最高权限的凭据。Microsoft 的文档指出其仅用于后端服务管理,绝不应分发给客户端。
| 权限 | 能力 |
|------------|------------|
| RegistryRead | 枚举机器中的每一台设备 |
| RegistryWrite | 创建 / 删除 / 修改设备注册信息 |
| ServiceConnect | 发送云到设备的消息 |
| DeviceConnect | 发送设备到云的消息 (冒充任何设备) |
| ServiceInvoke | 在任何设备上调用 direct method |
### 机器枚举 (Registry Manager)
拥有该密钥后,`IoTHubRegistryManager` 会返回整个机器的连接信息:
```
from azure.iot.hub import IoTHubRegistryManager
manager = IoTHubRegistryManager.from_connection_string(hub_conn_string) # iothubowner
online = manager.query_iot_hub("SELECT * FROM devices WHERE connectionState = 'Connected'")
```
| 指标 | 数量 | 来源 |
|--------|-------|--------|
| 注册设备 | 138,160+ | CISA / 公告记录 |
| 已枚举设备 | 129,949 | 研究员枚举,2025 年 12 月 |
| 枚举时在线设备 | 38,831 | 研究员枚举,2025 年 12 月 |
### 基于单个设备的远程代码执行
云到设备的 direct method 可以触达任何设备。结合设备 `upgrade()` 处理程序中的命令注入路径 ([CVE-2025-29631](https://www.cisa.gov/news-events/ics-advisories/icsa-26-055-03)),一个 C2D method 即可在目标设备上实现 root 权限的命令执行:
```
from azure.iot.hub.models import CloudToDeviceMethod
method = CloudToDeviceMethod(method_name="upgrade", payload={
"uri": "http://x; ", # injection sink in upgrade()
"path": "/tmp/x", "services": []})
manager.invoke_device_method(device_id, method)
```
### 家庭网络枢纽跳板
每台设备都连接在客户的家庭 WiFi 上。在设备上执行命令为攻击者提供了进入家庭防火墙内部的据点,借此便可扫描 LAN 并与其他主机(路由器、NAS、摄像头、智能锁、个人电脑)进行交互。该设备就是枢纽跳板点;它已经处于网络内部。这就是 Gr0m-013 横向移动条件。
## 与协同发现的映射关系
| 方面 | 详情 |
|--------|--------|
| Gr0m-012 | IoT Hub 机器控制 — 枚举、设备孪生读/写、direct method 调用、大规模 RCE 潜力 |
| Gr0m-013 | 横向网络访问 — 以设备为枢纽跳板进入 38,831+ 个家庭网络 |
| 整合 | CISA 将这两种情况合并至同一个 CWE-798 CVE 下(在 VU#653116 跟踪表中它们均被归类为 CWE-798) |
| 与 CVE-2025-1242 的关系 | 1242 (ICSA-26-055-03) = 凭据*暴露*;13768 (ICSA-26-183-03) = 凭据*影响范围*(控制平面 + 横向移动)。两者的修复面不同 |
| 范围 | CISA 应用了 Scope:Changed (S:C),从而得出基础分 10.0 |
## 修复建议
根据 ICSA-26-183-03,Gardyn 表示已更新部署的 IoT Hub 基础设施以解决列出的漏洞。
1. 轮换 `iothubowner` 管理凭据(阻断初始访问)。
2. 下发最小权限的基于单个设备的凭据;在任何客户端可访问的路径中停用全机器管理密钥。
3. 消除 `upgrade()` 命令注入 sink (CVE-2025-29631) 以移除 RCE 原语。
4. 对 direct method 强制执行命令白名单。
5. 启用 IoT Hub 访问日志记录和异常报警(供应商向 CISA 表示,在暴露窗口期内,受影响的端点不存在任何访问日志记录)。
**研究员:** Michael Groberman (Gr0m) · **案例:** CERT/CC VU#653116 · **安全公告:** ICSA-26-183-03
标签:PE 加载器, StruQ, 漏洞披露, 物联网安全, 编程工具, 远程代码执行, 逆向工具