DEEP DIVE REPORT

CVE-2026-60007 대응 가이드: Eclipse Milo Basic128Rsa15 패딩 오라클 점검

SecurityDesk
2026.08.05 조회 2

위협 요약

2026년 8월 4일, NVD에 CVE-2026-60007이 등록되었다. Eclipse Milo 0.6.0~1.1.4의 username-token 처리 과정에서 RSA PKCS#1 v1.5 패딩 오라클 취약점이 발견되었다. 온-패스(on-path) 공격자가 Basic128Rsa15 암호화된 사용자의 username-token을 포착하면, 반복적인 ActivateSession 요청을 통해 패딩 오라클을 활성화하여 피해자의 비밀번호를 복원하고 복원된 자격증명으로 OPC UA 서버에 인증할 수 있다. CVSS 4.0 점수는 9.1(CRITICAL)로 평가되며, 공격에 온-패스 위치가 필요해 단순 스니핑만으로 악용은 불가능하다. 현재까지 공개 PoC나 실제 악용 보고는 없으며, CISA KEV에도 아직 등재되지 않았다. 수정 커밋(db59fae)이 확인되었으나 공식 릴리스 버전은 아직 발표되지 않았다.

취약점 개요

항목 내용
CVE ID CVE-2026-60007
제품 Eclipse Milo OPC UA SDK
취약 버전 0.6.0 ~ 1.1.4
CVSS 4.0 9.1 (CRITICAL)
CWE CWE-204 (Observable Response Discrepancy)
CNA Eclipse Foundation
등록일 2026-08-04

Eclipse Milo는 자바 환경에서 OPC UA(Open Platform Communications Unified Architecture) 프로토콜을 구현하는 오픈소스 SDK다. 산업 자동화, IIoT(Industrial Internet of Things) 환경에서 장치 간 통신을 위한 핵심 라이브러리로 널리 사용된다.

본 취약점은 Milo가 username-token 방식의 인증을 처리하는 과정에서 RSA PKCS#1 v1.5 디코딩 오류와 기타 인증 실패에 서로 다른 상태 코드를 반환하는 것에서 발생한다. 공격자는 이 오류 응답의 차이를 관찰해 패딩이 올바른지 여부를 판단할 수 있으며, 이를 통해 Basic128Rsa15 암호화 정책으로 보호된 username-token을 해독할 수 있다.

CVSS 4.0 벡터

CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
메트릭 의미
Attack Vector Network (원격) 네트워크를 통해 공격 가능
Attack Complexity Low (저) 복잡한 사전 조건 불필요
Attack Requirements Present (온-패스 필요) 네트워크 트래픽 모니터링 가능해야 함
Privileges Required None (인증 불필요) 사전 권한 불필요
User Interaction None (자동화 가능) 피해자 상호작용 불필요
Confidentiality Impact High (비밀번호 복원) 자격증명 해독
Integrity Impact High (인증 탈환) 위조 자격증명으로 인증
Availability Impact None 서비스 중단 없음

AT:P(Attack Requirements: Present)는 공격자가 네트워크 트래픽을 중간에서 관찰할 수 있는 위치(온-패스)에 있어야 함을 의미한다. 외부에서 단순 스니핑만으로 악용은 불가능하다.

기술적 분석

취약점 원리: RSA PKCS#1 v1.5 패딩 오라클

RSA PKCS#1 v1.5 암호화는 메시지 암호화 전에 특정 형식의 패딩(padding)을 추가하는 방식이다. 디코딩 시 패딩 형식이 올바르지 않으면 오류가 발생하는데, 서버가 패딩 오류와 기타 유형의 인증 실패를 서로 다른 응답으로 반환하면, 공격자는 이 차이로 패딩이 맞는지 틀린지를 판단할 수 있다. 이를 패딩 오라클(Padding Oracle)이라고 한다.

Blinder가 1998년 제안한 패딩 오라클 공격은 수천~수만 번의 반복 요청으로 평문을 복원할 수 있는 것으로 유명하다. 각 비트를 복원하는 데 평균 256번의 요청이 필요하며, 전체 평문을 복원하려면 평문 길이에 비례하는 시간이 걸린다.

