BishopFox/CVE-2026-0265-check
GitHub: BishopFox/CVE-2026-0265-check
这是一个专门用于非侵入式检测PAN-OS GlobalProtect门户CVE-2026-0265漏洞的安全工具。
Stars: 1 | Forks: 0
# CVE-2026-0265 漏洞评估工具
无需对任何会话进行身份验证或修改任何状态,即可安全地确定一个 [Palo Alto Networks PAN-OS](https://www.paloaltonetworks.com/network-security/next-generation-firewall) GlobalProtect 门户是否易受 CVE-2026-0265 攻击。
## 描述
CVE-2026-0265 是一个影响 PAN-OS 和 Panorama 的远程身份验证绕过漏洞,当身份验证配置文件使用云身份验证服务(CAS)时触发。`libpanmp_mp.so` 中易受攻击的 `pan_auth_verify` 函数完全根据攻击者控制的 `alg` 头部来分发 JSON Web Token 签名验证 — 一个 `alg=HS256` 且签名为 `HMAC-SHA256(cas_public_key_pem, header.payload)` 的伪造 JWT 会被接受,就好像它是一个真实的 RS256 签名的 CAS 令牌,从而使任何攻击者可以冒充任何用户。
该漏洞可通过两个攻击面触发 — GlobalProtect 门户(`/saml/acs.esp`,产生 VPN 会话)和管理 UI(`/SAML20/SP/ACS`,获得完整的 PAN-OS 管理员权限)。**此工具仅覆盖 GlobalProtect 门户攻击面。**
## 工作原理
一个匿名的 `GET /global-protect/prelogin.esp` 请求即可揭示做出权威判断所需的一切信息:
1. **前提条件因素** — prelogin 响应携带一个由门户身份验证配置直接设置的 XML 元素 `yes|no `。值为 `yes` 则确认此监听器满足 CVE 前提条件。
2. **版本因素** — 当附加了 CAS 时,同一响应会在其 `` 字段中嵌入一个出站 CAS 请求令牌。解码该令牌可获得防火墙的权威版本字符串,然后将其与供应商公告中针对每个基础版本的已修补热修复矩阵进行交叉引用,以得出结论。
3. **`.saas` 短路** — 根据 Palo Alto 的说明(2026-05-21),无论底层基础版本号如何,PA 云托管的构建版本均不受影响。
### 输出刻意精简
脚本会输出结论、防火墙报告的 PanOS 版本(以便防御者可以根据其清单对评估结果进行合理性检查),以及基本的分类上下文(`prelogin_status`、`prelogin_msg`、`http_status`、错误注释)。如果您的流水线需要更丰富的设备元数据,请将目标 URL 与您自己的清单进行交叉引用。
## 安装
```
git clone https://github.com/BishopFox/CVE-2026-0265-check
cd CVE-2026-0265-check
pip install requests
```
需要 Python 3.9+ 和 `requests` 包。
## 用法
通过位置参数、`--targets-file` 或 stdin 传入一个或多个目标。主機名和 `host:port` 字符串会自动包装为 `https://`。
```
python3 CVE-2026-0265-check.py [options] [...]
```
| 标志 | 含义 |
|---|---|
| `-f`, `--targets-file FILE` | 从 FILE 中每行读取一个目标 |
| `-t`, `--timeout SECONDS` | 每个请求的超时时间。默认值:20.0 |
| `-c`, `--concurrent N` | 最大并行目标数。默认值:5 |
| `-b`, `--brief` | 对每个目标输出 `\t\t` 而不是完整的 JSON |
| `--user-agent UA` | 覆盖探测 User-Agent。默认是一个类似浏览器的 Chrome 字符串,可绕过 `gpsvc` 的 GP 客户端版本门控;如果您需要访问日志审计可见性且不需要版本门控路径,请使用自定义 UA。 |
默认输出是在 stdout 上每个目标输出一个 JSON 对象(对 jq 友好)。
## 结论
脚本为每个目标输出三类结论之一。**确定** 的结论权威地回答了该目标的漏洞问题。**未确定** 的结论表示探测无法得出结论,需要操作员跟进。
### 确定 — 易受攻击
| 结论 | 何时 |
|---|---|
| `VULNERABLE` | 附加了 CAS,`PanOSversion` 严格低于此基础版本的公告修补热修复版本,且非 `.saas`。 |
### 确定 — 不易受攻击
| 结论 | 何时 |
|---|---|
| `PATCHED` | 附加了 CAS,`PanOSversion` 等于或高于此基础版本的公告修补热修复版本。 |
| `NOT-AFFECTED-SAAS` | 附加了 CAS,但 `PanOSversion` 具有 `.saas` 后缀(PA 云托管;根据 PA 2026-05-21 不受影响)。 |
| `NOT-AFFECTED-NO-CAS` | Prelogin 成功返回,但 `` 表明使用 SAML / RADIUS / LDAP / 本地身份验证。CVE 不适用于此监听器。 |
| `NOT-AFFECTED-NOT-GLOBALPROTECT` | 响应格式不是 GP 门户(例如 "GlobalProtect portal does not exist")。不在范围内。 |
### 未确定 — 需要操作员跟进
| 结论 | 何时 | 建议跟进 |
|---|---|---|
| `UNDETERMINED-VERSION-GATED` | `gpsvc` 返回 "CAS is not supported by the client"。已附加 CAS,但探测因 User-Agent 原因被拒绝;无法从此响应中读取 `PanOSversion`。 | 将 `--user-agent` 设置为真实的 GP 客户端字符串重试。 |
| `UNDETERMINED-MTLS-GATED` | prelogin 响应中出现 "Valid client certificate is required"。身份验证面隐藏在 mTLS 门控之后。 | 通过独立渠道确认版本(客户的权威版本,或使用有效客户端证书进行探测)。 |
| `UNDETERMINED-ERROR` | 网络故障、格式错误的响应、无法解析的 `PanOSversion`,或尽管 `cas-auth=yes` 但 `Token` 解码失败。 | 重新运行;如果持续出现,目标可能从此位置无法访问。 |
## 输出示例
### 简洁模式,混合目标
```
$ 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 -
```
### JSON 模式(默认)
```
$ 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."
]
}
```
### 低并发扫描
`gpsvc` 在连续探测下会进行速率限制 — 脚本已对每个 `HTTP 503` 进行增长退避重试,但 `-c 5` 和适中的 `-t` 对大型目标集更友好:
```
cat all-targets.txt | python3 CVE-2026-0265-check.py -b -c 5
```
## 前提条件
仅当满足以下条件时,脚本才能产生确定的结论:
* 目标可从操作员的位置访问。
* 目标是 PAN-OS GlobalProtect 门户(来自非 PAN-OS 主机的响应会解析为 `NOT-AFFECTED-NOT-GLOBALPROTECT` 或 `UNDETERMINED-ERROR`)。
* prelogin 响应未受 mTLS 门控(否则为 `UNDETERMINED-MTLS-GATED`)或积极的 User-Agent 检查门控(否则为 `UNDETERMINED-VERSION-GATED`)。
## 许可证
根据 [MIT 许可证](LICENSE) 分发。
## 法律免责声明
在没有事先双方同意的情况下使用此工具攻击目标是非法的。遵守所有适用的地方、州和联邦法律是最终用户的责任。开发人员不承担任何责任,且不对因本程序造成的任何滥用或损害负责。
## 另请参阅
* [Bishop Fox 博客](https://bishopfox.com/blog/detecting-cve-2026-0265-at-scale-pan-os-cas-authentication-bypass)
* [Palo Alto Networks 公告 CVE-2026-0265](https://security.paloaltonetworks.com/CVE-2026-0265)
* [NVD — CVE-2026-0265](https://nvd.nist.gov/vuln/detail/CVE-2026-0265)
标签:AES-256, Claude, CVE检测, GlobalProtect, JWT, Palo Alto Networks, PAN-OS, SAML, URL发现, 匿名检测, 安全检测, 漏洞评估, 网络安全, 认证绕过, 远程漏洞, 逆向工具, 防火墙安全, 隐私保护