
CVE-2025-20352 SNMP Exposure Check (onesixtyone + parser)
CVE-2025-20352(SNMP サブシステム)に関連する Cisco IOS/IOS XE デバイス向けの、高速かつ安全なブラックボックスの露出チェック:
sysDescr.0 バナーを解析し、Cisco IOS/IOS XE を検出して、バージョンを Fixed(ホワイトリストに登録されている場合)または Potentially Vulnerable(Cisco Software Checker で確認)としてマークします。このプロジェクトは何も悪用しません。デフォルトの SNMP コミュニティに応答するデバイスを識別し、
sysDescr.0からバージョン情報を抽出するだけです。
# 0) Clone this repo
git clone https://github.com/scadastrangelove/CVE-2025-20352 cve-2025-20352-scan
cd cve-2025-20352-scan
# 1) Install dependencies (Ubuntu/Debian)
sudo add-apt-repository -y universe
sudo apt update
sudo apt install -y onesixtyone snmp python3
# 2) Create a small community list with defaults
printf "public\nprivate\n" > communities.txt
# 3) Scan your subnets (EDIT THESE!)
onesixtyone -c communities.txt 192.168.2.0/24 10.1.2.0/24 | tee snmp_raw.txt
# 4) Parse the results to CSV
python3 ios_cve20352_parser.py < snmp_raw.txt > parsed.csv
# 5) View nicely
column -s, -t < parsed.csv | less -S
parsed.csv の列:
ip — ターゲット IPcommunity — 動作した SNMP コミュニティvendor — Cisco / Non-Ciscoos_family — IOS、IOS XE、または空version — バナーから抽出したバージョン文字列status — Fixed、Potentially Vulnerable(Cisco Software Checker で確認)、または Not Cisco / Not IOSraw — 元のバナー行例
ip,community,vendor,os_family,version,status,raw
1.1.2.4,public,Cisco,IOS,15.5(3)S2,Potentially Vulnerable — IOS 15.5(3)S2; verify in Cisco Software Checker,"Cisco IOS Software, ASR1000 ... Version 15.5(3)S2 ..."
1.1.2.2,public,Non-Cisco,,,Not Cisco / Not IOS,RouterOS RB750r2
ios_cve20352_parser.py は標準入力(またはファイル)から次のような行を読み取ります:
<ip> [<community>] <sysDescr...>
Cisco IOS/IOS XE のバージョンを抽出してラベル付けします。
修正済みバージョンは、スクリプト内の小さなホワイトリストに格納されています:
FIXED_WHITELIST = {
"IOS": {
# Add exact IOS 15.x fixed versions you confirm via Cisco Software Checker
# e.g. "15.9(3)M12": True
},
"IOS XE": {
"17.15.4a": True
# Add more as Cisco publishes/you confirm (e.g. "17.15.4b": True)
}
}
なぜホワイトリストなのか? Cisco のアドバイザリでは、トレイン/プラットフォームごとの正確な影響を受けるビルドと修正済みビルドについて、管理者は Cisco Software Checker を参照するよう指示されています。そのため、このスクリプトは安全側に倒しています。Cisco IOS/IOS XE のバージョンが修正済みリストにない場合は、「Potentially Vulnerable」 とマークされ、チェッカーで確認する必要があります。
sudo add-apt-repository -y universe
sudo apt update
sudo apt install -y onesixtyone snmp python3
# onesixtyone may be in EPEL; otherwise build from source
sudo dnf install -y net-snmp-utils python3 git make gcc
git clone https://github.com/trailofbits/onesixtyone.git
cd onesixtyone && make && sudo make install
printf "public\nprivate\n" > communities.txt
onesixtyone -c communities.txt 192.168.2.0/24 10.1.2.0/24 | tee snmp_raw.txt
ヒント:
-w 1 を追加するとホストあたりの待機時間が短くなります(高速化)。タイムアウトが発生する場合は削除してください。
ホスト単体のバナーを直接取得する場合:
snmpget -v2c -c public -t 1 -r 0 <IP> 1.3.6.1.2.1.1.1.0
python3 ios_cve20352_parser.py < snmp_raw.txt > parsed.csv
column -s, -t < parsed.csv | less -S
snmpget で sysDescr.0 を直接照会してください。FIXED_WHITELIST に追加してください。このプロジェクトは MIT ライセンス の下でライセンスされています。全文は LICENSE ファイルを参照してください。
このプロジェクトは MIT ライセンス の下で配布されています。全文は LICENSE ファイルにあります。
CVE-2025-20352(SNMP サブシステム)に関連する Cisco IOS/IOS XE デバイスの、高速かつ安全な露出評価:
sysDescr.0 バナーを解析します。Cisco IOS/IOS XE を検出し、Fixed(ホワイトリストにある場合)または Potentially Vulnerable(Cisco Software Checker で確認)のステータスを設定します。このプロジェクトは脆弱性を一切悪用しません。デフォルトの SNMP コミュニティに応答するデバイスを特定し、
sysDescr.0からバージョンを抽出するだけです。
# 0) Клонирование
git clone https://github.com/scadastrangelove/CVE-2025-20352 cve-2025-20352-scan
cd cve-2025-20352-scan
# 1) Зависимости (Ubuntu/Debian)
sudo add-apt-repository -y universe
sudo apt update
sudo apt install -y onesixtyone snmp python3
# 2) Файл сообществ
printf "public\nprivate\n" > communities.txt
# 3) Сканирование подсетей (ИЗМЕНИТЕ ПОД СЕБЯ!)
onesixtyone -c communities.txt 192.168.2.0/24 10.1.2.0/24 | tee snmp_raw.txt
# 4) Парсинг в CSV
python3 ios_cve20352_parser.py < snmp_raw.txt > parsed.csv
# 5) Просмотр
column -s, -t < parsed.csv | less -S
parsed.csv の列:
ip — IP アドレスcommunity — 動作した SNMP コミュニティvendor — Cisco / Non-Ciscoos_family — IOS、IOS XE、または空version — バナーからのバージョン文字列status — Fixed、Potentially Vulnerable(Cisco Software Checker で確認)、または Not Cisco / Not IOSraw — 元のバナー行例
ip,community,vendor,os_family,version,status,raw
1.1.2.4,public,Cisco,IOS,15.5(3)S2,Potentially Vulnerable — IOS 15.5(3)S2; verify in Cisco Software Checker,"Cisco IOS Software, ASR1000 ... Version 15.5(3)S2 ..."
1.1.2.2,public,Non-Cisco,,,Not Cisco / Not IOS,RouterOS RB750r2
ios_cve20352_parser.py は次の形式の行を読み取ります:
<ip> [<community>] <sysDescr...>
Cisco IOS/IOS XE のバージョンを抽出してステータスを設定します。
修正済みバージョンは、スクリプト内部のホワイトリストに列挙されています:
FIXED_WHITELIST = {
"IOS": {
# Добавляйте точные версии IOS 15.x после проверки в Cisco Software Checker
# напр. "15.9(3)M12": True
},
"IOS XE": {
"17.15.4a": True
# Дополняйте по мере публикаций/подтверждений (напр. "17.15.4b": True)
}
}
なぜホワイトリストなのか? Cisco のアドバイザリでは、Cisco Software Checker で特定のビルドを確認することが推奨されています。そのため、IOS/IOS XE のバージョンが修正済みリストに見つからない場合、スクリプトは 「Potentially Vulnerable」 のラベルを付けます。その後、チェッカーで確認してください。
sudo add-apt-repository -y universe
sudo apt update
sudo apt install -y onesixtyone snmp python3
# onesixtyone может быть в EPEL; иначе соберите из исходников
sudo dnf install -y net-snmp-utils python3 git make gcc
git clone https://github.com/trailofbits/onesixtyone.git
cd onesixtyone && make && sudo make install
printf "public\nprivate\n" > communities.txt
onesixtyone -c communities.txt 192.168.2.0/24 10.1.2.0/24 | tee snmp_raw.txt
ヒント:
-w 1 パラメータはポーリングを高速化します。タイムアウトが発生する場合は削除してください。
ノードのバナーを直接取得する場合:
snmpget -v2c -c public -t 1 -r 0 <IP> 1.3.6.1.2.1.1.1.0
python3 ios_cve20352_parser.py < snmp_raw.txt > parsed.csv
column -s, -t < parsed.csv | less -S
snmpget で sysDescr.0 を直接照会してください。FIXED_WHITELIST に追加してください。このプロジェクトは MIT ライセンス の下でライセンスされています。
このプロジェクトは MIT ライセンス の下で配布されています。