
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.
Python-скрипт, который подключается по SSH к списку межсетевых экранов Palo Alto Networks и устройств Panorama и сообщает о подверженности каждого устройства уязвимости CVE-2026-0265 — уязвимости обхода аутентификации в PAN-OS, затрагивающей устройства с включённым облачным сервисом аутентификации (CAS).
Вместо того чтобы полагаться только на сопоставление версий (что даёт завышенные результаты), скрипт также проверяет, действительно ли CAS настроен на каждом устройстве, и различает уязвимые, затронутые, но не эксплуатируемые, и безопасные устройства.
В официальном бюллетене перечислены все версии PAN-OS ниже исправляющего hotfix как «затронутые». На практике ошибка имеет значение только в том случае, если у вас настроен профиль аутентификации на основе CAS. Наивное сканирование версий помечает каждое устройство на старом hotfix как уязвимое, не оставляя вам способа расставить приоритеты при установке исправлений в большом парке устройств.
Этот скрипт даёт полную картину за один проход:
VULNERABLE — затронутая версия и настроен CAS (реальная подверженность)NOT_EXPLOITABLE — затронутая версия, но профиль CAS не определён; уязвимый путь выполнения кода недостижимSAFE — установлена исправленная или незатронутая версияshow в режиме только для чтения — никаких изменений конфигурации.user@host(active)>) и отключает пейджер PAN-OS, чтобы вывод не обрезался.AFFECTED BY CVE, CAS и STATUS.exit перед закрытием, чтобы в журналах аудита PAN-OS фиксировался чистый выход, а не обрыв транспорта.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
Откройте check_cve_2026_0265.py и отредактируйте список DEVICES рядом с началом файла, указав свои имена хостов и IP-адреса управления:
```python
DEVICES = [
("fw1-prod-region1", "192.0.2.10"),
("fw2-prod-region1", "192.0.2.11"),
("panorama1", "198.51.100.10"),
# ...
]
```
При необходимости измените DEFAULT_USER на имя вашей стандартной учётной записи администратора с правами только на чтение.
Запустите скрипт:
```bash
python check_cve_2026_0265.py
```
Введите имя пользователя и пароль SSH при появлении запроса. Одни и те же учётные данные используются для всех устройств.
================================================================================
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
-----------------------------------------------------------------------------------------------------
В реальном терминале колонка STATUS окрашивается в цвет:
| Статус | Цвет | Значение |
|---|
Состояния ошибок (AUTH_FAIL, UNREACHABLE, PARSE_ERR) перечислены в блоке с подробностями об ошибках под таблицей.
Для каждого устройства скрипт запускает интерактивную SSH-сессию и выполняет две команды:
show system info | match sw-
show config running | match cloud-authentication-service
Первая возвращает строку вида sw-version: 11.1.4-h7. Вторая пуста, если на устройстве не настроен профиль аутентификации на основе CAS. Скрипт сопоставляет эти два ответа с таблицей затронутых версий из опубликованного бюллетеня.
Примечание об обнаружении CAS: когда фильтр
matchне находит совпадений, устройство не возвращает ничего, кроме эхо-повтора самой команды и следующего приглашения. Скрипт учитывает, что эхо-повтор команды сам содержит ключевое слово, и помечает CAS как «настроенный» только тогда, когда ключевое слово встречается в выводе более одного раза.
Этот скрипт проверяет только вектор атаки CVE-2026-0265 (аутентификация на основе CAS). Устройство, возвращающее NOT_EXPLOITABLE, не эксплуатируется через эту CVE в своей текущей конфигурации, но оно всё ещё работает на затронутом коде, и его следует обновлять в обычном цикле технического обслуживания.
Проверка CAS ищет любую ссылку на cloud-authentication-service в текущей конфигурации. Она не проверяет, привязан ли этот профиль к интерфейсу входа (mgmt UI, портал аутентификации, портал/шлюз GlobalProtect). Настроенный, но непривязанный профиль CAS технически также не эксплуатируется, но скрипт консервативно сообщает о нём как о VULNERABLE.
HA-пары совместно используют конфигурацию при здоровой синхронизации, но скрипт проверяет каждый узел независимо, чтобы вы могли убедиться, что обе стороны действительно согласованы.
Этот скрипт не выполняет вход на устройство с использованием SSH-ключей или аутентификации на основе сертификатов — реализована только аутентификация по паролю. Pull request'ы приветствуются.
MIT — см. LICENSE.
Этот скрипт предоставляется как есть для защитных и операционных целей. Он не связан с Palo Alto Networks и не одобрен ею. Всегда подтверждайте применимость CVE по официальному бюллетеню вендора перед принятием решений об установке исправлений.
VULNERABLE | жирный красный | Затронутая версия и настроен CAS — установите исправление немедленно |
NOT_EXPLOITABLE | жёлтый | Затронутая версия, но CAS не настроен — установите исправление в ближайшее окно технического обслуживания |
SAFE | зелёный | Версия на уровне исправляющего hotfix для этой CVE или новее |