공격 시나리오

  1. 트래픽 포착: 공격자가 온-패스 위치(네트워크 세그먼트 내 또는 프록시)에서 피해자의 Basic128Rsa15 암호화된 UsernameIdentityToken을 포착
  2. 변조 및 전송: 포착한 토큰을 반복적으로 변조하여 ActivateSession 요청을 서버에 전송
  3. 오류 응답 관찰: 서버가 반환하는 오류 응답의 차이를 관찰해 패딩 상태 판단
  4. 패딩 오류: 특정 상태 코드 (예: Bad_DecodingError)
  5. 디코딩 성공 but 잘못된 비밀번호: 다른 상태 코드 (예: Bad_IdentityTokenInvalid)
  6. 점진적 복원: 패딩 오라클 공격 알고리즘으로 평문(비밀번호)을 비트 단위 복원
  7. 자격증명 위조: 복원된 비밀번호로 OPC UA 서버에 인증

공격에 필요한 조건

  • 온-패스 위치: 공격자가 OPC UA 통신 트래픽을 중간에서 관찰하고 변조할 수 있어야 함
  • Basic128Rsa15 활성화: 서버가 Basic128Rsa15 암호화 정책을 사용 중이어야 함
  • Username-token 인증: username-token 방식의 인증이 활성화되어 있어야 함

수정 커밋 분석

Eclipse Milo 저장소의 수정 커밋(db59fae993a3a1bc66fffc8a2796d444b40285fb)에서 다음과 같은 변경이 확인되었다.

수정 제목: "Close username-token padding oracle (#1804)"

주요 변경 내용:
- 모든 토큰 파싱 실패 시 동일한 상태 코드(Bad_IdentityTokenInvalid) 반환 — 패딩 오류와 기타 인증 실패의 응답 차이 제거
- 원인 예외(exception.getCause()) 제거 — 내부 구조 정보를 누출하지 않도록 차단
- RSA15와 OAEP 모두 동일한 방식으로 처리 — 암호화 방식에 따른 응답 차이 제거

핵심은 모든 실패 경로를 동일한 응답으로 합쳤다는 점이다. 공격자가 오류 응답의 차이로 패딩 상태를 판단할 수 없게 되어 패딩 오라클 공격이 불가능해졌다.

관련 암호화 정책

암호화 정책 사용 알고리즘 패딩 오라클 노출 여부
Basic128Rsa15 AES-128-CBC + RSA PKCS#1 v1.5 ⚠️ 취약
Basic256Sha256 AES-256-CBC + RSA PKCS#1 v1.5 ⚠️ 취약 (동일한 RSA 디코딩 로직 사용)
Aes128_Sha256_RsaOaep AES-128-CBC + RSA OAEP ✅ 안전 (OAEP는 패딩 오라클에 내성)

영향 범위

직접 영향 대상

  • Eclipse Milo 0.6.0 ~ 1.1.4를 사용하는 OPC UA 서버/클라이언트
  • Basic128Rsa15 암호화 정책이 활성화된 환경
  • Username-token 인증 방식을 사용하는 환경

산업 환경별 영향

OPC UA는 산업 자동화, IIoT 환경에서 가장 널리 사용되는 통신 프로토콜 중 하나다. 따라서 본 취약점은 다음과 같은 환경에 직접적인 영향을 미친다.

  • 제조 공장: 생산 라인 제어 시스템(SCADA, PLC) 간 통신
  • 에너지 설비: 발전소, 변전소 등 critical 인프라 모니터링 시스템
  • 스마트 팩토리: MES(Manufacturing Execution System), ERP 연동
  • 수자원/폐기물 처리: 자동화 제어 시스템
  • 교통/물류: 자동화 물류 시스템, 철도 제어 시스템

공격 제한 조건

온-패스(On-path) 위치가 필요하므로, 다음과 같은 환경에서는 실질적 위험이 낮다.

  • OPC UA 통신이 외부 네트워크와 격리된 내부망에서 운영되는 환경
  • 네트워크 세그멘테이션이 잘 구성된 환경
  • Basic128Rsa15를 사용하지 않고 Aes128_Sha256_RsaOaep를 사용하는 환경

