
CVE-2026-54477: 관리자 패널 보안 헤더 누락(클릭재킹/XSS) - Gardyn (ICSA-26-183-03)
| 필드 | 값 |
|---|---|
| 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가 모두 없어, 인증된 관리자 세션을 대상으로 클릭재킹과 교차 사이트 스크립팅(XSS)이 가능합니다.
| 헤더 | 값 |
|---|---|
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를 지정함. 둘 다 헤더 누락 상태를 설명함 |
| 참고 | 이 발견 사항은 2026년 3월 공급업체가 CERT/CC에 해결 완료(remediated) 상태로 주장한 것입니다. 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 | Referer를 통해 전체 URL(토큰 포함)이 유출될 수 있음 |
| Cross-Origin-Opener/Resource-Policy | 교차 출처 격리 없음 |