[단독방어] 분석 — CVE-2026-66364
CVE-2026-66364 allows an unauthenticated L2 multicast GOOSE frame to trigger an out‑of‑bounds read in libiec61850 0 – 1.6.2, causing a reliable DoS; the highest‑priority mitigation is to block such frames at the switch level until the library is patched.
📋 요약
- 심각도 medium · CVSS 6.5 · EPSS 미확보 · 악용난이도 moderate
🔍 공격 기법
- 공격자는 프로세스 버스에 단일 L2 멀티캐스트 GOOSE 프레임을 전송한다.
- 페이로드 내부 요소 길이가 상위 필드가 선언한 길이를 초과하도록 조작하면, libiec61850의 파서가 1바이트를 오버‑리드하고 구독자 프로세스를 비정상 종료시킨다.
- 이 과정은 인증 없이 수행되며, 추가적인 권한 상승이나 코드 실행은 없고 서비스 거부(DoS)만 발생한다.
악용 가능성: CVSS 벡터 AV:A/AC:L/PR:N/UI:N 은 인접 네트워크(예: 동일 LAN)에서 인증 없이 단일 프레임만 전송하면 공격이 가능함을 의미합니다. 복잡도는 낮으며, GOOSE 멀티캐스트 프레임 하나에 조작된 내부 길이 필드를 삽입하는 것만으로 취약 로직을 트리거할 수 있습니다. 권한 요구가 없고 사용자 상호 작용도 필요하지 않으므로 공격자는 네트워크 레이어 2 접근만 확보하면 됩니다. 그러나 결함은 바이트 단위의 오버‑읽기로 구독자 프로세스를 종료시키는 서비스 거부(DoS)만을 초래하므로 원격 코드 실행 등 더 심각한 영향을 주지는 못해 위험도는 moderate 수준에 머뭅니다. EPSS
💥 영향 분석
- 성공 시 libiec61850을 이용하는 IEC 61850 GOOSE 구독 프로세스가 즉시 종료되어 해당 보호/제어 애플리케이션이 중단된다.
- 복구를 위해 자동 재시작 메커니즘이 없으면 운영 현장에서 전력 설비의 상태 변화 알림이 차단돼, 장애 대응 지연 및 시스템 가용성 저하가 발생한다.
🔗 관련 취약점·체이닝
- 동일 라이브러리에서 과거에 보고된 “IEC 61850 MMS parsing buffer overflow”(CWE‑119)와 유사한 메모리‑오버플로우 패턴을 공유한다.
- GOOSE 프레임 자체가 인증되지 않으므로, 네트워크 레벨 차단(ACL/EBtables)과 결합하면 다른 미확인 취약점에 대한 공격 경로도 동시에 차단할 수 있다.
🔎 탐지
로그·시그니처
syslog혹은 애플리케이션 로그에서 “GOOSE parser out of bounds read” 또는 “libiec61850: fatal error – buffer overrun” 문자열이 기록될 경우.- 시스템d 서비스가 비정상 종료(
Exited with code=SIGSEGV)된 이벤트.
SIEM 쿼리 예시 (Elastic Security / Splunk)
-
프로세스 크래시 탐지
text1index=host_logs source="systemd"2"libiec61850" AND ("segmentation fault" OR "SIGSEGV") -
GOOSE 프레임 길이 불일치 탐지 (PCAP 로그)
text1index=network_traffic sourcetype=pcap2eth.type=0x88b83| eval inner_len = hex_to_int(payload[...])4| where inner_len > total_len -
정규식 기반 로그 탐지
text1index=app_logs message="/GOOSE parser.*(out of bounds|buffer overrun)/"
오탐 튜닝
- 정상 GOOSE 트래픽에서도 길이 필드가 변동될 수 있으므로,
inner_len > total_len + 1로 조건을 완화하거나, 동일 소스 MAC 주소에서 일정 기간 내에 반복 발생하는 경우만 알림으로 제한한다. - 시스템 재시작 정책에 의해 정상적인 서비스 업데이트 시에도 SIGSEGV 로그가 남을 수 있으니, 이벤트 발생 시점과 배포 스케줄을 교차 확인한다.
🛡️ 완화 방안
즉시(긴급 차단)
- 스위치 ACL 적용: 모든 포트에서 EtherType 0x88B8(GOOSE) 멀티캐스트를 허용하는 VLAN/포트만 지정하고, 나머지는
drop규칙을 설정한다.- 구현 난이도: 중‑상 (네트워크 팀 협업 필요)
- 운영 영향: 해당 포트에서 GOOSE 기반 보호 기능이 일시적으로 차단되지만, 비핵심 구역에서는 서비스 지속 가능.
- 검증 방법:
show mac address-table및 ACL 카운터 확인 후, 정상적인 GOOSE 트래픽이 차단되는지 테스트.
단기(완화)
-
패킷 전처리 필터링: 호스트 레벨에서 ebtables 또는 nftables를 이용해
inner_len > total_len조건을 만족하는 프레임을 드롭한다.- 구현 난이도: 중 (Linux 방화벽 규칙 작성)
- 운영 영향: CPU 부하 최소, 기존 GOOSE 통신에 거의 영향 없음(정상 패킷은 통과).
- 검증 방법:
ebtables -L로그와 차단된 패킷 카운터 모니터링.
-
프로세스 감시·자동 재시작: systemd 서비스에
Restart=on-failure옵션을 추가하고, core dump 수집을 비활성화하여 공격 시 빠른 복구를 보장한다.- 구현 난이도: 낮음
- 운영 영향: 가용성 향상, 로그량 증가.
- 검증 방법: 서비스 재시작 이벤트 확인.
근본(해결)
- 라이브러리 업그레이드: 공급업체가 제공하는 ≥ 1.6.2 버전으로 libiec61850를 교체한다. 패키지 매니저 또는 소스 컴파일 시
CFLAGS="-DSECURE_PARSER"옵션을 적용해 길이 검증을 강화할 수 있다.- 구현 난이도: 중‑상 (테스트·배포 파이프라인 필요)
- 운영 영향: 재시작 및 호환성 테스트 필요, 성능 변화는 미미.
- 검증 방법: 새 버전 적용 후 정상적인 GOOSE 메시지 파싱 로그와 크래시 유무 확인.
잔여 리스크
- 패치가 배포된 이후에도 동일한 입력 검증 로직을 우회하는 변형 공격이 존재할 가능성은 낮지만, libiec61850 외부에서 직접 메모리 접근을 시도할 경우를 대비해 시스템 전체의 메모리 보호(ASLR·DEP) 설정을 유지한다.
인시던트 대응 플레이북
- 알림 수신 → 해당 호스트/프로세스(
libiec61850) 크래시 로그 확인. dmesg와 core dump가 있으면 원본 프레임 캡처(PCAP) 추출.- 공격자 IP/MAC 식별 → 네트워크 ACL에 즉시 차단.
- 서비스 재시작 후 정상 동작 여부 검증, 필요 시 임시 패킷 필터 적용.
- 패치가 준비되면 테스트 환경에서 검증 후 전사 배포.
⚖️ 위험도 / 우선순위
- 조치: scheduled (이번 주 내)
- 근거: CVSS=6.5 · non-KEV · EPSS=미확보 · exploit=moderate · in_scope=None