PAN-OS GlobalProtect Authentication Bypass — CVE-2026-0257
Executive Summary
CVE-2026-0257 is an authentication bypass in the GlobalProtect portal and gateway components of PAN-OS. An unauthenticated attacker can circumvent security controls and initiate a VPN connection without valid credentials. Palo Alto Networks Unit 42 has observed active exploitation by an unidentified actor attempting to access GlobalProtect; the advisory and IOCs published 9 June 2026. As of reporting, no post-access lateral movement had been observed — meaning defenders have a window to catch this at the VPN-edge before it turns into a foothold.
The published indicators are unusually clean to hunt on: the early (pre-PoC) exploitation traffic came from a fixed set of source IPs and the connecting "endpoints" carried hard-coded, PoC-flavored fingerprints — placeholder MAC addresses (aa:bb:cc:dd:ee:ff, 00:11:22:33:44:55), template hostnames (WINDOWS-LAPTOP-001, DESKTOP-GP01, GP-CLIENT), a hard-coded Windows 10 Pro 64-bit client OS string, and an empty domain field. Real corporate GlobalProtect clients almost never present those values, so they make high-fidelity hunt anchors.
The highest-value defensive angle is the GlobalProtect authentication/system logs on the firewall: a successful gateway session whose client metadata matches the PoC fingerprints, or that originates from the published IPs, is exploitation until proven otherwise. Because the firewall is an appliance without a Falcon sensor, the durable detection path is to forward GlobalProtect logs to NGSIEM and alert on those fingerprints.
Defender priority: Apply the Palo Alto fix for CVE-2026-0257 and, in parallel, search GlobalProtect logs now for the published source IPs and the hard-coded device fingerprints (template hostnames, placeholder MACs, empty domain). A match = treat as compromise and force re-auth.
Source Review & Web Hunter Notes
| Tier | Source | Key Finding | Carry Fwd |
|---|---|---|---|
| 1 | Palo Alto Unit 42 threat brief (9 Jun 2026) | Active exploitation of GlobalProtect auth bypass; IOC IPs + PoC fingerprints | yes |
| 1 | Palo Alto Networks PSIRT advisory | CVE-2026-0257 portal/gateway auth bypass; affected PAN-OS versions & fix | yes |
| 2 | Vendor IOC list (pre-PoC source IPs) | 23.128.228.6, 104.207.144.154, 146.19.216.119/.120/.125, 179.43.172.213, 185.195.232.139, 198.12.106.60, 202.144.192.47 | yes |
Unit 42 notes the source IPs are pre-PoC indicators (early-exploitation infrastructure) and may rotate after public PoC release — treat IPs as perishable (detect, +3 mo) and lean on the behavioral fingerprints for durable coverage. Confirm the exact affected PAN-OS train against the PSIRT advisory for your version.
Hunt Brief & Attack Chain
Hunt hypotheses (fidelity-ordered)
- H1 (high): A GlobalProtect connection originated from one of the published exploitation IPs. T1190 / T1133
- H2 (high): A GlobalProtect session presents a hard-coded PoC fingerprint — placeholder MAC, template hostname, or hard-coded OS string. T1190 / T1078
- H3 (high): A successful gateway connection with an empty domain field or otherwise malformed client metadata. T1078
- H4 (medium): A gateway session established without a corresponding successful authentication event — the bypass logic anomaly. T1190
- H5 (medium): A spike of GlobalProtect connections from new/rare source ASNs or geographies. T1133
- H6 (medium): Post-VPN internal activity from a VPN-pool address — scanning or lateral movement (if endpoint-covered). T1021 / T1046
Attack chain
| # | Step | Telemetry | Hunt Angle |
|---|---|---|---|
| 1 | Attacker reaches internet-exposed GlobalProtect portal/gateway | GlobalProtect / traffic logs | Connection from published IPs (Q1) |
| 2 | Auth bypass → VPN session without valid creds | GlobalProtect auth/system logs | Session w/o successful auth (Q4) |
| 3 | PoC client presents placeholder identity | GlobalProtect client metadata | PoC fingerprints (Q2); empty domain (Q3) |
| 4 | Anomalous source distribution | GlobalProtect logs | Rare-source spike (Q5) |
| 5 | (Potential) internal movement from VPN pool | Endpoint / internal NetFlow | VPN-pool lateral movement (Q6) |
Consolidated IOC Table
| Type | Value | Conf | Action | Context |
|---|---|---|---|---|
| ipv4 | 23.128.228.6 | high | detect | Pre-PoC exploitation source |
| ipv4 | 104.207.144.154 | high | detect | Pre-PoC exploitation source |
| ipv4 | 146.19.216.119, .120, .125 | high | detect | Pre-PoC exploitation source |
| ipv4 | 179.43.172.213 | high | detect | Pre-PoC exploitation source |
| ipv4 | 185.195.232.139 | high | detect | Pre-PoC exploitation source |
| ipv4 | 198.12.106.60 | high | detect | Pre-PoC exploitation source |
| ipv4 | 202.144.192.47 | high | detect | Pre-PoC exploitation source |
| mac | aa:bb:cc:dd:ee:ff, 00:11:22:33:44:55 | high | hunt | Placeholder MACs in PoC client |
| hostname | WINDOWS-LAPTOP-001, DESKTOP-GP01, GP-CLIENT | high | hunt | Template hostnames |
| artifact | Client OS Windows 10 Pro 64-bit + empty domain | medium | hunt | Hard-coded PoC metadata |
| cve | CVE-2026-0257 | high | detect | GlobalProtect portal/gateway auth bypass |
Affected Surface & Telemetry Matrix
| Surface | Telemetry Needed | Priority | Gap Risk |
|---|---|---|---|
| PAN-OS firewall with GlobalProtect portal/gateway enabled (internet-facing) | GlobalProtect auth + system logs forwarded to NGSIEM/Panorama | Critical | High — firewall is sensor-less; logs must be forwarded |
| VPN address pool → internal network | Internal NetFlow / firewall traffic logs from VPN pool | High | East-west visibility gaps |
| Internal hosts reachable from VPN pool | UserLogon, ProcessRollup2 (Falcon-covered hosts) | Medium | Low if endpoints covered |
⚠ Telemetry reality: The CQL in §8 assumes GlobalProtect logs are ingested into NGSIEM/LogScale (a custom repo). Field names depend on your PAN-OS parser — validate against your ingest. Q6 is a Falcon endpoint query for internal hosts.
ATT&CK Mapping
| Tactic | Technique | Observed Behavior | Query / Control |
|---|---|---|---|
| Initial Access | T1190 Exploit Public-Facing App | GlobalProtect auth bypass | Q1 / Q4 · harden §12 |
| Initial Access | T1133 External Remote Services | Unauthorized VPN session | Q1 / Q5 |
| Defense Evasion / Persistence | T1078 Valid Accounts (bypassed) | Session w/ placeholder identity, empty domain | Q2 / Q3 |
| Discovery | T1046 Network Service Discovery | (Potential) scanning from VPN pool | Q6 |
| Lateral Movement | T1021 Remote Services | (Potential) movement from VPN pool | Q6 |
Native Audit-Log Hunts (non-CQL)
- GlobalProtect logs (firewall / Panorama): filter for successful gateway connections from the published source IPs, and for sessions where the source-region/source-user is unexpected.
- Client metadata search: query GlobalProtect logs for the template hostnames (
WINDOWS-LAPTOP-001,DESKTOP-GP01,GP-CLIENT), the placeholder MACs, and sessions with an empty domain field. - Auth-vs-session correlation: list gateway sessions that have no matching successful authentication event — the bypass signature.
- Version/exposure check: confirm which firewalls run a GlobalProtect-enabled PAN-OS version affected by CVE-2026-0257 and whether the fix is applied; confirm the portal/gateway is only exposed where required.
- VPN-pool egress review: on internal firewall/NetFlow, look for scanning or SMB/RDP from VPN-pool addresses shortly after a suspect session.
CrowdStrike LogScale CQL Hunt Queries
#repo=panos_globalprotect and the parsed field names with your ingest's actual values. Q6 is a Falcon endpoint query for internal hosts.Looks for: any GlobalProtect connection sourced from the Unit 42 IP list. Very low FP for the exact IPs; treat as perishable as infra rotates.
// HUNT: GlobalProtect connection from CVE-2026-0257 source IPs // MITRE: T1190, T1133 // CONF: high FP: low COST: low | REQUIRES: ingested GlobalProtect logs // FALSE POSITIVES: none for exact IPs; rotate as infra changes #repo=panos_globalprotect | src_ip=/^(23\.128\.228\.6|104\.207\.144\.154|146\.19\.216\.(119|120|125)|179\.43\.172\.213|185\.195\.232\.139|198\.12\.106\.60|202\.144\.192\.47)$/ | table([@timestamp, src_ip, srcuser, public_ip, event], limit=max)
Looks for: sessions presenting the hard-coded PoC device names or placeholder MACs. Corporate clients do not use these, so FP is very low.
// HUNT: GlobalProtect PoC client fingerprints // MITRE: T1190, T1078 // CONF: high FP: low COST: low | REQUIRES: ingested GP client metadata // FALSE POSITIVES: none expected; placeholder identities are not real assets #repo=panos_globalprotect | @rawstring=/WINDOWS-LAPTOP-001|DESKTOP-GP01|GP-CLIENT|aa:bb:cc:dd:ee:ff|00:11:22:33:44:55/i | table([@timestamp, src_ip, srcuser, machinename, mac, event], limit=200)
Looks for: a successful GlobalProtect gateway connection whose domain field is empty alongside a hard-coded OS string. FP: some legitimate non-domain-joined clients have empty domains — pair with Q1/Q2 or rare-source context before alerting.
// HUNT: GP gateway success with empty domain + hard-coded OS // MITRE: T1078 // CONF: medium FP: medium COST: low | REQUIRES: ingested GP auth logs // FALSE POSITIVES: legit non-domain-joined clients // TUNING: combine with Q1/Q2 or rare source ASN; exclude known BYOD pools #repo=panos_globalprotect | event=/gateway/i AND status=/success/i | domain="" AND os=/Windows 10 Pro 64-bit/i | table([@timestamp, src_ip, srcuser, machinename, os, domain], limit=200)
Looks for: a gateway "connected" event for a source/user that has no matching successful authentication event in the window — the bypass anomaly. FP: session-resume / cached-cookie reconnects and parser timing — tune the window and exclude reconnect events.
// HUNT: GP gateway connect without a successful auth event // MITRE: T1190 // CONF: medium FP: medium COST: medium | REQUIRES: ingested GP auth + gateway logs // FALSE POSITIVES: cookie/session resume; parser timing // TUNING: widen/narrow the bucket; exclude reconnect/resume event subtypes #repo=panos_globalprotect | case { event=/gateway-connect|gw-connect/i | is_connect := 1 ; event=/auth-success|authentication.*success/i | is_auth := 1 ; * | is_other := 1 ; } | groupBy([src_ip, srcuser], function=[sum(is_connect, as=connects), sum(is_auth, as=auths)]) | connects > 0 | auths = 0 | sort(connects, order=desc)
Looks for: source IPs newly appearing in GlobalProtect logs, ranked by rarity. FP: travelling users / new offices — baseline known egress ranges and exclude them.
// HUNT: rare-source GlobalProtect connections // MITRE: T1133 // CONF: medium FP: medium COST: low | REQUIRES: ingested GP logs // FALSE POSITIVES: travelling users, new sites // TUNING: exclude known corporate egress CIDRs and traveller patterns #repo=panos_globalprotect | event=/gateway|portal/i | groupBy([src_ip], function=[count(as=hits), collect([srcuser])]) | sort(hits, order=asc)
Looks for: internal hosts receiving many distinct inbound connections from a VPN-pool source — fan-out indicative of scanning/lateral movement after a bypassed VPN session. FP: legitimate admin tools and vuln scanners — exclude sanctioned scanner IPs. Replace the CIDR with your VPN pool.
// HUNT: fan-out from VPN-pool source (post-bypass lateral movement) // MITRE: T1046, T1021 // CONF: medium FP: medium COST: medium | REQUIRES: NetworkConnectIP4 (Falcon) // FALSE POSITIVES: sanctioned scanners, admin tooling // TUNING: set the VPN-pool CIDR; exclude approved scanner source IPs #event_simpleName=NetworkConnectIP4 | RemoteAddressIP4=/^10\.99\.0\./ | groupBy([RemoteAddressIP4], function=[count(LocalAddressIP4, distinct=true, as=targets)]) | targets > 25 | sort(targets, order=desc)
CrowdStrike Custom IOA Recommendations
| Detection | Pattern | Exclusions | Action |
|---|---|---|---|
| GP Exploitation IP (NGSIEM scheduled search) | GlobalProtect connection from published IP (Q1) | None | Alert — Critical |
| GP PoC Fingerprint (scheduled search) | Template hostname / placeholder MAC (Q2) | None | Alert — Critical |
| VPN-pool Fan-out (Custom IOA, endpoint) | Single VPN-pool source → many internal hosts (Q6) | Sanctioned scanners | Detect |
The firewall is sensor-less, so the primary alerts are NGSIEM scheduled searches (Q1, Q2). Q6 becomes a Custom IOA on endpoints to catch any post-bypass internal movement.
Machine-Readable IOC Appendix
type,value,action,severity,expiration,description,tags ipv4,23.128.228.6,detect,high,2026-09-14,CVE-2026-0257 GP exploitation source,campaign:PANOS-GP-CVE-2026-0257 ipv4,104.207.144.154,detect,high,2026-09-14,CVE-2026-0257 GP exploitation source,campaign:PANOS-GP-CVE-2026-0257 ipv4,146.19.216.119,detect,high,2026-09-14,CVE-2026-0257 GP exploitation source,campaign:PANOS-GP-CVE-2026-0257 ipv4,146.19.216.120,detect,high,2026-09-14,CVE-2026-0257 GP exploitation source,campaign:PANOS-GP-CVE-2026-0257 ipv4,146.19.216.125,detect,high,2026-09-14,CVE-2026-0257 GP exploitation source,campaign:PANOS-GP-CVE-2026-0257 ipv4,179.43.172.213,detect,high,2026-09-14,CVE-2026-0257 GP exploitation source,campaign:PANOS-GP-CVE-2026-0257 ipv4,185.195.232.139,detect,high,2026-09-14,CVE-2026-0257 GP exploitation source,campaign:PANOS-GP-CVE-2026-0257 ipv4,198.12.106.60,detect,high,2026-09-14,CVE-2026-0257 GP exploitation source,campaign:PANOS-GP-CVE-2026-0257 ipv4,202.144.192.47,detect,high,2026-09-14,CVE-2026-0257 GP exploitation source,campaign:PANOS-GP-CVE-2026-0257
Hostnames: WINDOWS-LAPTOP-001, DESKTOP-GP01, GP-CLIENT MAC: aa:bb:cc:dd:ee:ff MAC: 00:11:22:33:44:55 Client OS: Windows 10 Pro 64-bit (hard-coded) Domain field: empty => GP gateway session matching any of these = exploitation
Product: PAN-OS GlobalProtect portal + gateway Vuln: authentication bypass (unauthenticated VPN session) Evidence: GlobalProtect auth/system logs (firewall/Panorama) Note: IOC IPs are pre-PoC and may rotate post-disclosure Behavioral fingerprints are the durable detection
CVE-2026-0257 — apply Palo Alto PSIRT fix for your PAN-OS train Audit: confirm affected GlobalProtect-enabled version Audit: GlobalProtect logs forwarded to NGSIEM? (y/n) Audit: Q1 + Q2 scheduled-search alerts enabled? (y/n) Action on match: force re-auth, kill session, block source IP
Detection Validation Gates
| Gate | Check | Pass Criteria |
|---|---|---|
| Telemetry ready | GlobalProtect auth + gateway logs land in NGSIEM (#repo=panos_globalprotect or equivalent) | Events visible; src_ip / machinename / domain fields parsed |
| Baseline | Run Q3 + Q5 over 14 days; catalog legitimate empty-domain clients and known source ranges | Exclusions captured before alerting |
| Positive test | Connect a lab GP client with hostname GP-CLIENT and an empty domain | Q2 fires; Q3 records it |
| Promotion | Q1 + Q2 reviewed clean for 7 days | Promote to Critical scheduled-search alerts |
Hardening — Tiered & Deployable
- Apply the Palo Alto fix for CVE-2026-0257 to all GlobalProtect-enabled PAN-OS firewalls. (MITRE M1051 Update Software)
- Forward GlobalProtect logs to NGSIEM/Panorama and enable the Q1 + Q2 alerts. (M1047 Audit)
- Block the published exploitation source IPs at the perimeter as a stop-gap. (M1037 Filter Network Traffic)
- Enforce MFA / certificate-based auth on GlobalProtect so a bypassed credential check alone cannot yield a usable session. (M1032 MFA)
- Restrict portal/gateway exposure — geo/source filtering where the user base allows. (M1035 Limit Access to Resource Over Network)
- Segment the VPN address pool from sensitive internal zones; require step-up auth to reach crown jewels. (M1030 Network Segmentation)
- Device-posture / HIP checks so only managed, attested endpoints complete a GlobalProtect connection — placeholder clients fail posture. (M1032 / M1026)
- ZTNA migration reducing reliance on a flat VPN session for internal access. (M1035)
- Continuous edge-appliance patch SLA & exposure monitoring for all internet-facing VPN/firewall services. (M1051 / M1047)
Deployable Playbooks
1 — NGSIEM scheduled-search alert (LogScale) for Q1 + Q2 combined
# Schedule recurring; severity Critical; notify SOC on any result. #repo=panos_globalprotect | src_ip=/^(23\.128\.228\.6|104\.207\.144\.154|146\.19\.216\.(119|120|125)|179\.43\.172\.213|185\.195\.232\.139|198\.12\.106\.60|202\.144\.192\.47)$/ OR @rawstring=/WINDOWS-LAPTOP-001|DESKTOP-GP01|GP-CLIENT|aa:bb:cc:dd:ee:ff|00:11:22:33:44:55/i
2 — Block the exploitation source IPs (PAN-OS CLI EDL/address-group)
# Add to a deny address-group applied on the GlobalProtect zone. set address-group GP-CVE-2026-0257-BLOCK static [ \ H-23.128.228.6 H-104.207.144.154 H-146.19.216.119 H-146.19.216.120 \ H-146.19.216.125 H-179.43.172.213 H-185.195.232.139 H-198.12.106.60 \ H-202.144.192.47 ] # Reference this group in a top-of-rulebase deny for the GP interface.
3 — Respond to a confirmed bypassed session
# On the firewall (or via Panorama), for the offending user/IP: # 1. Terminate the GlobalProtect session request global-protect-gateway client-logout gateway <GW_NAME> user <USER> reason force # 2. Block the source IP (see playbook 2) # 3. Force MFA re-enrollment / credential reset for any impacted account
Containment Runbook
| Phase | Actions | Owner | Evidence |
|---|---|---|---|
| Isolate | Terminate suspect GlobalProtect sessions; block published source IPs; tighten portal/gateway exposure | Network / SOC | Session-logout record; deny-rule change |
| Eradicate | Apply CVE-2026-0257 fix; confirm no persistence on internal hosts reached from the VPN pool; reset any impacted credentials | IR / Network | Patch evidence; endpoint scan results |
| Recover | Re-enable normal access behind MFA/posture checks; validate clean GlobalProtect logs | Network | Clean-log confirmation |
| Assess scope | Review VPN-pool egress and internal logs for movement from any bypassed session | IR | NetFlow / endpoint timeline |
Detection Coverage Map
| Technique | Behavior | CQL | IOA/Alert | Coverage |
|---|---|---|---|---|
| T1190/T1133 | Auth bypass from known infra | Q1 | ✓ (scheduled search) | Good (if logs ingested) |
| T1078 | PoC fingerprint / empty domain | Q2,Q3 | ✓ | Good |
| T1190 | Session w/o auth (bypass logic) | Q4 | — | Partial (parser-dependent) |
| T1133 | Rare-source spike | Q5 | — | Partial (baseline-dependent) |
| T1046/T1021 | Lateral movement from VPN pool | Q6 | conditional | Partial (needs endpoint coverage) |
Known gaps: the firewall is sensor-less, so all edge coverage depends on forwarding GlobalProtect logs to NGSIEM (§12 Immediate). IOC IPs are pre-PoC and perishable — the behavioral fingerprints (Q2/Q3) carry durable coverage. No post-access TTPs were published, so Q6 is a precautionary net rather than a confirmed-behavior detection. Validate parser field names before promoting any query.
Hunt Summary Ticket
TITLE: Hunt — PAN-OS GlobalProtect Auth Bypass CVE-2026-0257
SEVERITY: High (exploited ITW; unauthenticated VPN session; no post-access yet)
SCOPE: All GlobalProtect-enabled PAN-OS firewalls (internet-facing)
HYPOTHESIS: Unauthenticated actor bypassed GP portal/gateway auth to establish
a VPN session; PoC clients carry placeholder identity fingerprints
QUERIES: Q1 known IPs · Q2 PoC fingerprints · Q3 empty-domain success
Q4 session w/o auth · Q5 rare-source spike · Q6 VPN-pool fan-out
DO FIRST: Apply PSIRT fix; forward GP logs to NGSIEM; enable Q1+Q2 alerts;
block published source IPs
FINDINGS: <record src_ip, machinename, domain, session times>
GAPS: Sensor-less firewall; IOC IPs perishable; no post-access TTPs known
ACTIONS: Kill session, block IP, force MFA re-auth, patch, assess VPN-pool egress
OWNER: HuntPack
VERSION: v0.2 (2026-06-14)
Changelog
table() calls now carry an explicit row limit: the default is 200 and truncation is silent, so a capped result was indistinguishable from a complete one. Atomic-IOC sweeps (filters over 5+ hashes or C2 IPs) use limit=max so a wide infection is never silently under-scoped; behavioural hunts use limit=200, where exceeding the cap indicates the query needs tuning. Where present, event names that do not exist in the Falcon data model were corrected (e.g. ServiceInstalled is a Sysmon concept, not a Falcon event; ElfFileWritten is ELFFileWritten) — such queries could never return a row. No detection logic, fields, or IOCs changed.References
| Tier | Source | Used For | Access Date |
|---|---|---|---|
| 1 | Unit 42 — Active Exploitation of PAN-OS CVE-2026-0257 | Exploitation, IOCs, PoC fingerprints | 2026-06-14 |
| 1 | Palo Alto Networks PSIRT — CVE-2026-0257 | Affected versions, fix, auth-bypass detail | 2026-06-14 |
Confirm the exact affected PAN-OS version train and the fixed release against the Palo Alto PSIRT advisory for your deployment before patching.