
Python script to sweep a fleet of Palo Alto firewalls and Panoramas via SSH, check PAN-OS version against CVE-2026-0265 (Authentication Bypass via Cloud Authentication Service), detect whether CAS is actually configured, and report exploitability in a color-coded summary table.
Uno script Python che si connette tramite SSH a un elenco di firewall Palo Alto Networks e appliance Panorama e riporta l'esposizione di ogni dispositivo a CVE-2026-0265 — una vulnerabilità di bypass dell'autenticazione in PAN-OS che interessa i dispositivi con il servizio Cloud Authentication Service (CAS) abilitato. Anziché affidarsi esclusivamente alla corrispondenza di versione (che sovrastima il rischio), lo script verifica anche se CAS è effettivamente configurato su ogni dispositivo e distingue tra vulnerabile, interessato-ma-non-sfruttabile e sicuro.
L'advisory ufficiale elenca come "interessate" tutte le versioni PAN-OS precedenti a un hotfix specifico. In pratica, il bug è rilevante solo se hai configurato un profilo di autenticazione basato su CAS. Una scansione ingenua della versione segnala come vulnerabile ogni dispositivo con un hotfix precedente, senza lasciarti alcun modo di dare priorità agli aggiornamenti su una grande flotta.
Questo script fornisce il quadro completo in un'unica passata:
AFFECTED BY CVE — pura verifica dell'intervallo di versioni rispetto all'advisory. CAS — il dispositivo ha effettivamente un profilo di autenticazione CAS definito? STATUS — verdetto combinato:
VULNERABLE — versione interessata e CAS configurato (esposizione reale)
NOT_EXPLOITABLE — versione interessata, ma nessun profilo CAS definito; il percorso di codice vulnerabile non è raggiungibile
SAFE — esecuzione di una versione corretta o non interessata
show di sola lettura — nessuna modifica alla configurazione.user@host(active)>) e disabilita il pager di PAN-OS in modo che l'output non venga troncato.AFFECTED BY CVE, CAS e STATUS.exit prima di chiudere, così i log di controllo PAN-OS registrano un logout pulito anziché un'interruzione del trasporto.paramiko (pip install paramiko)git clone https://github.com/YOUR_USERNAME/palo-alto-cve-2026-0265-checker.git
cd palo-alto-cve-2026-0265-checker
pip install paramiko
Apri check_cve_2026_0265.py e modifica l'elenco DEVICES vicino alla parte superiore con i tuoi hostname e IP di gestione:
```python
DEVICES = [
("fw1-prod-region1", "192.0.2.10"),
("fw2-prod-region1", "192.0.2.11"),
("panorama1", "198.51.100.10"),
# ...
]
```
Facoltativamente, modifica DEFAULT_USER con il nome del tuo account amministrativo di sola lettura.
Esegui lo script:
```bash
python check_cve_2026_0265.py
```
Inserisci nome utente e password SSH quando richiesto. Le stesse credenziali vengono riutilizzate per ogni dispositivo.
================================================================================
CVE-2026-0265 Risk Checker - Multi-device PAN-OS sweep
================================================================================
Devices in list: 6
Parallel workers: 8
SSH username for all devices [admin]:
Password for admin:
Checking devices (results appear as each finishes) ...
------------------------------------------------------------------------------
[ 1/ 6] fw1-prod-region1 192.0.2.10 NOT_EXPLOITABLE 11.1.4-h7 CAS:no
[ 2/ 6] fw2-prod-region1 192.0.2.11 NOT_EXPLOITABLE 11.1.4-h7 CAS:no
[ 3/ 6] fw1-prod-region2 192.0.2.20 SAFE 11.0.3-h10 CAS:no
[ 4/ 6] fw2-prod-region2 192.0.2.21 SAFE 11.0.3-h10 CAS:no
[ 5/ 6] panorama1-region1 198.51.100.10 NOT_EXPLOITABLE 11.2.7-h4 CAS:no
[ 6/ 6] panorama2-region2 198.51.100.20 NOT_EXPLOITABLE 11.2.7-h4 CAS:no
------------------------------------------------------------------------------
Completed in 18.4 seconds
================================================================================
CVE-2026-0265 Assessment Summary
================================================================================
-----------------------------------------------------------------------------------------------------
HOSTNAME MGMT IP VERSION AFFECTED BY CVE CAS STATUS FIX VERSION
-----------------------------------------------------------------------------------------------------
fw1-prod-region1 192.0.2.10 11.1.4-h7 yes no NOT_EXPLOITABLE 11.1.4-h33
fw2-prod-region1 192.0.2.11 11.1.4-h7 yes no NOT_EXPLOITABLE 11.1.4-h33
panorama1-region1 198.51.100.10 11.2.7-h4 yes no NOT_EXPLOITABLE 11.2.7-h13
panorama2-region2 198.51.100.20 11.2.7-h4 yes no NOT_EXPLOITABLE 11.2.7-h13
fw1-prod-region2 192.0.2.20 11.0.3-h10 no no SAFE -
fw2-prod-region2 192.0.2.21 11.0.3-h10 no no SAFE -
-----------------------------------------------------------------------------------------------------
Total: 6 | Vulnerable: 0 | Not exploitable: 4 | Safe: 2 | Errors: 0
-----------------------------------------------------------------------------------------------------
In un terminale reale la colonna STATUS è colorata:
Status Color Meaning
VULNERABLE rosso grassetto Versione interessata e CAS configurato — applica la patch immediatamente
NOT_EXPLOITABLE giallo Versione interessata, ma CAS non configurato — applica la patch nella prossima finestra di manutenzione
SAFE verde La versione è uguale o successiva all'hotfix correttivo per questa CVE
Gli stati di errore (AUTH_FAIL, UNREACHABLE, PARSE_ERR) sono elencati nel blocco dei dettagli di errore sotto la tabella.
Per ogni dispositivo, lo script avvia una sessione SSH interattiva ed esegue due comandi:
show system info | match sw-
show config running | match cloud-authentication-service
Il primo restituisce una riga come sw-version: 11.1.4-h7. Il secondo è vuoto se sul dispositivo non è configurato alcun profilo di autenticazione basato su CAS. Lo script combina queste due risposte con la tabella delle versioni interessate dell'advisory pubblicato.
Nota sul rilevamento CAS: quando un filtro
matchnon trova risultati, il dispositivo non restituisce nulla oltre al comando ripetuto e al prompt successivo. Lo script considera che il comando ripetuto contiene anch'esso la parola chiave e segnala CAS come "configurato" solo quando la parola chiave compare più di una volta nell'output.
Questo script valida solo il percorso di attacco di CVE-2026-0265 (autenticazione basata su CAS). Un dispositivo che restituisce NOT_EXPLOITABLE non è sfruttabile tramite questa CVE nella configurazione attuale, ma esegue comunque codice interessato e dovrebbe essere aggiornato con la normale cadenza di manutenzione.
Il controllo CAS cerca qualsiasi riferimento a cloud-authentication-service nella configurazione attiva. Non verifica se quel profilo è associato a un'interfaccia di accesso (interfaccia di gestione, portale di autenticazione, portale/gateway GlobalProtect). Un profilo CAS configurato ma non associato tecnicamente non è sfruttabile, ma lo script lo segnala in modo prudente come VULNERABLE.
Le coppie HA condividono la configurazione quando la sincronizzazione è integra, ma lo script controlla ogni peer in modo indipendente per consentirti di confermare che entrambi i lati siano effettivamente allineati.
Questo script non effettua l'accesso al dispositivo tramite chiavi SSH o autenticazione basata su certificati — è implementata solo l'autenticazione con password. Le pull request sono benvenute.
MIT — consulta il file LICENSE.
Questo script è fornito così com'è per uso operativo e di sicurezza difensiva. Non è affiliato a Palo Alto Networks né da questa approvato. Conferma sempre l'applicabilità della CVE rispetto all'advisory ufficiale del fornitore prima di prendere decisioni di aggiornamento.