MichaelAdamGroberman/CVE-2026-54477
GitHub: MichaelAdamGroberman/CVE-2026-54477
Gardyn IoT 管理面板因缺失所有安全标头(CSP、X-Frame-Options 等)导致点击劫持和 XSS 风险的 CVE 漏洞披露文档。
Stars: 0 | Forks: 0
# CVE-2026-54477:管理面板缺失安全标头(点击劫持 / XSS)
## 安全公告
| 字段 | 值 |
|-------|-------|
| **CVE** | CVE-2026-54477 |
| **ICSA** | [ICSA-26-183-03](https://www.cisa.gov/news-events/ics-advisories/icsa-26-183-03) (Gardyn IoT Hub) |
| **CVSS 3.1** | 5.4 (中危) |
| **向量 (3.1)** | `CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:N` |
| **向量 (4.0)** | `CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N` |
| **CWE (CISA 分配)** | CWE-644 (HTTP 标头脚本语法处置不当) |
| **CWE (研究人员)** | CWE-693 (保护机制失效), CWE-1021 (渲染 UI 层限制不当) |
| **研究人员** | Michael Groberman |
| **发布日期** | 2026-07-02 |
| **协调漏洞披露** | Gr0m-043 (管理面板缺失所有安全标头) |
## 产品
| 字段 | 值 |
|-------|-------|
| 供应商 | Gardyn |
| 产品 | Gardyn Home Kit, Gardyn Studio |
| 组件 | 管理面板 (`admin.gardyn.io`, Netlify) |
| 受影响版本 | Home 固件 < master.627, Studio 固件 < master.627, Cloud API < 2.12.2026 |
## 摘要
该管理面板在提供服务时,除了 HSTS 之外没有任何安全标头 —— 没有 Content-Security-Policy,没有 X-Frame-Options,没有 X-Content-Type-Options,也没有 Permissions-Policy。这使得针对已认证的管理员会话发起的点击劫持和跨站脚本攻击成为可能。
## 漏洞详情
### 存在的标头
| 标头 | 值 |
|--------|-------|
| `server` | Netlify |
| `strict-transport-security` | `max-age=31536000` |
| `cache-control` | `no-cache` |
### 缺失的标头
| 缺失的标头 | 后果 |
|----------------|-------------|
| Content-Security-Policy | 对脚本来源没有限制;注入的脚本可以随意执行 |
| X-Frame-Options | 面板可以被嵌入到攻击者的 iframe 中(点击劫持) |
| X-Content-Type-Options | MIME 嗅探 |
| Permissions-Policy | 摄像头 / 麦克风 / 地理位置访问不受限制 |
| Referrer-Policy | 完整的 URL(包括 token)可能会通过 Referer 泄露 |
| Cross-Origin-Opener/Resource-Policy | 没有跨源隔离 |
### 点击劫持场景
由于缺少 `X-Frame-Options` / CSP `frame-ancestors`,在已认证的管理员会话上覆盖一个不可见的 iframe 可以在点击时触发特权操作,例如 `PiReboot`、`DeleteUser`、`SwitchBannedDevice`。
### XSS 放大效应
结合在 Gr0m-028 中识别出的客户端注入漏洞(22 处 `dangerouslySetInnerHTML` 实例,35 处 `innerHTML` 赋值),CSP 的缺失意味着任何成功的 payload 都会不受限制地执行,从而导致数据泄露和会话传播行为。
## 与协调漏洞披露的映射
| 方面 | 详情 |
|--------|--------|
| Gr0m-043 | 管理面板除了 HSTS 外未提供任何安全标头;导致点击劫持 + XSS |
| CWE 调和 | 研究人员将其归类为 CWE-693 / CWE-1021;CISA 分配了 CWE-644。两者都描述了缺失标头的情况 |
| 注意事项 | 供应商曾向 CERT/CC 声明此漏洞已于 2026 年 3 月修复;作为 CISA CVE 发布,将其作为一项独立的有效漏洞记录在联邦档案中 |
## 修复方案
根据 ICSA-26-183-03,Gardyn 表示 IoT Hub 部署的基础设施已经更新以解决所列出的漏洞。建议的控制措施集(Netlify `_headers` / `netlify.toml`):
```
[[headers]]
for = "/*"
[headers.values]
Content-Security-Policy = "default-src 'self'; script-src 'self'; frame-ancestors 'none';"
X-Frame-Options = "DENY"
X-Content-Type-Options = "nosniff"
Referrer-Policy = "strict-origin-when-cross-origin"
Permissions-Policy = "camera=(), microphone=(), geolocation=()"
```
**研究人员:** Michael Groberman (Gr0m) · **案例:** CERT/CC VU#653116 · **安全公告:** ICSA-26-183-03
标签:IoT安全, Web安全, 安全公告, 漏洞报告, 点击劫持, 蓝队分析, 跨站脚本(XSS)