[방어] 분석 — CVE-2026-13308
CVE-2026-13308 is a critical RCE vulnerability in Autel MaxiCharger AC Elite Home via WebSocket integer underflow, requiring immediate L7 traffic filtering of malformed OCPP frames.
📋 요약
- 심각도 high · CVSS 8.1 · EPSS 0.00567 · 악용난이도 hard
🔍 공격 기법
- 트리거: 인증되지 않은 원격 공격자가 OCPP 서비스의 WebSocket 인터페이스를 통해 조작된 메시지를 전송합니다.
- 원리: WebSocket 프레임 내
Payload Length필드 값을 정밀하게 조작하여, 버퍼 할당 전 계산 과정에서 Integer Underflow를 유발합니다. - 단계:
- 비정상적으로 작은 길이 값 또는 특정 오프셋을 가진 메시지를 송신하여 매우 큰 메모리 할당 시도 혹은 잘못된 크기의 버퍼 생성 유도.
- 추정: Heap Grooming 기법을 통해 메모리 레이아웃을 재배치하여 힙 가드(Heap Guard)를 우회하고
memcpy대상 주소를 제어. - 버퍼 오버플로우를 통해 실행 흐름을 탈취하여 장치 권한으로 임의 코드 실행(RCE).
악용 가능성: 본 취약점은 네트워크를 통해 원격으로 접근 가능한 OCPP 서비스의 WebSocket 엔드포인트가 공격 표면입니다. CVSS 벡터상 AV:N/PR:N으로 인증 없이 외부 접근이 가능하나, AC:H(High) 등급인 이유는 정수 언더플로우(Integer Underflow)를 유발하여 정확한 메모리 버퍼 크기를 조작하고 RCE까지 연결해야 하는 정밀한 페이로드 구성이 필요하기 때문입니다. EPSS 수치는 0.00567로 낮고 KEV에 등재되지 않아 현재 대규모 자동화 공격이 관측되지는 않았으나, 이는 취약점의 이론적 심각도보다 실제 익스플로잇 구현 난이도가 높음을 시사합니다. 하지만 일단 유효한 페이로드가 개발된다면 인증 절차 없이 장치 권한으로 임의 코드를 실행할 수 있어 잠재적 위험성이 매우 큽니다. 결과적으로 공격 난이도는 높지만, 노출된 WebSocket 인터페이스를 통해 직접적으로 트리거되는 구조이므로 타겟팅된 공격에 취약한 상태입니다.
💥 영향 분석
- 권한 탈취: 인증 없이 원격에서 기기 제어권을 획득할 수 있습니다.
- 가용성 파괴: RCE 시도 중 메모리 오염으로 인한 서비스 거부(DoS/Crash)가 발생할 가능성이 매우 높습니다.
- 물리적 위험: EV 충전 인프라의 제어 로직을 조작하여 전력 공급 제어 등 물리적 안전 사고로 이어질 수 있습니다.
🔗 관련 취약점·체이닝
- 유형: Integer Underflow $\rightarrow$ Heap-based Buffer Overflow $\rightarrow$ RCE 체인입니다.
- 연계 가능성: 메모리 보호 기법(ASLR, DEP 등)이 미비한 임베디드 환경 특성상, 단순 Crash를 넘어 실제 코드 실행으로 이어지는 난이도가 낮아질 수 있습니다.
🔎 탐지
L7 계층에서 WebSocket 프레임의 길이 필드와 실제 페이로드 크기의 불일치를 감시하는 것이 핵심입니다.
- 로그 지표:
- WebSocket 핸드셰이크 이후 발생하는
Frame Header내Payload Length값. - 시스템 로그 내
Segmentation Fault또는Memory Allocation Failure관련 커널 메시지.
- WebSocket 핸드셰이크 이후 발생하는
- 탐지 규칙 예시:
- 비정상 길이 탐지 (IDS/WAF):
IF (websocket.frame.payload_length < MIN_EXPECTED_OCPP_SIZE) AND (packet.size > websocket.frame.payload_length) THEN ALERT - Integer Underflow 의심 패턴 (SIEM):
SELECT source_ip, timestamp FROM network_logs WHERE protocol='websocket' AND port=추정:OCPP_PORT AND payload_length_field < 10 AND actual_payload_size > 100 - 메모리 오염 징후 (Host Log):
grep -Ei "segfault|out of memory|heap corruption" /var/log/syslog
- 비정상 길이 탐지 (IDS/WAF):
- 오탐 튜닝:
- 정상적인 OCPP 하트비트(Heartbeat)나 매우 짧은 제어 메시지가
MIN_EXPECTED_OCPP_SIZE이하로 내려갈 수 있습니다. - 단순히 작은 값이 아니라, **'선언된 길이보다 실제 전송된 데이터가 훨씬 많은 경우'**에 가중치를 두어 탐지해야 합니다.
- 정상적인 OCPP 하트비트(Heartbeat)나 매우 짧은 제어 메시지가
🛡️ 완화 방안
본 취약점은 다중 소스에서 일관성이 확인되었으며(신뢰도 1.0), CVSS 8.1의 높은 심각도를 가집니다. 다만 EPSS가 0.00567로 낮고 exploit 등급이 hard인 점을 근거로, 즉시 대응 후 이번 주 내 패치를 적용하는 scheduled 우선순위로 처리합니다.
- 즉시 (긴급 차단): L7 프록시/WAF에서 비정상 WebSocket 프레임 드롭
- 내용: OCPP 서비스 포트로 들어오는 WebSocket 트래픽 중,
Payload Length가 비정상적으로 작거나 규격 외인 패킷을 즉시 차단하는 프로파일링 룰 적용. - 난이도: 중간 / 영향: 낮음 (비정상 패킷만 차단) / 검증: 조작된 길이의 더미 패킷 전송 시 드롭 여부 확인.
- 내용: OCPP 서비스 포트로 들어오는 WebSocket 트래픽 중,
- 단기 (완화): 네트워크 세그멘테이션 및 ACL 강화
- 내용: 충전기 관리 서버(CSMS)와 충전기 간의 통신을 허용된 IP 리스트로만 제한하여 외부 공격자의 접근 경로를 차단.
- 난이도: 낮음 / 영향: 중간 (관리망 설정 변경 필요) / 검증: 비인가 IP에서 WebSocket 연결 시도 시 거부 확인.
- 근본 (해결): 제조사 제공 펌웨어 업데이트 적용
- 내용: 입력값 검증 로직이 수정된 최신 버전으로 패치하여 Integer Underflow 근본 원인 제거.
- 난이도: 높음(전수 업데이트 필요) / 영향: 중간 (재부팅 및 서비스 일시 중단) / 검증: 패치 버전 확인 및 취약점 스캔 재수행.
잔여 리스크: 패치 후에도 WebSocket 파싱 로직의 다른 부분에서 유사한 정수 오버플로우/언더플로우가 존재할 가능성이 있으므로, 지속적인 L7 모니터링이 필요합니다.
⚖️ 위험도 / 우선순위
- 조치: scheduled (이번 주 내)
- 근거: CVSS=8.1 · non-KEV · EPSS=0.00567 · exploit=hard · in_scope=None