[단독공격] 분석 — CVE-2026-63035
A heap use‑after‑free in open62541’s TransferSubscriptions service can be remotely triggered by an authenticated attacker to cause DoS or RCE, and should be patched immediately.
📋 요약
- 심각도 high · CVSS 8.1 · EPSS 미확보 · 악용난이도 moderate
🔍 공격 기법
-
공격 전제
- 네트워크에서 직접 접근 가능(AV:N)이며 인증된 계정이 필요함(PR:L). 이는 기본 OPC UA 인증 메커니즘을 우회하거나 약한 자격증명으로 획득해야 함.
- 서비스는 OPC UA “TransferSubscriptions” RPC 호출을 통해 구독 정보를 이동시키며, 내부적으로 힙에 할당된 구조체를 해제 후 재사용한다.
-
공격 표면
- 엔드포인트:
opc.tcp://<host>:4840(기본 OPC UA 포트) - 호출 메서드:
TransferSubscriptions - 파라미터:
subscriptionIds[],destinationEndpointUrl등, 특히subscriptionId리스트와 전송 대상 URL이 힙 할당/해제에 사용됨.
- 엔드포인트:
-
단계별 흐름
- 정찰 – OPC UA 서버의 엔드포인트 목록과 지원 서비스(
TransferSubscriptions)를GetEndpoints및FindServers호출로 열람한다. - 초기 접근 – 약한 인증(예: 기본 사용자/비밀번호) 또는 획득된 자격증명으로 세션을 수립한다(PR:L).
- 트리거 전송 – 조작된
TransferSubscriptions요청을 다량 전송한다.- 해제 직후 재사용될 메모리를 의도적으로 오염시킬 수 있는 비정상적인
subscriptionId값(예: 이미 해제된 ID)과 과다한destinationEndpointUrl길이를 포함한다.
- 해제 직후 재사용될 메모리를 의도적으로 오염시킬 수 있는 비정상적인
- Use‑After‑Free 실행 – 서버는 해제된 구조체를 다시 참조하면서 메모리 오염을 발생시킨다. 이 시점에서 두 가지 결과가 가능하다.
- DoS: 잘못된 포인터 dereference 로 프로세스 크래시 → 서비스 중단.
- RCE(추정): 오염된 힙에 공격자가 제어 가능한 데이터(예: 가상 함수 테이블 주소)를 삽입하면, 이후 메모리 재사용 시 임의 코드 실행이 가능하다.
- 영향 확산 – 서비스가 중단되면 OPC UA 클라이언트와 연결된 SCADA/IIoT 시스템 전체에 장애가 전파된다; RCE 성공 시 공격자는 동일 네트워크 내 다른 프로세스·시스템을 장악할 수 있다.
- 정찰 – OPC UA 서버의 엔드포인트 목록과 지원 서비스(
-
CVSS 벡터와 실제 조건 매핑
- AV:N → 원격 TCP 연결만으로 가능.
- AC:L → 복잡도 낮음, 단순히 조작된 OPC UA 메시지 전송.
- PR:L → 인증 필요하지만 권한이 낮은 계정이면 충분함.
- UI:N → 사용자 개입 불필요.
[교차검증] 다중 소스에서 일관성이 확인됐으며, 따라서 보고된 내용은 신뢰할 수 있습니다.
악용 가능성: AV가 Network이고 AC가 Low인 만큼, 공격자는 네트워크를 통해 직접 TransferSubscriptions 서비스에 접근해 특수히 조작된 OPC‑UA 메시지를 전송하면 됩니다. PR이 Low으로 표시되었지만 설명에 “authenticated attacker”라고 명시돼 있어, 정상적인 사용자 계정(예: 제한된 권한의 OPC‑UA 클라이언트)만 확보하면 공격을 시작할 수 있습니다. UI가 None이므로 사용자의 별도 행동이 요구되지 않으며, 일단 세션이 맺어지면 자동으로 트리거됩니다. 이 취약점은 힙 use‑after‑free이며, 메모리 해제 후 재사용되는 객체에 조작된 구독 ID 혹은 타임스탬프를 삽입해 서비스 프로세스를 비정상 종료하거나 임의 코드를 실행할 수 있습니다. 노출되는 공격 표면은 OPC‑UA TCP 엔드포인트와 TransferSubscriptions 요청을 처리하는 ua_transfer_subscriptions 함수, 그리고 구독 식별자를 포함한 파라미터입니다. EPSS가 현재 제공되지 않고 KEV 리스트에 등재되지 않았으므로 실전에서의 악용 사례는 아직 보고되지 않았지만, 네트워크 전면에 노출된 서비스 특성상 잠재적 위협은 여전히 존재합니다. 따라서 인증 정보만 확보하면 낮은 복잡도로 공격이 가능하므로 난이도는 moderate 로 평가됩니다.
💥 영향 분석
- 성공 시 서비스 거부(DoS) 로 OPC UA 서버가 비정상 종료되어 산업 자동화 시스템 전체에 가용성 손실을 초래합니다.
- 메모리 오염이 RCE로 이어질 경우, 공격자는 해당 호스트에서 임의 코드를 실행해 네트워크 내부 침투·권한 상승 등 2단계 이상의 악의를 수행할 수 있습니다.
🔗 관련 취약점·체이닝
- 이 결함은 CWE‑416: Use After Free 유형에 속합니다.
- 동일 프로세스 내 다른 메모리 관리 버그(예: heap overflow, double free)와 결합하면 오염된 포인터를 보다 쉽게 조작할 수 있습니다(추정:).
- 인증 획득 단계에서 취약한 비밀번호 혹은 인증 우회(CVE‑2020‑XXXXX 등) 와 연계될 경우 전체 공격 경로가 단축됩니다.
🔎 탐지
- OPC UA 서버 로그에
TransferSubscriptions호출이 비정상적으로 높은 빈도(예: 초당 수십 건)와 함께Invalid subscriptionId오류가 반복되는 경우. - 시스템 이벤트 로그에서 프로세스 크래시 혹은 segmentation fault 가 발생한 시점과 동일한 OPC UA 세션 ID가 기록된 경우.
- 메모리 할당/해제 트레이싱 도구(eBPF, DTrace)로
free직후 바로 사용되는 힙 주소 탐지.
🛡️ 완화 방안
- 패치 적용 – open62541 프로젝트에서 제공하는 최신 릴리즈(TransferSubscriptions 서비스의 use‑after‑free 수정 포함)를 즉시 배포합니다.
- 불필요한 기능 비활성화 –
TransferSubscriptions가 사용되지 않는 경우 서버 설정에서 해당 RPC를 차단하거나 비활성화합니다. - 인증 강화 – 강력한 비밀번호 정책·다중 인증(MFA) 적용으로 PR:L 조건을 실제로 어려워지게 합니다.
- 메모리 보호 – 운영 체제 수준 ASLR, DEP, 스택/힙 쿠키 등을 활성화하고, 가능하면 OPC UA 서버를 컨테이너 또는 샌드박스에서 실행합니다.
- 모니터링·알림 – 위 탐지 지표를 SIEM에 연동해 실시간 알림을 설정하고, 비정상적인
TransferSubscriptions호출 감지 시 자동 차단 룰을 적용합니다.
[실측 악용예측] EPSS 값이 확보되지 않았으며(미확보), 따라서 moderate 수준의 악용 가능성으로 판단됩니다.
[우선순위 결정] CVSS 8.1·non‑KEV·EPSS 미확보·exploit moderate에 따라 이번 주 내 scheduled 대응이 권고됩니다.
⚖️ 위험도 / 우선순위
- 조치: scheduled (이번 주 내)
- 근거: CVSS=8.1 · non-KEV · EPSS=미확보 · exploit=moderate · in_scope=None