
CVE-2026-54477: Painel de Administração sem cabeçalhos de segurança (clickjacking/XSS) - Gardyn (ICSA-26-183-03)
| Campo | Valor |
|---|---|
| CVE | CVE-2026-54477 |
| ICSA | ICSA-26-183-03 (Gardyn IoT Hub) |
| CVSS 3.1 | 5.4 (Médio) |
| Vector (3.1) | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:N |
| Vector (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 (atribuído pela CISA) | CWE-644 (Neutralização Imprópria de Cabeçalhos HTTP para Sintaxe de Script) |
| CWE (pesquisador) | CWE-693 (Falha no Mecanismo de Proteção), CWE-1021 (Restrição Imprópria de Camadas de UI Renderizadas) |
| Pesquisador | Michael Groberman |
| Publicado | 2026-07-02 |
| Descoberta coordenada | Gr0m-043 (painel administrativo sem todos os cabeçalhos de segurança) |
| Campo | Valor |
|---|---|
| Fornecedor | Gardyn |
| Produto | Gardyn Home Kit, Gardyn Studio |
| Componente | Painel administrativo (admin.gardyn.io, Netlify) |
| Versões Afetadas | Home Firmware < master.627, Studio Firmware < master.627, Cloud API < 2.12.2026 |
O painel administrativo é servido sem cabeçalhos de segurança além do HSTS — sem Content-Security-Policy, sem X-Frame-Options, sem X-Content-Type-Options, sem Permissions-Policy. Isso possibilita clickjacking e cross-site scripting contra sessões administrativas autenticadas.
| Cabeçalho | Valor |
|---|---|
server | Netlify |
strict-transport-security | max-age=31536000 |
cache-control | no-cache |
| Cabeçalho ausente | Consequência |
|---|---|
| Content-Security-Policy | Nenhuma restrição nas fontes de script; script injetado executa livremente |
| X-Frame-Options | O painel pode ser incorporado em um iframe do atacante (clickjacking) |
| X-Content-Type-Options | Detecção de MIME |
| Permissions-Policy | Câmera / microfone / geolocalização sem restrições |
| Referrer-Policy | URL completa (incluindo tokens) pode vazar via Referer |
| Cross-Origin-Opener/Resource-Policy | Sem isolamento entre origens |
Sem X-Frame-Options / CSP frame-ancestors, um iframe de sobreposição invisível sobre uma sessão administrativa autenticada pode acionar ações privilegiadas ao clique, por exemplo, PiReboot, DeleteUser, SwitchBannedDevice.
Combinado com os sumidouros de injeção no lado do cliente identificados em Gr0m-028 (22 instâncias de dangerouslySetInnerHTML, 35 atribuições de innerHTML), a ausência de CSP significa que qualquer payload bem-sucedido executa sem restrição, possibilitando exfiltração de dados e comportamento de propagação de sessão.
| Aspecto | Detalhe |
|---|---|
| Gr0m-043 | Painel administrativo servido com zero cabeçalhos de segurança além do HSTS; possibilita clickjacking + XSS |
| Reconciliação CWE | Pesquisador classificou CWE-693 / CWE-1021; CISA atribuiu CWE-644. Ambos descrevem a condição de cabeçalho ausente |
| Nota | Esta descoberta foi afirmada pelo fornecedor ao CERT/CC como corrigida em março de 2026; a publicação como um CVE da CISA a estabelece no registro federal como uma descoberta válida e independente |
Conforme ICSA-26-183-03, a Gardyn afirma que a infraestrutura implantada do IoT Hub foi atualizada para tratar as vulnerabilidades listadas. Conjunto de controles recomendado (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=()"
Pesquisador: Michael Groberman (Gr0m) · Caso: CERT/CC VU#653116 · Advertência: ICSA-26-183-03