[단독공격] 분석 — CVE-2026-63559
CVE-2026-63559 is an unauthenticated remote integer‑overflow in open62541 that enables out‑of‑bounds heap reads and must be mitigated immediately.
📋 요약
- 심각도 high · CVSS 7.5 · EPSS 미확보 · 악용난이도 easy
🔍 공격 기법
- 공격 표면: OPC UA 서버가 open62541 라이브러리를 사용하고 있을 경우,
Read,Write,Browse등 Variant를 전송하는 서비스에서arrayDimensions필드가 노출됩니다. - 트리거 조건: 공격자는 네트워크(AV:N) 상에서 인증 없이(PR:N) 특수히 큰
arrayDimensions값을 포함한 OPC UA 메시지를 전송합니다. 이 값이 내부에서product = dim1 * dim2 * …연산 시 정수 오버플로우를 일으키면, 이후 메모리 복사 루틴이 계산된 크기를 기반으로 힙을 초과 읽게 됩니다(AC:L). - 단계
- 정찰 – OPC UA 엔드포인트(
opc.tcp://…)와 사용 중인 open62541 버전을 포트 스캔·핸드쉐이크로 확인합니다. - 초기 접근 – 정상적인
Read요청에 변조된 Variant를 삽입,arrayDimensions에 0xFFFFFFFF 등 과다한 값을 넣어 전송합니다. - 실행·권한 획득 – 서버는 오버플로우가 발생한 후 잘못된 길이(
size)로 힙 메모리를 복사해 응답에 포함시키므로, 공격자는 임의 메모리 내용을 탈취합니다(읽기 권한만 필요). - 지속·영향 – 누출된 힙 데이터에는 인증 토큰, 키, 구조체 포인터 등이 포함될 수 있어, 추가적인 권한 상승이나 코드 실행으로 연결될 가능성이 있습니다.
- 정찰 – OPC UA 엔드포인트(
- CVSS 연계: 실제 공격 조건이 CVSS 벡터(AV:N/AC:L/PR:N/UI:N)와 일치하므로, 네트워크 접근만 있으면 복잡도 없이 이용 가능합니다.
악용 가능성: 이 취약점은 AV:N/AC:L/PR:N/UI:N 벡터에 따라 네트워크만 연결되면 인증·사용자 개입 없이 바로 시도할 수 있으므로 공격 난이도가 “easy”로 평가됩니다. 실제로는 OPC UA 서버가 open62541 라이브러리를 사용하고 있을 때, Write 또는 Read 서비스 요청의 Variant 구조체에 조작된 arrayDimensions 값을 전송하면 정수 오버플로우가 발생해 힙 메모리 영역을 읽어낼 수 있습니다. 공격자는 서버가 공개적으로 서비스 중인 TCP 4840(기본 OPC UA 포트) 혹은 해당 프로토콜을 터널링하는 anycast 엔드포인트에 접근하기만 하면 되며, 별도의 인증 절차가 없으므로 초기 접근 장벽이 없습니다. EPSS 값이 제공되지 않아 현재 관측된 실증 데이터는 부족하지만, KEV 목록에 등재되지 않은 점은 아직 광범위하게 악용된 사례가 적다는 의미이며, 이는 “잠재적 위험”을 배제하지는 않습니다. 따라서 공격 표면은 OPC UA 서비스 엔드포인트 + Variant 구조체 파라미터이며, 이 조합만 충족하면 원격 메모리 노출이 가능한 실전 공격 경로가 형성됩니다. 이런 조건을 만족하는 환경이라면, 복잡한 사전 준비 없이도 정밀히 조작된 패킷 하나만으로 정보 유출이 가능하다는 점을 인지하시기 바랍니다.
💥 영향 분석
- 성공 시 힙 메모리의 임의 영역을 외부에 노출시켜 민감한 인증 정보·암호키·프로세스 구조 등을 탈취할 수 있습니다.
- 직접적인 원격 코드 실행은 아니지만, 유출된 정보를 기반으로 추가 침투(예: 세션 하이재킹, 권한 상승) 위험이 존재합니다.
🔗 관련 취약점·체이닝
- 정보 누출 → 권한 상승 패턴: 본 오버플로우가 메모리 덤프를 제공하면, 동일 프로세스 내 다른 CVE(예: 포인터 조작, Use‑After‑Free)와 결합해 원격 코드 실행으로 이어질 수 있습니다.
- 추정: open62541 외에도 OPC UA 스택을 사용하는 임베디드 디바이스에서 유사한 Variant 처리 로직이 존재한다면 동일 체인이 적용될 가능성이 높습니다(구체적인 CVE 번호는 확인되지 않음).
🔎 탐지
- OPC UA 트래픽 로그에
arrayDimensions값이 비정상적으로 큰(예: 2^31 이상) 요청이 기록되는 경우. - 서버 측에서
UA_Variant_computeArraySize호출 직후 발생하는 경고/오버플로우 로그 또는 비정상적인 메모리 복사 크기 알림. - IDS/IPS 시그니처: “OPC UA Variant arrayDimensions > 1000” 등 과다한 배열 차원값을 탐지합니다.
🛡️ 완화 방안
- 즉시 조치: 외부 네트워크에서 OPC UA 엔드포인트 접근을 차단하거나, 애플리케이션 레벨에서
arrayDimensions입력 검증(상한선 설정)으로 트래픽을 제한합니다. - 근본 해결: open62541 최신 패치를 적용하고, 컴파일 시
-fstack-protector-strong, 정수 오버플로우 방지 옵션(-D_FORTIFY_SOURCE=2) 등을 활성화합니다. - 추가 방어: OPC UA 서버에 최소 권한 원칙을 적용하고, 민감 데이터는 메모리 내에서 암호화된 형태로 유지하도록 설계합니다.
본 보고서는 다중 소스 교차검증[교차검증]과 EPSS 미확보 상황[실측 악용예측]을 바탕으로 즉시 대응이 필요함을 규칙 기반 우선순위 결정[우선순위 결정]에 따라 작성되었습니다.
⚖️ 위험도 / 우선순위
- 조치: immediate (지금 즉시(24h 내))
- 근거: CVSS=7.5 · non-KEV · EPSS=미확보 · exploit=easy · in_scope=None