[공격] 분석 — CVE-2026-63559
CVE-2026-63559 allows a remote attacker to trigger an integer overflow in open62541’s Variant handling and read arbitrary heap memory, so immediate patching or network isolation of OPC UA services is required.
📋 요약
- 심각도 high · CVSS 7.5 · EPSS 미확보 · 악용난이도 easy
🔍 공격 기법
-
공격 표면
- 노출된 OPC UA 엔드포인트(TCP 4840 등)에서
CreateSession→ 익명/인증 없는 연결이 가능함(AV:N, PR:N). Read,Write,Browse등 서비스 요청의Variant파라미터에 포함되는arrayDimensions필드가 취약점 트리거 포인트임.
- 노출된 OPC UA 엔드포인트(TCP 4840 등)에서
-
정찰
- OPC UA 서버 배너 혹은 프로토콜 핸드쉐이크를 통해 open62541 라이브러리 사용 여부 확인(버전 문자열, 특수 옵션 등).
-
초기 접근 & 실행
- 익명 세션을 수립한 뒤,
Read또는Write요청에 의도적으로 매우 큰 차원값 배열(arrayDimensions)을 삽입. - 내부에서
UA_Variant의arrayDimensions곱셈이 32‑bit 정수 오버플로우를 일으키면, 실제 할당 크기가 예상보다 작게 계산됨.
- 익명 세션을 수립한 뒤,
-
권한 획득·영향
- 이후 서버가 요청된 데이터를 버퍼에 복사하거나 반환할 때, 할당된 범위를 초과해 힙 메모리를 읽음.
- 공격자는 응답 페이로드에 포함된 무작위 힙 데이터(키, 토큰, 기타 민감 정보)를 획득함.
- 이 단계는 추가적인 코드 실행을 요구하지 않으며, CVSS 벡터의
C:H만 충족한다.
-
조건·관측 지표
arrayDimensions값이 정상 범위(예: 1 ~ 1024) 를 초과하거나 곱셈 결과가 0/음수가 되는 경우.- 응답에 비정상적으로 큰
Variant바이트 배열 또는 예상치 못한 데이터 패턴이 포함됨.
악용 가능성: 이 취약은 네트워크를 통해 접근 가능한 OPC UA 엔드포인트에서 UA_Variant 구조체의 arrayDimensions 필드를 조작하면 발생합니다. CVSS 벡터 AV:N/AC:L/PR:N/UI:N는 공격자가 별도의 인증이나 사용자 동작 없이 원격에서 단순히 패킷을 전송하는 것만으로도 이용 가능하다는 의미이며, 실제로 open62541 서버가 기본 설정대로 외부에 노출돼 있다면 난이도는 “easy” 수준에 해당합니다. EPSS 데이터가 존재하지 않고 KEV에도 등재되지 않았지만, 정수 오버플로우를 이용한 힙 메모리 영역의 읽기 권한 획득은 이론적 심각도와 무관하게 실제 정보 유출 위험을 내포하고 있습니다. 트리거 조건은 클라이언트가 전송하는 Variant 배열 차원의 곱 연산 결과가 32‑bit 정수 범위를 초과하도록 조작된 경우이며, 해당 파라미터는 OPC UA Read·Write 서비스 요청의 바디에 포함되어 노출됩니다. 공격자는 이 변조된 요청을 네트워크 상에서 바로 전송함으로써 힙 메모리의 임의 영역을 읽어 민감 데이터(예: 인증 토큰, 키) 등을 탈취할 수 있습니다. 따라서 공격 표면은 OPC UA TCP 포트(기본 4840)와 해당 서비스가 허용하는 Variant 파라미터 전부이며, 별도의 사전 정찰 없이도 직접적인 원격 활용이 가능합니다.
💥 영향 분석
- 성공 시 원격 공격자는 임의 힙 메모리를 읽어 민감 정보(인증 토큰, 암호화 키, 운영 체제 구조 등) 를 탈취할 수 있음.
- 서비스 자체가 중단되지는 않지만, 기밀성 손실이 심각함(
C:H).
🔗 관련 취약점·체이닝
- 정보 노출 → 권한 상승: 메모리 덤프에서 얻은 인증 정보나 세션 토큰을 이용해 별도의 인증 우회 또는
Privilege Escalation취약점(CWE‑269 등)과 연계 가능. - 유사 패턴: OPC UA 스택 내 다른 Variant 파싱 로직에 대한 정수 오버플로우/경계 검사 미비(CWE‑190, CWE‑681)와 조합 시 추가적인 메모리 손상 또는 원격 코드 실행(RCE)으로 확장될 수 있음.
- 현재 확인된 직접 연관 CVE 번호는 없으며, 위 체이닝은 추정: 일반적인 메모리 노출 → 인증 우회 흐름을 기반으로 함.
🔎 탐지
- OPC UA 로그에
arrayDimensions필드가 비정상적으로 큰 값(예: 2³¹ 이상) 혹은 곱셈 결과가 0인 요청이 기록되는 경우. - 응답 패킷에서 예상되지 않은 고엔트로피 데이터가
Variant바디에 포함될 때 경보 발생. - IDS/IPS 규칙으로 “OPC UA Variant arrayDimensions > 4096” 혹은 “Payload size mismatch after Variant parsing”을 모니터링.
🛡️ 완화 방안
- 패치 적용: open62541 최신 릴리스(취약점이 수정된 버전)로 즉시 업그레이드한다.
- 접근 제어: 익명 세션을 차단하고 강력한 인증(서버‑클라이언트 인증서 등)을 적용하여
PR:N조건을 제거한다. - 네트워크 경계: OPC UA 포트를 내부 신뢰 구역에 한정하고, 외부 접근은 방화벽·VPN으로 제한한다.
- 입력 검증: 애플리케이션 레이어에서
arrayDimensions와 그 곱셈 결과가 합리적인 범위(예: ≤ 1 000 000) 를 초과하면 요청을 차단하도록 로직 추가. - 모니터링: 위 탐지 지표를 기반으로 SIEM에 알림 규칙을 설정하고, 비정상적인 메모리 노출 시 즉시 세션 종료 및 포렌식 수집을 수행한다.
⚖️ 위험도 / 우선순위
- 조치: immediate (지금 즉시(24h 내))
- 근거: CVSS=7.5 · non-KEV · EPSS=미확보 · exploit=easy · in_scope=None