
CVE-2025-20352 SNMP Exposure Check (onesixtyone + parser)
Быстрая и безопасная оценка экспозиции устройств Cisco IOS/IOS XE, связанная с CVE-2025-20352 (подсистема SNMP):
sysDescr.0 Python-скриптом: помечаем 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 — 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": {
# 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. Поэтому, если версия IOS/IOS XE не найдена в списке Fixed, скрипт ставит метку “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
sysDescr.0 напрямую через snmpget.FIXED_WHITELIST подтверждёнными фикс-релизами.Этот проект распространяется по лицензии MIT. Полный текст — в файле LICENSE.
Проект распространяется по лицензии MIT. Полный текст — в файле LICENSE.
Быстрая и безопасная оценка экспозиции устройств Cisco IOS/IOS XE, связанная с CVE-2025-20352 (подсистема SNMP):
sysDescr.0 Python-скриптом: помечаем 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 не найдена в списке Fixed, скрипт ставит метку “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
sysDescr.0 напрямую через snmpget.FIXED_WHITELIST подтверждёнными фикс-релизами.This project is licensed under the MIT License.
Проект распространяется по лицензии MIT.