
CVE-2025-20352 SNMP Exposure Check (onesixtyone + parser)
Vérification d'exposition black-box rapide et non intrusive pour les équipements Cisco IOS/IOS XE liés à CVE-2025-20352 (sous-système SNMP) :
sysDescr.0 à l'aide d'un petit script Python pour repérer les équipements Cisco IOS/IOS XE et marquer les versions comme Fixed (si elles figurent sur la liste blanche) ou Potentially Vulnerable (à vérifier dans Cisco Software Checker).Ce projet n'exploite rien. Il identifie uniquement les équipements qui répondent aux communautés SNMP par défaut et extrait les informations de version de
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
Colonnes de parsed.csv :
ip — adresse IP ciblecommunity — communauté SNMP qui a fonctionnévendor — Cisco / Non-Ciscoos_family — IOS, IOS XE, ou videversion — chaîne de version extraite de la bannièrestatus — Fixed, Potentially Vulnerable (à vérifier dans Cisco Software Checker) ou Not Cisco / Not IOSraw — ligne de bannière d'origineExemple
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 lit depuis l'entrée standard (ou un fichier) des lignes de la forme :
<ip> [<community>] <sysDescr...>
Il extrait les versions Cisco IOS/IOS XE et leur attribue un statut.
Les versions corrigées (Fixed) figurent dans une petite liste blanche intégrée au 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)
}
}
Pourquoi une liste blanche ? L'avis de sécurité de Cisco renvoie les administrateurs au Cisco Software Checker pour déterminer les builds exactes affectées/corrigées par train/plateforme. Le script fait donc preuve de prudence : si une version Cisco IOS/IOS XE ne figure pas dans la liste des versions corrigées, elle est marquée “Potentially Vulnerable” et vous devez vérifier la version dans Cisco Software 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
Conseils :
Ajoutez -w 1 pour réduire le temps d'attente par hôte (plus rapide), ou retirez-le si vous constatez des timeouts.
Pour obtenir la bannière directe d'un seul hôte :
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 avec snmpget.FIXED_WHITELIST.Ce projet est sous licence MIT. Consultez le fichier LICENSE pour le texte intégral.
Ce projet est distribué sous licence MIT. Le texte intégral figure dans le fichier LICENSE.
Évaluation d'exposition rapide et non intrusive des équipements Cisco IOS/IOS XE, liée à CVE-2025-20352 (sous-système SNMP) :
sysDescr.0 avec un script Python : nous repérons les équipements Cisco IOS/IOS XE et attribuons le statut Fixed (s'ils figurent sur la liste blanche) ou Potentially Vulnerable (à vérifier dans Cisco Software Checker).Le projet n'exploite pas la vulnérabilité. Il se contente d'identifier les équipements qui répondent aux communautés SNMP par défaut et d'extraire la version de
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
Colonnes de parsed.csv :
ip — adresse IPcommunity — communauté SNMP ayant réponduvendor — Cisco / Non-Ciscoos_family — IOS, IOS XE, ou videversion — chaîne de version extraite de la bannièrestatus — Fixed, Potentially Vulnerable (à vérifier dans Cisco Software Checker) ou Not Cisco / Not IOSraw — ligne de bannière d'origineExemple
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 lit des lignes de la forme :
<ip> [<community>] <sysDescr...>
Il extrait les versions Cisco IOS/IOS XE et attribue un statut.
Les versions corrigées (Fixed) figurent dans une liste blanche interne :
FIXED_WHITELIST = {
"IOS": {
# Добавляйте точные версии IOS 15.x после проверки в Cisco Software Checker
# напр. "15.9(3)M12": True
},
"IOS XE": {
"17.15.4a": True
# Дополняйте по мере публикаций/подтверждений (напр. "17.15.4b": True)
}
}
Pourquoi une liste blanche ? L'avis de Cisco suggère de vérifier les builds exactes via le Cisco Software Checker. Par conséquent, si une version IOS/IOS XE ne figure pas dans la liste Fixed, le script la marque “Potentially Vulnerable” ; vérifiez-la ensuite dans Cisco Software 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
Conseils :
Le paramètre -w 1 accélère l'interrogation ; retirez-le si vous constatez des timeouts.
Bannière directe pour un seul hôte :
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 directement via snmpget.FIXED_WHITELIST avec les versions corrigées confirmées.Ce projet est sous licence MIT.
Ce projet est distribué sous licence MIT.