[공격] 분석 — CVE-2026-61893
CVE-2026-61893 enables an unauthenticated remote out‑of‑bounds read in IEC 60870‑5‑104 servers via a malformed I‑frame, and the fastest mitigation is to block or strictly validate TypeID 104 frames with oversized object counts.
📋 요약
- 심각도 medium · CVSS 6.5 · EPSS 미확보 · 악용난이도 easy
🔍 공격 기법
- 정찰 – 대상 시스템이 TCP 2404(IEC 60870‑5‑104) 포트를 열고 있는지 SYN 스캔으로 확인합니다.
- 초기 접근 – 인증·권한 요구가 없으므로(PR:N, UI:N) 바로 I‑frame을 전송할 수 있습니다.
- 트리거 조건 – TypeID = 104(C_TS_NA_1)를 가진 I‑frame에
object count필드를 정상 범위(예: ≤127)를 크게 초과하도록 설정합니다. 이 값이 실제 할당된 힙 버퍼 길이를 넘어가면TestCommand_getFromBuffer함수가 버퍼 끝을 1바이트 넘겨 읽게 됩니다(AV:N, AC:L). - 실행 – 과다 객체 수를 포함한 프레임 전송 → 메모리 OOB read 발생.
- 영향 – 인접 힙 영역이 노출되어 포인터·인증 토큰 등 민감 데이터가 유출될 수 있으며, 읽기 오류로 프로세스가 비정상 종료해 서비스 거부(DoS) 상황이 초래될 수도 있습니다(추정).
공격 표면: IEC 60870‑5‑104 서버 전반(포트 2404), ASDU 파싱 로직에서 object count 검증이 없는 모든 엔드포인트, 특히 TestCommand_getFromBuffer 함수가 호출되는 경로.
(교차검증 결과 일관됨)
악용 가능성: 이 취약은 IEC 60870‑5‑104(기본 포트 2404) 서비스가 네트워크에 노출돼 있으면 원격에서 단일 패킷만 전송하면 됩니다. AV:N·PR:N·UI:N 벡터는 “네트워크 접근만으로, 인증이 필요 없으며 사용자 개입도 요구되지 않는다”는 전제조건을 의미하므로 공격 난이도가 낮아 easy 등급이 유지됩니다. 트리거 조건은 I‑frame의 TypeID 104(C_TS_NA_1)와 비정상적으로 큰 object count 값을 포함한 패킷이며, 이 값이 TestCommand_getFromBuffer 함수에 전달될 때 힙 버퍼 끝을 1바이트 초과해 읽게 됩니다. 공격 표면은 해당 프레임을 파싱하는 TestCommand_getFromBuffer 함수와, 외부에서 조작 가능한 object‑count 필드, 그리고 프로토콜 자체가 TCP 기반이므로 방화벽·ACL 설정만으로 차단하기 어렵습니다. EPSS 값이 현재 제공되지 않아 관측된 악용 사례는 부족하지만, KEV에 등재되지 않은 점은 아직 대규모 공격이 보고되지 않았을 뿐, 네트워크 접근 가능성과 낮은 난이도 때문에 실전 위협으로 간주됩니다. 따라서 원격에서 임의의 I‑frame만 전송하면 메모리 오버읽기가 발생해 추후 메모리 손상·코드 실행 등 심각한 영향으로 이어질 수 있습니다.
💥 영향 분석
- 메모리 정보 누출 : 힙에 인접한 구조체(예: 인증 토큰, 핸들) 1바이트 이상이 외부에 노출될 수 있습니다.
- 서비스 중단 : OOB read가 예외를 일으키면 프로세스가 강제 종료되어 IEC 60870‑5‑104 서비스가 다운됩니다.
- 추가 공격 가능성(추정) : 누출된 메모리 정보를 기반으로 주소 추정·ROP 체인 구성이 가능하면 원격 코드 실행(RCE)까지 이어질 수 있습니다.
🔗 관련 취약점·체이닝
- CWE‑125 (Out‑of‑bounds Read) → 정보 노출 → 권한 상승/원격 코드 실행(일반적인 메모리 손상 체인).
- 동일 프로세스 내 다른 입력 검증 부재(CWE‑787, Buffer Overflow)와 결합하면 완전한 RCE가 실현될 가능성이 있습니다(추정).
- 현재 확인된 추가 CVE 번호는 없으며, IEC 60870‑5‑104 파싱 오류 전반에 걸친 유사 취약점과 연계될 경우 공격 표면이 확대됩니다.
🔎 탐지
- 시그니처: “IEC 60870‑5‑104 I‑frame, TypeID=104, object count > 정상 최대값(예: > 127)”을 포함한 패킷을 IDS/IPS에서 경보.
- 로그 지표: 파싱 단계에서
TestCommand_getFromBuffer가 “buffer overread” 또는 “invalid ASDU length”와 같은 오류를 기록하면 알림. - 행위 기반: 짧은 시간 내 동일 소스 IP가 다수의 비정상 길이 I‑frame을 전송하는 패턴.
🛡️ 완화 방안
- 즉시 차단 – 네트워크 경계에서 IEC 60870‑5‑104(포트 2404) 접근을 신뢰된 내부망으로 제한하고, TypeID = 104 프레임에 대한 길이 검증 규칙을 적용합니다. (우선순위 immediate, 24 h 내 대응)
- 입력 검증 강화 – 파서에서
object count가 사전 정의 상한(예: ≤127) 을 초과하면 해당 ASDU를 폐기하도록 수정합니다. - 패치·업데이트 – 공급 업체가 제공하는 보안 패치를 신속히 적용합니다. 제품 식별이 불명확하므로, 모든 IEC 60870‑5‑104 구현에 동일 방어 조치를 권고합니다.
- 메모리 하드닝 – ASLR, 힙 쿠키, DEP 등 운영체제 수준 메모리 보호 기능을 활성화하고, 해당 버퍼 주변에 guard page를 배치해 OOB read가 실제 실행 흐름을 변경하기 어렵게 합니다.
⚖️ 위험도 / 우선순위
- 조치: immediate (지금 즉시(24h 내))
- 근거: CVSS=6.5 · non-KEV · EPSS=미확보 · exploit=easy · in_scope=None