공개 정보

  • 공개 PoC: 없음
  • 실제 악용 보고: 없음
  • CISA KEV 등재: 없음
  • EPSS 점수: 추가 확인 필요

대응 방안

1. Eclipse Milo 업그레이드 (즉시 대응)

취약한 버전(0.6.0 ~ 1.1.4)을 사용하는 모든 시스템에서 수정된 버전으로 업그레이드한다. 수정 커밋(db59fae)이 이미 저장소에 반영되었으나, 공식 릴리스 버전은 아직 발표되지 않았다. 공식 릴리스가 발표되면 즉시 적용하고, 긴급한 경우 수정 커밋을 직접 머지해 빌드할 수 있다.

<!-- Maven 의존성 업데이트 (공식 릴리스 발표 시) -->
<dependency>
    <groupId>org.eclipse.milo</groupId>
    <artifactId>sdk-server</artifactId>
    <version>1.1.5</version>
</dependency>

2. Basic128Rsa15 비활성화 (단기 대응)

업그레이드가 즉시 불가능한 경우, Basic128Rsa15 암호화 정책을 비활성화하고 더 안전한 암호화 정책으로 전환한다.

  • Basic256Sha256으로 전환 (단, 동일한 RSA PKCS#1 v1.5 로직을 사용하므로 근본적 해결이 아님)
  • Aes128_Sha256_RsaOaep로 전환 (OAEP 사용으로 패딩 오라클에 내성)

3. 인증 방식 변경 (보조 대응)

Username-token 인증 대신 더 안전한 인증 방식을 사용한다.

  • X.509 기반 Certificate 인증 사용
  • OAuth2/JWT 기반 토큰 인증 적용
  • 다중 인증(MFA) 도입

4. 모니터링 및 탐지 (지속 대응)

반복적인 ActivateSession 실패 패턴을 모니터링해 패딩 오라클 공격을 탐지한다.

  • 동일 IP에서短时间內 다수 ActivateSession 요청 로그 수집
  • 실패 상태 코드별 분포 분석 (Bad_IdentityTokenInvalid vs Bad_DecodingError 비율)
  • 이상 패턴 감지 시 자동 차단 또는 경고 알림

5. 네트워크 세그멘테이션 (장기 대응)

OPC UA 통신망이 외부 네트워크와 물리적으로 격리되도록 구성한다. 온-패스 공격의 전제 조건인 네트워크 트래픽 접근을 차단하는 것이 가장 근본적인 방어다.

참고문헌

  1. NVD (National Vulnerability Database)
    https://nvd.nist.gov/vuln/detail/CVE-2026-60007

  2. CVE.org
    https://www.cve.org/CVERecord?id=CVE-2026-60007

  3. Eclipse Milo 수정 커밋
    https://github.com/eclipse-milo/milo/commit/db59fae993a3a1bc66fffc8a2796d444b40285fb

  4. Eclipse 보안 추적 (CVE 할당)
    https://gitlab.eclipse.org/security/cve-assignment/-/work_items/183

  5. Eclipse 보안 리포트
    https://gitlab.eclipse.org/security/vulnerability-reports/-/work_items/598


본 콘텐츠는 AI 기술로 작성된 분석 리포트를 포함하고 있습니다. 내용 중 사실과 다르거나 보완이 필요한 정보를 발견하셨으면 댓글을 통해 의견을 부탁드립니다. 여러분의 피드백은 더 정확한 보안 정보 공유에 큰 도움이 됩니다.

댓글 (0)

댓글을 작성하려면 로그인이 필요합니다.

로그인

아직 댓글이 없습니다.

첫 번째 댓글을 작성해보세요!

IT 도구 서랍

→ Unix: 2025-01-15T09:30:00
→ 날짜: 1736934600

→ ASCII: ABC
→ 문자: 65 66 67

ASCII 코드표 — 클릭하면 입력란에 추가

DecHex약어설명
DecHex문자
DecHex문자

→ 유니코드: 홍길동
→ 문자: \ud64d\uae38\ub3d9