
CVE-2025-20352 SNMP Exposure Check (onesixtyone + parser)
Verificação de exposição black-box rápida e segura para dispositivos Cisco IOS/IOS XE relacionados à CVE-2025-20352 (subsistema SNMP):
sysDescr.0 com um pequeno script Python para sinalizar Cisco IOS/IOS XE e marcar versões como Corrigido (se na lista de permissões) ou Potencialmente Vulnerável (verifique no Cisco Software Checker).Este projeto não explora nada. Ele apenas identifica dispositivos que respondem a comunidades SNMP padrão e extrai informações de versão de
sysDescr.0.
# 0) Clone este repositório
git clone https://github.com/scadastrangelove/CVE-2025-20352 cve-2025-20352-scan
cd cve-2025-20352-scan
# 1) Instale as dependências (Ubuntu/Debian)
sudo add-apt-repository -y universe
sudo apt update
sudo apt install -y onesixtyone snmp python3
# 2) Crie uma lista de comunidades com as padrão
printf "public\nprivate\n" > communities.txt
# 3) Digitalize suas sub-redes (EDITAR ESTAS!)
onesixtyone -c communities.txt 192.168.2.0/24 10.1.2.0/24 | tee snmp_raw.txt
# 4) Analise os resultados para CSV
python3 ios_cve20352_parser.py < snmp_raw.txt > parsed.csv
# 5) Visualize corretamente
column -s, -t < parsed.csv | less -S
Colunas do parsed.csv:
ip — IP alvocommunity — comunidade SNMP que funcionouvendor — Cisco / Não-Ciscoos_family — IOS, IOS XE ou vazioversion — string de versão extraída do bannerstatus — Corrigido, Potencialmente Vulnerável (verifique no Cisco Software Checker), ou Não é Cisco / Não é IOSraw — linha original do bannerExemplo
ip,community,vendor,os_family,version,status,raw
1.1.2.4,public,Cisco,IOS,15.5(3)S2,Potencialmente Vulnerável — IOS 15.5(3)S2; verifique no Cisco Software Checker,"Cisco IOS Software, ASR1000 ... Version 15.5(3)S2 ..."
1.1.2.2,public,Não-Cisco,,,Não é Cisco / Não é IOS,RouterOS RB750r2
ios_cve20352_parser.py lê da entrada padrão (ou de um arquivo) linhas como:
<ip> [<comunidade>] <sysDescr...>
Ele extrai versões Cisco IOS/IOS XE e as rotula.
Versões corrigidas residem em uma lista de permissões interna no script:
FIXED_WHITELIST = {
"IOS": {
# Adicione versões exatas corrigidas do IOS 15.x que você confirmar via Cisco Software Checker
# ex.: "15.9(3)M12": True
},
"IOS XE": {
"17.15.4a": True
# Adicione mais conforme a Cisco publicar/ você confirmar (ex.: "17.15.4b": True)
}
}
Por que uma lista de permissões? O aviso da Cisco orienta os administradores a usar o Cisco Software Checker para descobrir as versões exatas afetadas/corrigidas por trilha/plataforma. O script, portanto, peca pelo lado seguro: se uma versão Cisco IOS/IOS XE não estiver na lista de corrigidas, é marcada como "Potencialmente Vulnerável" e você deve verificá-la no verificador.
sudo add-apt-repository -y universe
sudo apt update
sudo apt install -y onesixtyone snmp python3
# onesixtyone pode estar no EPEL; caso contrário, compile da fonte
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
Dicas:
Adicione -w 1 para diminuir o tempo de espera por host (mais rápido), ou remova se perceber timeouts.
Para um banner direto de host único:
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 diretamente com snmpget.FIXED_WHITELIST.Este projeto está licenciado sob a Licença MIT. Consulte o arquivo LICENSE para o texto completo.
O projeto é distribuído sob a licença MIT. O texto completo está no arquivo LICENSE.
Avaliação de exposição rápida e segura de dispositivos Cisco IOS/IOS XE relacionada à CVE-2025-20352 (subsistema SNMP):
sysDescr.0 com um script Python: marcamos Cisco IOS/IOS XE e atribuímos status Corrigido (se na lista de permissões) ou Potencialmente Vulnerável (verifique no Cisco Software Checker).O projeto não explora a vulnerabilidade. Ele apenas determina dispositivos que respondem a comunidades SNMP padrão e extrai a versão de
sysDescr.0.
# 0) Clonagem
git clone https://github.com/scadastrangelove/CVE-2025-20352 cve-2025-20352-scan
cd cve-2025-20352-scan
# 1) Dependências (Ubuntu/Debian)
sudo add-apt-repository -y universe
sudo apt update
sudo apt install -y onesixtyone snmp python3
# 2) Arquivo de comunidades
printf "public\nprivate\n" > communities.txt
# 3) Digitalização de sub-redes (ALTERE PARA SUAS!)
onesixtyone -c communities.txt 192.168.2.0/24 10.1.2.0/24 | tee snmp_raw.txt
# 4) Análise para CSV
python3 ios_cve20352_parser.py < snmp_raw.txt > parsed.csv
# 5) Visualização
column -s, -t < parsed.csv | less -S
Colunas do parsed.csv:
ip — Endereço IPcommunity — Comunidade SNMP que funcionouvendor — Cisco / Não-Ciscoos_family — IOS, IOS XE ou vazioversion — String de versão do bannerstatus — Corrigido, Potencialmente Vulnerável (verifique no Cisco Software Checker) ou Não é Cisco / Não é IOSraw — String original do bannerExemplo
ip,community,vendor,os_family,version,status,raw
1.1.2.4,public,Cisco,IOS,15.5(3)S2,Potencialmente Vulnerável — IOS 15.5(3)S2; verifique no Cisco Software Checker,"Cisco IOS Software, ASR1000 ... Version 15.5(3)S2 ..."
1.1.2.2,public,Não-Cisco,,,Não é Cisco / Não é IOS,RouterOS RB750r2
ios_cve20352_parser.py lê linhas do tipo:
<ip> [<comunidade>] <sysDescr...>
Extrai versões Cisco IOS/IOS XE e atribui status.
Versões corrigidas são listadas na lista de permissões interna:
FIXED_WHITELIST = {
"IOS": {
# Adicione versões exatas corrigidas do IOS 15.x após verificação no Cisco Software Checker
# ex.: "15.9(3)M12": True
},
"IOS XE": {
"17.15.4a": True
# Complemente conforme publicações/confirmações (ex.: "17.15.4b": True)
}
}
Por que uma lista de permissões? Na descrição, a Cisco sugere verificar compilações específicas através do Cisco Software Checker. Portanto, se a versão IOS/IOS XE não for encontrada na lista Corrigido, o script marca como “Potencialmente Vulnerável”, e você deve verificá-la no verificador.
sudo add-apt-repository -y universe
sudo apt update
sudo apt install -y onesixtyone snmp python3
# onesixtyone pode estar no EPEL; caso contrário, compile da fonte
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
Dicas:
O parâmetro -w 1 acelera a consulta; remova se perceber timeouts.
Banner pontual para nó:
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 diretamente via snmpget.FIXED_WHITELIST com versões corrigidas confirmadas.Este projeto está licenciado sob a Licença MIT.
O projeto é distribuído sob a licença MIT.