
Detectar com segurança se um alvo PAN-OS está vulnerável ao CVE-2026-0265.
Determine com segurança se um portal GlobalProtect do Palo Alto Networks PAN-OS é vulnerável ao CVE-2026-0265 sem autenticar nenhuma sessão ou modificar qualquer estado.
CVE-2026-0265 é uma bypass de autenticação remota que afeta PAN-OS e Panorama e é acionada quando um perfil de autenticação utiliza o Cloud Authentication Service (CAS). A função vulnerável pan_auth_verify em libpanmp_mp.so despacha a verificação de assinatura do JSON Web Token exclusivamente com base no cabeçalho alg controlado pelo atacante — um JWT forjado com alg=HS256 e HMAC-SHA256(cas_public_key_pem, header.payload) como sua assinatura é aceito como se fosse um token CAS real assinado com RS256, permitindo que qualquer atacante se passe por qualquer usuário.
O bug é acessível através de duas superfícies de ataque — o portal GlobalProtect (/saml/acs.esp, gera uma sessão VPN) e a interface de gerenciamento (, concede acesso de administrador PAN-OS completo).
/SAML20/SP/ACSUma única requisição anônima GET /global-protect/prelogin.esp revela tudo o que é necessário para um veredito autoritativo:
<cas-auth>yes|no</cas-auth> definido diretamente pela configuração de autenticação do portal. Um valor yes confirma que a pré-condição do CVE está atendida para este ouvinte.<saml-request>. Decodificá-lo produz a string de versão autoritativa do firewall, que é então cruzada com a matriz de hotfix corrigido por base do aviso do fornecedor para produzir o veredito..saas — Builds gerenciados em nuvem da PA não são afetados conforme esclarecimento da Palo Alto (21/05/2026), independentemente do número da build base subjacente.O script emite o veredito, a versão do PanOS reportada pelo firewall (para que um defensor possa verificar a avaliação em relação ao seu inventário) e contexto básico de triagem (prelogin_status, prelogin_msg, http_status, anotações de erro). Se seu pipeline precisar de metadados mais ricos do dispositivo, cruze a URL de destino com seu próprio inventário.
git clone https://github.com/BishopFox/CVE-2026-0265-check
cd CVE-2026-0265-check
pip install requests
Requer Python 3.9+ e o pacote requests.
Passe um ou mais destinos como argumentos posicionais, via --targets-file ou na entrada padrão. Hostnames e strings host:port são automaticamente envolvidos para https://.
python3 CVE-2026-0265-check.py [options] <target> [<target>...]
| Bandeira | Significado |
|---|---|
-f, --targets-file ARQUIVO | Lê um destino por linha do ARQUIVO |
-t, --timeout SEGUNDOS | Timeout por requisição. Padrão: 20.0 |
-c, --concurrent N | Máximo de destinos paralelos. Padrão: 5 |
-b, --brief | Emite <url>\t<verdict>\t<panos_version> por destino em vez de JSON completo |
--user-agent UA | Substitui o User-Agent da sonda. O padrão é uma string Chrome similar a navegador que ignora a verificação de versão do cliente GP do gpsvc; use um UA personalizado se precisar de visibilidade nos logs de acesso e não precisar do caminho com verificação de versão. |
A saída padrão é um objeto JSON por destino no stdout (amigável para jq).
O script emite uma de três classes de veredito por destino. Determinados respondem à pergunta de vulnerabilidade de forma autoritativa para aquele destino. Indeterminados indicam que a sonda não pôde chegar a uma conclusão e é necessário acompanhamento do operador.
| Veredito | Quando |
|---|---|
VULNERABLE | CAS ativado, PanOSversion estritamente abaixo do hotfix corrigido do aviso para esta base, não .saas. |
| Veredito | Quando |
|---|---|
PATCHED | CAS ativado, PanOSversion igual ou acima do hotfix corrigido do aviso para esta base. |
NOT-AFFECTED-SAAS | CAS ativado, mas PanOSversion tem o sufixo .saas (gerenciado em nuvem da PA; não afetado conforme PA 21/05/2026). |
NOT-AFFECTED-NO-CAS | Prelogin retornou com sucesso, mas <cas-auth> indica autenticação SAML / RADIUS / LDAP / local. O CVE não se aplica a este ouvinte. |
NOT-AFFECTED-NOT-GLOBALPROTECT | O formato da resposta não é de um portal GP (por exemplo, "GlobalProtect portal does not exist"). Fora do escopo. |
| Veredito | Quando | Ação sugerida |
|---|---|---|
UNDETERMINED-VERSION-GATED | gpsvc retornou "CAS is not supported by the client". CAS está ativado, mas a sonda foi rejeitada por razões de User-Agent; PanOSversion não pode ser lido desta resposta. | Tentar novamente com --user-agent definido como uma string de cliente GP real. |
UNDETERMINED-MTLS-GATED | "Valid client certificate is required" na resposta de prelogin. Superfície de autenticação oculta atrás de uma barreira mTLS. | Confirmar a build por um canal separado (versão autoritativa do cliente ou uma sonda com um certificado de cliente válido). |
UNDETERMINED-ERROR | Falha de rede, resposta malformada, PanOSversion não analisável ou falha na decodificação do Token apesar de cas-auth=yes. | Reexecutar; se persistir, o provavelmente não está acessível a partir desta posição. |
$ python3 CVE-2026-0265-check.py -b -f targets.txt
https://gp1.customer.example VULNERABLE 11.1.6-h23
https://gp2.customer.example PATCHED 11.1.6-h32
https://vpn.cloud.customer.example NOT-AFFECTED-SAAS 11.2.7-h9.saas
https://mgmt.customer.example NOT-AFFECTED-NO-CAS -
https://www.customer.example NOT-AFFECTED-NOT-GLOBALPROTECT -
https://internal-vpn.customer.example UNDETERMINED-MTLS-GATED -
$ python3 CVE-2026-0265-check.py gp.customer.example | jq .
{
"target": "https://gp.customer.example",
"verdict": "VULNERABLE",
"panos_version": "11.1.6-h23",
"prelogin_status": "Success",
"http_status": 200,
"notes": [
"11.1.6-h23 is below the advisory's patched hotfix for this base."
]
}
O gpsvc limita a taxa sob sondagens consecutivas — o script já tenta novamente cada HTTP 503 com backoff crescente, mas -c 5 e um -t moderado é amigável para grandes frotas:
cat all-targets.txt | python3 CVE-2026-0265-check.py -b -c 5
O script pode produzir um veredito determinado apenas quando:
NOT-AFFECTED-NOT-GLOBALPROTECT ou UNDETERMINED-ERROR).UNDETERMINED-MTLS-GATED) ou por uma verificação agressiva de User-Agent (caso contrário, UNDETERMINED-VERSION-GATED).Distribuído sob uma licença MIT.
O uso desta ferramenta para atacar alvos sem consentimento mútuo prévio é ilegal. É de responsabilidade do usuário final obedecer a todas as leis locais, estaduais e federais aplicáveis. Os desenvolvedores não assumem nenhuma responsabilidade e não se responsabilizam por qualquer uso indevido ou dano causado por este programa.