
Controllo esposizione SNMP CVE-2025-20352 (onesixtyone + parser)
Verifica rapida e sicura dell'esposizione black-box dei dispositivi Cisco IOS/IOS XE legata a CVE-2025-20352 (sottosistema SNMP):
sysDescr.0 con un piccolo script Python per segnalare i dispositivi Cisco IOS/IOS XE e contrassegnare le versioni come Fixed (se in whitelist) o Potentially Vulnerable (da verificare nel Cisco Software Checker).Questo progetto non sfrutta alcuna vulnerabilità. Identifica solo i dispositivi che rispondono alle community SNMP predefinite ed estrae le informazioni di versione da
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
Colonne di parsed.csv:
ip — IP del targetcommunity — community SNMP che ha funzionatovendor — Cisco / Non-Ciscoos_family — IOS, IOS XE o vuotoversion — stringa di versione estratta dal bannerstatus — Fixed, Potentially Vulnerable (verifica nel Cisco Software Checker) o Not Cisco / Not IOSraw — riga originale del bannerEsempio
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 legge da stdin (o da un file) righe come:
<ip> [<community>] <sysDescr...>
Estrae le versioni Cisco IOS/IOS XE e le etichetta.
Le versioni Fixed sono contenute in una piccola whitelist all'interno dello script:
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)
}
}
Perché una whitelist? L'advisory di Cisco rimanda gli amministratori al Cisco Software Checker per le build esatte affette/corrette per train/piattaforma. Lo script opta quindi per la prudenza: se una versione Cisco IOS/IOS XE non è nell'elenco delle fixed, viene marcata come “Potentially Vulnerable” e dovresti verificarla nel checker.
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
Suggerimenti:
Aggiungi -w 1 per ridurre il tempo di attesa per host (più veloce), oppure rimuovilo se noti timeout.
Per ottenere direttamente il banner di un singolo host:
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
sysDescr.0 direttamente con snmpget.FIXED_WHITELIST.Questo progetto è concesso in licenza sotto la MIT License. Vedi il file LICENSE per il testo completo.
Il progetto è distribuito sotto la licenza MIT. Il testo completo è nel file LICENSE.
Valutazione rapida e sicura dell'esposizione dei dispositivi Cisco IOS/IOS XE legata a CVE-2025-20352 (sottosistema SNMP):
sysDescr.0 con uno script Python: segnala Cisco IOS/IOS XE e imposta lo stato Fixed (se in whitelist) o Potentially Vulnerable (da verificare nel Cisco Software Checker).Il progetto non sfrutta la vulnerabilità. Si limita a individuare i dispositivi che rispondono alle community SNMP predefinite e a estrarre la versione da
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
Colonne di parsed.csv:
ip — indirizzo IPcommunity — community SNMP che ha funzionatovendor — Cisco / Non-Ciscoos_family — IOS, IOS XE o vuotoversion — stringa di versione dal bannerstatus — Fixed, Potentially Vulnerable (da verificare nel Cisco Software Checker) o Not Cisco / Not IOSraw — riga originale del bannerEsempio
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 legge righe del tipo:
<ip> [<community>] <sysDescr...>
Estrae le versioni Cisco IOS/IOS XE e imposta lo stato.
Le versioni Fixed sono elencate in una whitelist interna allo script:
FIXED_WHITELIST = {
"IOS": {
# Добавляйте точные версии IOS 15.x после проверки в Cisco Software Checker
# напр. "15.9(3)M12": True
},
"IOS XE": {
"17.15.4a": True
# Дополняйте по мере публикаций/подтверждений (напр. "17.15.4b": True)
}
}
Perché una whitelist? L'advisory di Cisco suggerisce di verificare le build specifiche tramite il Cisco Software Checker. Pertanto, se una versione IOS/IOS XE non è presente nell'elenco delle Fixed, lo script applica l'etichetta “Potentially Vulnerable”; poi verificala nel checker.
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
Suggerimenti:
Il parametro -w 1 accelera il polling; rimuovilo se noti timeout.
Per il banner diretto di un singolo host:
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
sysDescr.0 direttamente con snmpget.FIXED_WHITELIST con le versioni fixed confermate.Questo progetto è concesso in licenza sotto la MIT License.
Il progetto è distribuito sotto la licenza MIT.