Kestrel
CVE-2026-63035DGX_E· 2026년 7월 31일 AM 01:15

[단독공격] 분석 — 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이 힙 할당/해제에 사용됨.
  • 단계별 흐름

    1. 정찰 – OPC UA 서버의 엔드포인트 목록과 지원 서비스(TransferSubscriptions)를 GetEndpointsFindServers 호출로 열람한다.
    2. 초기 접근 – 약한 인증(예: 기본 사용자/비밀번호) 또는 획득된 자격증명으로 세션을 수립한다(PR:L).
    3. 트리거 전송 – 조작된 TransferSubscriptions 요청을 다량 전송한다.
      • 해제 직후 재사용될 메모리를 의도적으로 오염시킬 수 있는 비정상적인 subscriptionId 값(예: 이미 해제된 ID)과 과다한 destinationEndpointUrl 길이를 포함한다.
    4. Use‑After‑Free 실행 – 서버는 해제된 구조체를 다시 참조하면서 메모리 오염을 발생시킨다. 이 시점에서 두 가지 결과가 가능하다.
      • DoS: 잘못된 포인터 dereference 로 프로세스 크래시 → 서비스 중단.
      • RCE(추정): 오염된 힙에 공격자가 제어 가능한 데이터(예: 가상 함수 테이블 주소)를 삽입하면, 이후 메모리 재사용 시 임의 코드 실행이 가능하다.
    5. 영향 확산 – 서비스가 중단되면 OPC UA 클라이언트와 연결된 SCADA/IIoT 시스템 전체에 장애가 전파된다; RCE 성공 시 공격자는 동일 네트워크 내 다른 프로세스·시스템을 장악할 수 있다.
  • 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 직후 바로 사용되는 힙 주소 탐지.

🛡️ 완화 방안

  1. 패치 적용 – open62541 프로젝트에서 제공하는 최신 릴리즈(TransferSubscriptions 서비스의 use‑after‑free 수정 포함)를 즉시 배포합니다.
  2. 불필요한 기능 비활성화TransferSubscriptions가 사용되지 않는 경우 서버 설정에서 해당 RPC를 차단하거나 비활성화합니다.
  3. 인증 강화 – 강력한 비밀번호 정책·다중 인증(MFA) 적용으로 PR:L 조건을 실제로 어려워지게 합니다.
  4. 메모리 보호 – 운영 체제 수준 ASLR, DEP, 스택/힙 쿠키 등을 활성화하고, 가능하면 OPC UA 서버를 컨테이너 또는 샌드박스에서 실행합니다.
  5. 모니터링·알림 – 위 탐지 지표를 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
※ 본 분석은 Kestrel AI 심층 분석 결과입니다. 참고용이며, 실제 대응 전에는 전문가 검토가 필요합니다.

댓글(0)

댓글 작성 은 로그인 후 이용할 수 있어요.

다른 사용자의 댓글은 자유롭게 읽을 수 있어요.

로그인하기

불러오는 중…