NOW Briefing
Cisco SD-WAN 인증 우회 제로데이 취약점 (CVE-2026-20182)
■ 개요
2026년 5월 14일 Cisco는 Catalyst SD-WAN Controller(구 vSmart)와 SD-WAN Manager(구 vManage)의 인증 우회 취약점 CVE-2026-20182를 공개했습니다. 이 취약점은 Rapid7이 CVE-2026-20127을 연구하는 과정에서 발견했습니다. 컨트롤러의 핵심 데몬인 vdaemon이 DTLS 핸드셰이크 이후 피어 인증 단계에서 vHub 디바이스 타입에 대한 검증 로직을 수행하지 않아, 공격자가 관리자 권한으로 컨트롤 플레인에 진입할 수 있습니다.
PSIRT는 권고문에서 제한적인 실제 공격 악용을 확인했다고 밝혔습니다. CISA는 같은 날 KEV 목록에 해당 취약점을 등재하고, 긴급 지시(Emergency Directive 26-03)를 통해 연방 민간 기관(FCEB)에 2026년 5월 17일까지 패치를 지시했습니다. 컨트롤러가 침해되면 관리 대상 vEdge·cEdge 라우터의 정책, 라우팅, 터널 구성을 임의로 변조할 수 있어, 취약점 하나로 조직 전체의 WAN(Wide Area Network)이 위험에 노출됩니다.
■ 요약
| 항목 | 내용 |
|---|---|
| CVE ID | CVE-2026-20182(Cisco Catalyst SD-WAN Controller Authentication Bypass) |
| CVSS 점수 | CVSS v3.1 10.0 / Critical |
| 취약점 유형 | CWE-287: 부적절한 인증(DTLS 핸드셰이크 인증 우회를 통한 권한 탈취) |
| 영향/위험 |
- 사전 인증(pre-auth) 단계에서 관리자 권한 탈취 - 컨트롤 플레인 장악으로 SD-WAN 전체 구성 변조 - authorized_keys 주입을 통한 영구 백도어
|
| 취약 버전 |
- 온프레미스·Cloud-Pro·Cisco Managed Cloud·FedRAMP 배포 전체 - 영향 릴리스: 20.9, 20.10, 20.11, 20.12, 20.13, 20.14, 20.15, 20.16, 20.18, 26.1 |
| 패치 버전 |
- 릴리스 트레인별 상이: 20.9.9.1, 20.12.5.4/20.12.6.2/20.12.7.1(20.10·20.11·20.12 포함), 20.15.4.4/20.15.5.2, 20.18.2.2, 26.1.1.1 등 - Cisco Managed Cloud 20.15.506은 자동 적용 완료 - 정확한 픽스 빌드는 Cisco 권고문 참조 |
■ 기술 분석
vdaemon은 SD-WAN Controller가 vEdge·cEdge 디바이스와 제어 채널을 수립할 때 사용하는 데몬으로, UDP 12346 포트에서 DTLS 세션의 종단점 역할을 합니다. Rapid7 분석에 따르면, 취약점의 핵심은 vbond_proc_challenge_ack() 함수에서 vHub(device_type=2)에 대한 인증서 검증 코드 경로 자체가 존재하지 않는 것입니다. vSmart(type 3), vManage(type 5), vEdge(type 1)에는 각각 인증서 체인 검증, 시리얼 중복 확인, 하드웨어 인증서 검증 로직이 있지만, vHub(type 2)을 선언한 피어에 대해서는 어떠한 검증도 수행하지 않고 peer->authenticated = 1로 설정합니다.
공격 시퀀스는 다음과 같습니다.
1. 공격자가 임의의 자체 서명 인증서로 DTLS 핸드셰이크를 수행합니다(vdaemon은 인증서 검증 오류를 로깅하지만 연결 자체는 수락합니다).
2. 서버가 CHALLENGE(msg_type=8)를 전송합니다. 이 메시지는 256바이트 랜덤 값과 CA RSA 공개키 컴포넌트가 포함된 TLV 구조입니다.
3. 공격자가 CHALLENGE_ACK(msg_type=9)를 전송하면서 device_type=2(vHub)를 선언합니다.
4. vbond_proc_challenge_ack()가 디바이스 타입별 검증 분기를 순회하지만, type 2에 해당하는 조건문이 없어 모든 검증을 건너뜁니다.
5. 서버가 CHALLENGE_ACK_ACK(msg_type=10)를 반환하며, 이 시점에 peer->authenticated = 1이 설정됩니다.
6. 공격자가 Hello(msg_type=5)를 전송해 피어 상태를 UP으로 전환합니다.
⚠️ WARN
인증 우회에 성공한 공격자는 MSG_VMANAGE_TO_PEER(msg_type=14) 핸들러를 이용해 /home/vmanage-admin/.ssh/authorized_keys에 SSH 공개키를 주입합니다. 패치를 적용하거나 컨트롤러를 재기동해도 키 파일이 남아 있으면 접근권이 유지됩니다. 패치, 키 정리, 접근 통제를 반드시 함께 수행해야 합니다.
아래는 Rapid7이 공개한 디컴파일 코드를 기반으로 재구성한 취약점 핵심 분기입니다.
/* vbond_proc_challenge_ack() 내 디바이스 타입별 검증 분기 (Rapid7 분석 기반 재구성) */
// vSmart(type 3) 또는 vManage(type 5) → 인증서 체인 검증 + 시리얼 중복 확인
if (peer_type == 3 || peer_type == 5) {
// is_serial_duplicate() → vbond_peer_dup_check()
// vdaemon_dtls_verify_peer_cert() → 실패 시 REJECT
}
// vEdge(type 1) → 하드웨어 인증서 + 챌린지 서명 + Board ID 검증
if (peer_type == 1) {
// vdaemon_verify_peer_bidcert() → 실패 시 REJECT
}
// vHub(type 2) → 검증 코드 없음. 모든 조건문을 통과(fall-through).
peer->authenticated = 1; // 무조건 인증 성공 처리
return 0;
■ PoC
Rapid7은 2026년 5월 14일 전체 기술 분석을 공개했으며, 같은 날 Metasploit 모듈(cisco_sdwan_vhub_auth_bypass)도 함께 공개했습니다. Rapid7의 Metasploit 모듈은 공격자 RSA 키 쌍을 자동 생성한 뒤, 인증 우회와 SSH 키 주입까지 한 번에 수행합니다.
아래는 Rapid7 분석과 Metasploit 모듈 구조를 기반으로 프로토콜 흐름을 재구성한 PoC 코드입니다. 실제 익스플로잇의 핵심 로직(DTLS 핸드셰이크 구현, CHALLENGE 응답 생성, SSH 키 주입 페이로드)은 안전상 제거했습니다.
#!/usr/bin/env python3
import struct, sys
# ── 상수 정의 ──
MSG_HELLO, MSG_CHALLENGE, MSG_CHALLENGE_ACK = 5, 8, 9
MSG_CHALLENGE_ACK_ACK, MSG_VMANAGE_TO_PEER = 10, 14
DEV_VHUB = 2 # ← 검증이 누락된 디바이스 타입
TARGET_PORT = 12346 # vdaemon DTLS 포트
def build_challenge_ack(challenge_data: bytes) -> bytes:
"""device_type=2(vHub) 선언 → vbond_proc_challenge_ack() 검증 우회"""
header = struct.pack(">BBI",
MSG_CHALLENGE_ACK, # msg_type = 9
DEV_VHUB, # device_type = 2 ← 핵심: 검증 누락
0)
# [REDACTED] TLV 조립, 챌린지 응답 계산, 인증서 필드 ...(생략)
raise NotImplementedError("핵심 로직 제거됨")
def exploit(target: str, port: int):
# Step 1: DTLS 핸드셰이크 — 자체 서명 인증서 (vdaemon은 오류 로깅 후 수락)
# [REDACTED] ...(생략)
# Step 2: CHALLENGE(msg_type=8) 수신 — 256바이트 랜덤 + CA RSA 공개키 TLV
# [REDACTED] ...(생략)
# Step 3: CHALLENGE_ACK(msg_type=9) 전송 — device_type=2(vHub) → 검증 우회
# [REDACTED] ...(생략)
# Step 4: CHALLENGE_ACK_ACK(msg_type=10) 수신 — peer->authenticated = 1
# Step 5: Hello(msg_type=5) 전송 — 피어 상태 UP 전환
# Step 6: MSG_VMANAGE_TO_PEER(msg_type=14) — authorized_keys에 SSH 키 주입
# Step 7: NETCONF(TCP 830) vmanage-admin 접속
# [REDACTED] Step 4~7 구현 ...(생략)
pass
if __name__ == "__main__":
print("[!] 테스트 입니다.")
sys.exit(0)
⚠️ WARN
허가 없는 시스템에 대한 테스트는 형사 처벌 대상입니다. 검증이 필요하면 반드시 본인 소유의 격리 환경에서 Rapid7 Metasploit 모듈(cisco_sdwan_vhub_auth_bypass)을 사용하십시오.
■ 탐지 및 점검
• /var/log/auth.log에서 Accepted publickey for vmanage-admin 항목을 확인하고, 접속 IP가 인가된 시스템 IP인지 대조합니다.
• 컨트롤러 CLI에서 show control connections를 실행해 인가되지 않은 site-id·system-ip의 연결 이력이나 예상과 다른 vmanage 피어 타입을 점검합니다.
• vmanage-admin과 admin 계정의 ~/.ssh/authorized_keys 파일 해시와 수정 시각을 기준값과 비교합니다.
• 외부 네트워크에서 UDP 12346 포트로 향하는 신규 소스 IP를 방화벽·NetFlow 로그에서 확인합니다.
• Cisco Talos가 공개한 UAT-8616 IoC(GitHub 리포지토리에 게시)와 컨트롤러 이그레스 트래픽을 대조합니다.
• 침해가 의심되면 request admin-tech 명령으로 아티팩트를 수집한 뒤 Cisco TAC에 Severity 3 케이스(제목에 CVE-2026-20182 포함)를 열어 검토를 요청합니다.
■ 대응 방안
💡 즉시 조치
Cisco 권고문에 명시된 픽스 빌드로 즉시 업그레이드해야 합니다. Cisco는 워크어라운드가 없다고 명시했으므로, 패치가 유일한 해결책입니다.
• 패치 전후 모두 SD-WAN Controller·Manager의 UDP 12346 포트를 외부 망에서 차단하고, 관리 대역에서만 접근하도록 ACL을 적용합니다.
• vmanage-admin과 admin 계정의 authorized_keys, 그리고 신규 로컬 계정을 전수 점검해 인가되지 않은 항목을 제거합니다.
• 침해 정황이 있는 컨트롤러는 업그레이드 전에 반드시 request admin-tech로 아티팩트를 보존합니다. 급하게 업그레이드하면 포렌식 데이터가 덮어씌워질 수 있습니다. 이후 검증된 백업 구성으로 재프로비저닝하고, 관리 자격증명과 인증서를 재발급합니다.
• UAT-8616은 소프트웨어 버전 다운그레이드를 통해 CVE-2022-20775를 악용하여 root 권한으로 상승한 뒤, 원래 버전을 복원해 흔적을 은폐하는 기법도 사용한 것으로 확인됩니다. 패치 후에도 버전 변경 이력을 점검해야 합니다.
[참고 자료]
Cisco Security Advisory cisco-sa-sdwan-rpa2-v69WY2SW
Cisco, Remediate Catalyst SD-WAN Security Advisory - May 2026
Rapid7, CVE-2026-20182 기술 분석 및 Metasploit 모듈
Cisco Talos, Ongoing exploitation of Cisco Catalyst SD-WAN vulnerabilities



