
CVE-2026-54477: Admin Panel Missing Security Headers (clickjacking/XSS) - Gardyn (ICSA-26-183-03)
| Поле | Значение |
|---|---|
| CVE | CVE-2026-54477 |
| ICSA | ICSA-26-183-03 (Gardyn IoT Hub) |
| CVSS 3.1 | 5.4 (Medium) |
| 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 (назначен CISA) | CWE-644 (Improper Neutralization of HTTP Headers for Scripting Syntax) |
| CWE (исследователь) | CWE-693 (Protection Mechanism Failure), CWE-1021 (Improper Restriction of Rendered UI Layers) |
| Исследователь | 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.
В сочетании с клиентскими точками внедрения, выявленными в Gr0m-028 (22 экземпляра dangerouslySetInnerHTML, 35 присваиваний innerHTML), отсутствие CSP означает, что любая успешная полезная нагрузка выполняется без ограничений, что позволяет осуществлять эксфильтрацию данных и поведение, распространяющееся на сессии.
| Аспект | Детали |
|---|---|
| Gr0m-043 | Панель администратора обслуживается без заголовков безопасности, кроме HSTS; позволяет кликджекинг + XSS |
| Согласование CWE | Исследователь классифицировал как CWE-693 / CWE-1021; CISA назначила CWE-644. Оба описывают условие отсутствующего заголовка |
| Примечание | Этот результат был заявлен вендором в CERT/CC как исправленный в марте 2026 года; публикация как 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
| Отсутствующий заголовок | Последствие |
|---|
| Content-Security-Policy | Нет ограничений на источники скриптов; внедрённый скрипт выполняется свободно |
| X-Frame-Options | Панель может быть встроена в iframe атакующего (кликджекинг) |
| X-Content-Type-Options | Сниффинг MIME |
| Permissions-Policy | Камера / микрофон / геолокация не ограничены |
| Referrer-Policy | Полный URL (включая токены) может быть передан через Referer |
| Cross-Origin-Opener/Resource-Policy | Нет изоляции между источниками |