CVE-2026-54477:管理面板缺少安全标头(点击劫持 / XSS)
公告
| 字段 | 值 |
|---|
| CVE | CVE-2026-54477 |
| ICSA | 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 Firmware < master.627、Studio Firmware < 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 |
缺失的标头
点击劫持场景
由于没有 X-Frame-Options / CSP frame-ancestors,在已认证管理员会话上放置一个不可见的覆盖 iframe,可触发点击特权操作,例如 PiReboot、DeleteUser、SwitchBannedDevice。
XSS 放大
结合 Gr0m-028 中确定的服务端注入点(22 个 dangerouslySetInnerHTML 实例、35 个 innerHTML 赋值),缺少 CSP 意味着任何成功的载荷都会无限制地执行,从而能够实现数据外泄和会话传播行为。
与协调发现的映射
| 方面 | 详情 |
|---|
| Gr0m-043 | 管理面板除 HSTS 外没有任何安全标头;支持点击劫持 + XSS |
| CWE 协调 | 研究人员分类为 CWE-693 / CWE-1021;CISA 分配为 CWE-644。两者均描述了缺少标头的状况 |
| 备注 | 供应商声称该发现已于 2026 年 3 月修复(已向 CERT/CC 说明);作为 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