
PAN-OSターゲットがCVE-2026-0265に対して脆弱であるかを安全に検出します。
いかなるセッションも認証せず、状態を変更することなく、Palo Alto Networks PAN-OS GlobalProtectポータルがCVE-2026-0265に対して脆弱かどうかを安全に判定します。
CVE-2026-0265 は、認証プロファイルがCloud Authentication Service (CAS) を使用している場合にトリガーされる、PAN-OS および Panorama に影響を与えるリモート認証バイパスです。脆弱な pan_auth_verify 関数 (libpan_mp.so 内) は、攻撃者が制御する alg ヘッダのみに基づいて JSON Web Token の署名検証をディスパッチします。alg=HS256 と HMAC-SHA256(cas_public_key_pem, header.payload) をシグネチャとして持つ偽造 JWT が、実際の RS256 署名された CAS トークンとして受け入れられ、攻撃者は任意のユーザーになりすますことができます。
このバグは2つの攻撃面から到達可能です — GlobalProtect ポータル (/saml/acs.esp、VPN セッションを生成) と管理 UI (/SAML20/SP/ACS、完全な PAN-OS 管理者権限を生成)。このツールは GlobalProtect ポータル面のみをカバーします。
単一の匿名 GET /global-protect/prelogin.esp リクエストで、信頼性のある判定に必要なすべての情報が得られます。
<cas-auth>yes|no</cas-auth> が含まれます。値が yes の場合、このリスナーに対して CVE の前提条件が満たされていることが確認されます。<saml-request> フィールドに送信 CAS リクエストトークンが埋め込まれます。これをデコードすることで、ファイアウォールの信頼できるバージョン文字列が得られ、ベンダーアドバイザリのベースごとのパッチ済みホットフィックス行列と照合されて判定が生成されます。.saas ショートカット — PA クラウド管理ビルドは、Palo Alto の明確化 (2026-05-21) に従い、基礎となるベースビルド番号に関係なく影響を受けません。スクリプトは、判定結果、ファイアウォールが報告した 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 パッケージが必要です。
位置引数として1つ以上のターゲットを渡すか、--targets-file を使用するか、標準入力から渡します。ホスト名および host:port 文字列は自動的に https:// でラップされます。
python3 CVE-2026-0265-check.py [options] <target> [<target>...]
| フラグ | 意味 |
|---|---|
-f, --targets-file FILE | FILEから1行1ターゲットを読み込む |
-t, --timeout SECONDS | 1リクエストあたりのタイムアウト。デフォルト: 20.0 |
-c, --concurrent N | 最大並列ターゲット数。デフォルト: 5 |
-b, --brief | 完全なJSONの代わりに <url>\t<verdict>\t<panos_version> をターゲットごとに出力 |
--user-agent UA | プローブのUser-Agentを上書き。デフォルトは gpsvc のGPクライアントバージョンゲートをバイパスするブラウザライクなChrome文字列。アクセスログの可視性が必要でバージョンゲートパスが不要な場合は、カスタムUAを使用してください。 |
デフォルトの出力は、ターゲットごとに1つのJSONオブジェクトがstdoutに出力されます(jqで解析可能)。
スクリプトはターゲットごとに3種類の判定結果のいずれかを出力します。確定判定は、そのターゲットに対する脆弱性の質問に権威的に回答します。未確定判定は、プローブが結論に達せず、オペレーターのフォローアップが必要であることを示します。
| 判定結果 | 条件 |
|---|---|
VULNERABLE | CASが接続されており、PanOSversion がこのベースに対するアドバイザリのパッチ済みホットフィックスよりも厳密に低く、.saas ではない。 |
| 判定結果 | 条件 |
|---|---|
PATCHED | CASが接続されており、PanOSversion がこのベースに対するアドバイザリのパッチ済みホットフィックス以上。 |
NOT-AFFECTED-SAAS | CASが接続されているが、PanOSversion に .saas サフィックスがある(PAクラウド管理、PA 2026-05-21の見解では影響なし)。 |
NOT-AFFECTED-NO-CAS | プレログインが正常に戻ったが、<cas-auth> がSAML / RADIUS / LDAP / ローカル認証を示している。CVEはこのリスナーには適用されない。 |
NOT-AFFECTED-NOT-GLOBALPROTECT | レスポンスの形状がGPポータルではない(例:「GlobalProtectポータルが存在しません」)。対象外。 |
| 判定結果 | 条件 | 推奨されるフォローアップ |
|---|---|---|
UNDETERMINED-VERSION-GATED | gpsvc が「CAS is not supported by the client」を返した。CASは接続されているが、User-Agentの理由でプローブが拒否された。このレスポンスから PanOSversion を読み取れない。 | 実際のGPクライアント文字列で --user-agent を指定して再試行。 |
UNDETERMINED-MTLS-GATED | プレログインレスポンスに「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 -
$ 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
スクリプトが確定判定を生成できるのは、次の場合のみです。
NOT-AFFECTED-NOT-GLOBALPROTECT または UNDETERMINED-ERROR に解決されます)。UNDETERMINED-MTLS-GATED)または過剰なUser-Agentチェック(そうでない場合は UNDETERMINED-VERSION-GATED)によってゲートされていないこと。MITライセンスの下で配布されています。
事前の相互同意なしにターゲットを攻撃するためにこのツールを使用することは違法です。エンドユーザーは、該当するすべての地域、州、連邦法を遵守する責任を負います。開発者は一切の責任を負わず、このプログラムの誤用または損害について責任を負いません。