[방어] 분석 — CVE-2026-66720
The IEC 61850 GOOSE subscriber can be DoS‑ed by a malformed multicast frame with an undersized UTC timestamp, and the immediate mitigation is to block unauthenticated GOOSE traffic at the network edge.
📋 요약
- 심각도 medium · CVSS 6.5 · EPSS 미확보 · 악용난이도 moderate
🔍 공격 기법
IEC 61850 GOOSE( EtherType 0x88B8 ) 구독자는 수신된 프레임의 UTC 타임스탬프 필드 길이를 검증하지 않는다.
공격자는 동일 LAN·VLAN 내에서 UDP‑like 멀티캐스트 프레임을 조작해, 타임스탬프를 정상보다 짧게(예: 4 B) 삽입한다.
구독자 프로세스는 해당 필드를 힙 버퍼에 그대로 읽어 out‑of‑bounds 읽기를 발생시키고, 결국 프로세스 크래시 → 서비스 거부(DoS)가 일어난다.
악용 가능성: 이 취약점은 AV:A(Adjacent) 로 정의되어 있어 공격자는 동일 LAN·브로드캐스트 도메인에 존재하기만 하면 GOOSE 멀티캐스트 트래픽을 주입할 수 있습니다. AC:L(Low) 이므로 특수한 기술이나 복잡한 전처리 없이, 단순히 잘못된 타임스탬프 필드를 포함한 프레임을 생성하면 됩니다. PR:N(No privileges) 와 UI:N(No user interaction) 로 인해 공격자는 사전 권한이 필요 없으며, 피해자 사용자의 행동을 유도할 필요도 없습니다.
현재 EPSS 점수가 제공되지 않아 실측 악용 빈도는 확인되지 않지만, KEV에 등재되지 않은 점은 아직 대규모 공격 사례가 보고되지 않았음을 의미합니다. 그럼에도 불구하고, IEC 61850 GOOSE(이더넷 타입 0x88B8) 메시지는 인증 없이 수신되므로 네트워크에 연결된 어느 장치라도 악의적인 프레임을 전송할 수 있습니다.
공격 표면은 GOOSE subscriber 컴포넌트가 처리하는 UTC 타임스탬프 필드이며, 이 필드를 과소 길이로 조작하면 힙 영역을 벗어난 읽기가 발생해 프로세스가 크래시하고 서비스 거부(DoS) 상태가 초래됩니다. 따라서 동일 네트워크에 접근 가능한 내부 장치·침투된 시스템만 있으면 비교적 낮은 난이도로 이 취약점을 악용할 수 있습니다.
💥 영향 분석
- GOOSE 구독 프로세스 비정상 종료 → 실시간 보호/제어 신호를 수신하지 못함
- 해당 서브시스템이 담당하는 전력 설비 제어가 중단될 위험 (전압·차단 명령 미전송)
- 서비스 복구까지 재시작 또는 관리자의 개입 필요 → 운영 가용성 저하
🔗 관련 취약점·체이닝
- IEC 61850 GOOSE 메시지 길이 검증 부재와 연관된 과거 메모리‑오버플로/읽기 오류(CWE‑124, CWE‑125)
- 동일 스택에서 발견된 다른 입력 검증 미비(CVE‑2025‑xxxx 등)와 결합 시 복합적인 DoS 혹은 원격 코드 실행 가능성
🔎 탐지
로그·지표
- 네트워크 IDS/IPS 로그:
eth.type == 0x88B8(GOOSE) ANDpayload_len < MIN_GOOSE_LEN - 스위치 포트 미러링: 프레임 길이(
frame.len)가 64 B 이하(최소 GOOSE 헤더 + 정상 타임스탬프)인 경우 - 시스템 로그/코어 덤프: “GOOSE subscriber crashed” 또는
segfault메시지
SIEM 탐지 규칙 예시
- Malformed‑Timestamp Rule
1source = "ids" 2| where eth_type == 0x88B8 3| where regex_match(payload, "^.{0,7}$") // UTC timestamp 필드가 8 B 미만 4| stats count by src_mac, _time span=1m 5| where count > 5오탐: 정상 테스트 장비에서 짧은 타임스탬프를 사용한다면 제외(src_mac in (whitelist)).
- Crash Correlation Rule
1(source="syslog" AND message LIKE "%GOOSE subscriber crashed%") 2OR (source="core_dump" AND process=="goose_subscriber") 3| timechart span=1m count 4| where count > 0오탐: 비정상 종료가 정상 재시작 정책에 포함된 경우, “restarted” 로그와 함께 필터링.
- Rate‑Based Anomaly Rule
1source="netflow" 2| where eth_type == 0x88B8 3| summarize cnt = count() by src_ip, bin(_time,5m) 4| where cnt > 100 // 비정상적인 GOOSE 전송량오탐: 정상 대용량 이벤트(예: 보호 설비 테스트) 시 event_type=="test" 로 제외.
튜닝 포인트
- 최소 타임스탬프 길이(
MIN_GOOSE_LEN)를 실제 구현 사양에 맞게 조정 (보통 8 B) - 허용된 MAC 주소/IP 리스트를 최신화하여 테스트 장비는 별도 whitelist 적용
- 임계값(5건/1분, 100건/5분 등)을 환경 트래픽 기준으로 점진적으로 낮추어 FP 감소
🛡️ 완화 방안
- 전용 VLAN 격리 – GOOSE 트래픽을 전용 VLAN(예: VLAN 200)으로 이동하고, 그 VLAN에만
ether-type 0x88B8허용. - MAC‑ACL 적용 – 알려진 구독자/발신 장비 MAC 주소만 GOOSE를 송수신하도록 제한.
- 프레임 길이 검증 활성화 – 스위치 포트에서
minimum-frame-size옵션을 64 B 이상으로 설정하고, 비정상적으로 짧은 프레임을 드롭.
- 구현 난이도: ★★☆ (네트워크 설계 변경 및 ACL 정책 추가)
- 운영 영향: VLAN 재배치 시 일시적인 트래픽 전환 필요, MAC‑ACL 업데이트 시 관리 부담 증가.
- 검증 방법: VLAN 별 트래픽 캡처(
tcpdump -i ethX -e ether proto 0x88b8) 로 정상/비정상 프레임 확인, ACL 로그에 “dropped” 항목 존재 여부 체크.
⚖️ 위험도 / 우선순위
- 조치: scheduled (이번 주 내)
- 근거: CVSS=6.5 · non-KEV · EPSS=미확보 · exploit=moderate · in_scope=None