CVE-2026-8451 — Citrix NetScaler SAML IDP Memory Overread ("new CitrixBleed")

Unauthenticated out-of-bounds read in the NetScaler ADC / Gateway SAML IDP path leaks appliance memory — including session material — via the NSC_TASS response cookie. Exploited in the wild within 24 hours of disclosure.
Threat
CVE-2026-8451
Severity
EXPLOITED ITW CVSS 8.8
Type
Edge Appliance / Memory Disclosure
Access
Unauthenticated · Network
Version
v0.2 · 2026-07-05
Author
HuntPack
Confidence
High
01

Executive Summary

What it is. CVE-2026-8451 is an unauthenticated out-of-bounds read (memory overread) in the XML parser of Citrix NetScaler ADC and NetScaler Gateway appliances that are configured as a SAML Identity Provider (IDP). The parser fails to terminate an unquoted XML attribute value that is followed by a newline, so it reads past the intended buffer and returns adjacent process memory to the attacker inside the NSC_TASS cookie of the HTTP response. No authentication and no user interaction are required. CVSS 8.8.

Why it matters. The leaked memory is drawn from the NetScaler process that handles authentication, so — exactly like the original CitrixBleed (CVE-2023-4966) and CitrixBleed 2 — it can disclose live session tokens, AAA cookies, and credential fragments. An attacker repeatedly polls the endpoint to reassemble valid sessions, then replays them to walk straight past MFA into whatever the gateway fronts (VPN, VDI, internal web apps). Citrix disclosed the flaw and shipped fixes on 30 June 2026; active exploitation was confirmed within 24 hours, with initial scanning from Frankfurt IP 146.70.139[.]154 followed by probes from Hong Kong infrastructure.

The hunt problem. The vulnerable appliance is not a Falcon-instrumented endpoint, so the exploit primitive itself is invisible to EDR. This pack therefore hunts on two honest planes: (1) native NetScaler telemetry — web/proxy/appliance logs for the malformed <samlp:AuthnRequest> probe and abnormal NSC_TASS responses; and (2) Falcon post-exploitation telemetry — session replay and lateral movement landing on the internal, instrumented estate behind the gateway (anomalous authenticated sessions, recon bursts, and C2 egress to attacker infrastructure).

Defender priority: Patch to a fixed build (14.1-72.61 / 13.1-63.18 or later) and terminate all active ICA/PCoIP/AAA/SAML sessions — a patch alone does not evict a session already stolen from memory before you patched. Then hunt the internal estate for replayed sessions, because CitrixBleed-class bugs are exploited for the session, not the shell.

02

Source Review & Web Hunter Notes

TierSourceKey findingCarry fwd
1 VendorCitrix / Cloud Software Group security bulletin (CTX-series, 30 Jun 2026)Six NetScaler CVEs patched; CVE-2026-8451 = memory overread in SAML IDP config. Fixed builds enumerated.yes
1 GovCISA KEV context (NetScaler line of appliances repeatedly added on exploitation)Edge appliance memory-disclosure class treated as urgent-patch; session invalidation required beyond patch.yes
2 PressSecurityWeek — "New CitrixBleed Vulnerability Exploited Immediately After Public Disclosure"Exploitation < 24h post-disclosure; probe = bare <samlp:AuthnRequest> padded with 476 spaces + newline; memory returned in NSC_TASS cookie; source IP 146.70.139[.]154 (Frankfurt), then Hong Kong IPs.yes
2 PressThe Hacker News — "Citrix Patches Six NetScaler Flaws…"Full CVE batch + fixed versions (14.1-72.61, 13.1-63.18, FIPS builds); CVE-2026-8451 only affects appliances configured as SAML IDP.yes
3 AnalyticHistorical CitrixBleed / CitrixBleed 2 tradecraft (CVE-2023-4966, CVE-2026-3055)Same primitive → session-token theft → MFA-bypass replay → hands-on-keyboard. Basis for the post-exploitation hunt hypotheses here.partial

Intel gaps / perishability: Only one attacker source IP (146.70.139[.]154) is publicly attributed so far; the Hong Kong IPs are unpublished. Atomic host IOCs (payload hashes, C2 domains) are not yet published because the value is stolen sessions, not dropped malware — expect the atomic set to stay thin. Treat the behavioral and native-log hunts as the primary detections and the IP as a supporting indicator.

03

Hunt Brief & Attack Chain

Hunt hypotheses (fidelity-ordered)

#HypothesisMITRETelemetryConf
H1The NetScaler web/proxy log shows requests to /saml/login carrying an over-padded / malformed <samlp:AuthnRequest> body, and responses returning an abnormally large or high-entropy NSC_TASS cookie.T1190NetScaler ns.log / web proxy (native)HIGH
H2A Falcon-instrumented host in the DMZ / appliance segment receives inbound connections from the known scanning IP or serves the SAML endpoint to it.T1190NetworkConnectIP4MED
H3After the theft window, internal apps behind the gateway see authenticated network logons whose source is the NetScaler VIP/SNIP but whose behavior (timing, volume, target set) doesn't match normal proxied user flow — replayed stolen sessions.T1550.004 / T1078UserLogonMED
H4A host reached via the replayed session runs a burst of built-in discovery (whoami, nltest, net group, quser) shortly after first access.T1087 / T1016 / T1033ProcessRollup2MED
H5An instrumented host beacons outbound to attacker infrastructure (146.70.139[.]154 or newly-seen rare external IPs) from the gateway/DMZ segment.T1071 / T1041NetworkConnectIP4MED
H6Lateral movement lands from the DMZ inward: RemoteInteractive / network logons or remote service creation originating from the appliance segment into the internal estate.T1021UserLogon / ServiceInstalledMED

Attack chain

StepActionTelemetry / hunt angle
1 · ReconScan Internet for NetScaler appliances answering on the SAML IDP path (200 to /saml/login).Native web log; external attack-surface mgmt. Not EDR-visible.
2 · Exploit (T1190)POST a bare <samlp:AuthnRequest> tag padded with 476 spaces + newline; appliance overreads memory into the NSC_TASS response cookie.Native ns.log / proxy: malformed SAML body + oversized NSC_TASS. H1.
3 · HarvestRepeat thousands of times to reassemble valid session tokens / AAA cookies from leaked memory.Native: request-rate anomaly to /saml/login from one source. H1/H2.
4 · Session replay (T1550.004)Replay the stolen session cookie to the gateway → authenticated as the victim, bypassing MFA.NetScaler AAA session log; internal-app logons sourced from the VIP. H3.
5 · Discovery (T1087/T1016)Enumerate users, groups, domain, hosts from the first internal foothold.ProcessRollup2 recon burst. H4.
6 · Lateral / C2 (T1021/T1071)Pivot inward, stage tooling, beacon to attacker infra.UserLogon from DMZ, NetworkConnectIP4 egress. H5/H6.
04

Consolidated IOC Table

TypeValueConfActionContext
IPv4146.70.139[.]154mediumhuntFrankfurt-based initial scanning / exploitation source (SecurityWeek). VPN/hosting IP — treat as perishable, corroborate before blocking.
BehavioralHTTP request to /saml/login with body = bare <samlp:AuthnRequest> padded by ~476 spaces + newlinehighdetectExploit signature for the overread. Native web/WAF/proxy inspection.
BehavioralResponse Set-Cookie: NSC_TASS= with abnormally large / high-entropy value on a SAML flowhighdetectMemory contents returned to attacker. Anomalous cookie length vs. baseline.
ConfigNetScaler ADC/Gateway configured as SAML IDP on a pre-fix buildhighhuntExposure precondition. show saml / samlIdPProfile present + version < fixed build.
Geo/InfraHong Kong-based follow-on probing IPslowenrichReported but not publicly enumerated. Enrich SAML-path source IPs with geo/ASN.

No malware hashes or C2 domains are published for CVE-2026-8451 — the exploit yields a session, not a file. The IOC appendix (§10) ships placeholder-driven CSV blocks so you can wire your own confirmed indicators; the behavioral and config indicators above are the durable detections.

05

Affected Surface & Telemetry Matrix

SurfaceRequired telemetryPriorityGap risk
NetScaler ADC / Gateway (SAML IDP)ns.log / newnslog, web proxy or WAF access logs, AAA session tableCriticalHigh — appliance not Falcon-instrumented; requires log forwarding to NGSIEM/syslog
DMZ / appliance-segment hostsNetworkConnectIP4, NetworkListenIP4HighMedium — only if sensors deployed in the DMZ
Internal apps behind the gateway (VDI, web, file)UserLogon, ProcessRollup2HighLow — standard endpoint coverage
Identity provider / DCUserLogon, UserLogonFailed2, Entra/AD sign-in logsHighMedium — SAML replay may surface in IdP logs, not EDR

Coverage reality: the exploit itself is only visible in native appliance/web telemetry. If NetScaler logs are not forwarded to your SIEM, H1 (the highest-fidelity hypothesis) is blind — prioritize log forwarding as the fastest coverage win.

06

ATT&CK Mapping

TacticTechniqueObserved behaviorQuery / control
Initial AccessT1190 Exploit Public-Facing AppOverread via malformed SAML AuthnRequest on /saml/loginNative H1; Q2
Credential AccessT1539 Steal Web Session CookieSession/AAA tokens reassembled from leaked memoryNative H1; §12 session invalidation
Defense Evasion / LateralT1550.004 Use Alternate Auth Material (web session)Stolen session replayed past MFAQ3
Initial Access / PersistenceT1078 Valid AccountsAuthenticated as victim without credentialsQ3; §12 CA policy
DiscoveryT1087 / T1016 / T1033Account/network/owner enumeration on first footholdQ4
Command & Control / ExfilT1071 / T1041Beaconing / data egress to attacker infraQ5
Lateral MovementT1021 Remote ServicesPivot from DMZ inward via RDP/SMB/remote serviceQ6
07

Native Audit-Log Hunts (non-CQL)

These run against the appliance itself and its fronting web tier — the only place the exploit primitive is visible. Forward NetScaler logs to your SIEM if you have not already.

On the NetScaler (CLI / shell)

  • Confirm exposure: from the NS CLI, show samlidPProfile and show ns version — you are exposed if a SAML IDP profile is bound to a vserver and the build is below 14.1-72.61 / 13.1-63.18.
  • Malformed SAML probe: in the shell, search the web/proxy log for requests to the /saml/login path whose body contains a bare <samlp:AuthnRequest> with a long run of trailing spaces before a newline. Cross-reference by source IP for high request rates.
  • Oversized NSC_TASS: hunt access logs for responses on the SAML flow that set an NSC_TASS cookie with an unusually long value versus your baseline — the leaked memory is returned there.
  • Session anomalies: review the AAA / ICA session table (show aaa session, show ica connections) for sessions with no matching interactive logon, geographically improbable source, or reuse across source IPs.

On the web/WAF tier in front of NetScaler

  • Alert on POST/GET to /saml/login where the body length is dominated by whitespace or the <samlp:AuthnRequest> element is unclosed/attribute-malformed.
  • Rate-limit and log per-source request counts to the SAML endpoint; a single source issuing thousands of SAML requests in minutes is the harvest loop.

On the identity provider (Entra ID / ADFS / Okta)

  • Hunt sign-ins that use a session/token issued via the NetScaler SAML flow but originate from an IP/ASN that never appears for that user — the replay landing point. In Entra, pivot on SigninLogs by session ID + IP/ASN novelty.
08

CrowdStrike LogScale CQL Hunt Queries

Pick your tenant's cloud first — every "Open in Falcon" button below uses this selection.

The appliance is not Falcon-instrumented, so these queries hunt the internal estate behind the gateway. Replace the placeholder IP/subnet lists with your own NetScaler VIP/SNIP and DMZ ranges before running — they are marked REPLACE_* in-query.

Q1 · Inbound from the known scanning IP to instrumented hosts
CONF MEDFP LOWCOST LOW

Looks for: any Falcon host receiving a connection from the attributed exploitation source IP — catches a DMZ sensor near the appliance or direct probing of other exposed services. FP: shared VPN/hosting IP; a single benign hit is possible — pivot on the host and port, don't alert alone.

// HUNT: Inbound connection from CVE-2026-8451 scanning IP
// MITRE: T1190 | CONF: medium  FP: low  COST: low | REQUIRES: NetworkConnectIP4
#event_simpleName=/NetworkConnectIP4|NetworkReceiveIP4/
| RemoteAddressIP4=/^146\.70\.139\.154$/
| table([ComputerName, aid, LocalAddressIP4, LocalPort, RemoteAddressIP4, RemotePort, ConnectionDirection], limit=200)
Q2 · Outbound beacon from DMZ/gateway hosts to attacker infra
CONF MEDFP MEDCOST LOW

Looks for: egress from your DMZ/appliance-segment hosts to the attacker IP (or add rare-external enrichment) — the C2 leg after a successful pivot. FP: legitimate outbound to shared hosting on that IP; scope to your DMZ subnet via LocalAddressIP4 and confirm the process.

// HUNT: DMZ host beaconing to CVE-2026-8451 attacker IP
// MITRE: T1071 / T1041 | CONF: medium  FP: medium  COST: low | REQUIRES: NetworkConnectIP4
// TUNING: set LocalAddressIP4 regex to YOUR DMZ/appliance segment (e.g. 10.20.30.x)
#event_simpleName=/NetworkConnectIP4/
| ConnectionDirection=/^0$/
| RemoteAddressIP4=/^146\.70\.139\.154$/
| LocalAddressIP4=/^REPLACE_DMZ_SUBNET/
| table([ComputerName, aid, ContextBaseFileName, LocalAddressIP4, RemoteAddressIP4, RemotePort], limit=200)
Q3 · Network logons sourced from the NetScaler VIP/SNIP
CONF MEDFP MEDCOST MED

Looks for: successful logons to internal hosts whose source address is the NetScaler VIP/SNIP — the landing point of replayed stolen sessions. Baseline the normal per-user/target volume; hunt the outliers. FP: the appliance legitimately proxies user sessions — this is a volume/novelty hunt, not a single-event alert. Exclude service accounts that always front through the gateway.

// HUNT: Authenticated network logons originating from the NetScaler VIP/SNIP
// MITRE: T1550.004 / T1078 | CONF: medium  FP: medium  COST: medium | REQUIRES: UserLogon
// TUNING: set RemoteAddressIP4 regex to YOUR NetScaler VIP/SNIP addresses
#event_simpleName=/UserLogon/
| LogonType=/^(3|10)$/
| RemoteAddressIP4=/^REPLACE_NETSCALER_VIP/
| groupBy([UserName, ComputerName], function=count(as=logons))
| test(logons >= 1)
| sort(logons, order=desc)
| table([UserName, ComputerName, logons], limit=200)
Q4 · Post-access discovery burst
CONF MEDFP MEDCOST MED

Looks for: a host running several native discovery utilities in a short window — the classic hands-on-keyboard recon that follows a fresh session foothold. FP: admin/login scripts and monitoring agents run these too; require multiple distinct tools and exclude known admin hosts/service accounts.

// HUNT: Discovery utility burst on a single host
// MITRE: T1087 / T1016 / T1033 | CONF: medium  FP: medium  COST: medium | REQUIRES: ProcessRollup2
// TUNING: exclude known admin/jump hosts and logon-script parents
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| FileName=/^(whoami|nltest|quser|hostname|systeminfo|net1?|ipconfig|arp|route|tasklist)(\.exe)?$/i
| groupBy([ComputerName, aid], function=count(field=FileName, as=distinct_tools, distinct=true))
| test(distinct_tools >= 4)
| sort(distinct_tools, order=desc)
| table([ComputerName, aid, distinct_tools], limit=200)
Q5 · Lateral movement from the DMZ inward
CONF MEDFP MEDCOST MED

Looks for: RemoteInteractive (RDP) or network logons whose source is a DMZ/appliance-segment address — pivoting from the compromised edge into the internal estate. FP: legitimate jump-host paths from the DMZ; whitelist sanctioned admin bastions in that segment.

// HUNT: Logons into internal hosts sourced from the DMZ segment
// MITRE: T1021 | CONF: medium  FP: medium  COST: medium | REQUIRES: UserLogon
// TUNING: set RemoteAddressIP4 regex to YOUR DMZ subnet; exclude sanctioned bastions
#event_simpleName=/UserLogon/
| LogonType=/^(3|9|10)$/
| RemoteAddressIP4=/^REPLACE_DMZ_SUBNET/
| table([UserName, ComputerName, LogonType, RemoteAddressIP4], limit=200)
Q6 · New service or scheduled task on internal targets
CONF MEDFP MEDCOST LOW

Looks for: service or scheduled-task creation with a shell/LOLBin image path — persistence or remote execution staged after the pivot. FP: software deployment and patch tooling create services; exclude known deployment parents and signed installer paths.

// HUNT: Suspicious service/scheduled-task creation post-pivot
// MITRE: T1543.003 / T1053.005 | CONF: medium  FP: medium  COST: low | REQUIRES: ServiceInstalled / ScheduledTaskRegistered
// TUNING: exclude signed installer paths and RMM/patch-deployment parents (e.g. ccmexec, msiexec)
#event_simpleName=/CreateService|ModifyServiceBinary|ScheduledTaskRegistered/
| CommandLine=/(cmd(\.exe)?|powershell(\.exe)?|rundll32|regsvr32|mshta|wscript|cscript)/i
| table([ComputerName, aid, UserName, ServiceName, TaskName, CommandLine], limit=200)
09

Custom IOA Recommendations

The exploit is off-sensor, so IOAs here target the post-exploitation behavior on instrumented hosts. Promote only after baselining.

IOA namePatternExclusionsPath
Discovery Burst — Edge Pivot≥4 distinct discovery LOLBins (whoami/nltest/quser/net/systeminfo) on one host within 10 minAdmin jump hosts, logon-script parents, monitoring agentsInvestigate → promote to Detect after baseline (Q4)
DMZ-Sourced Interactive LogonRemoteInteractive/network logon whose source IP ∈ DMZ segment into a non-bastion internal hostSanctioned bastions, backup/patch service accountsInvestigate-only (Q5)
Shell-Backed Service CreationServiceInstalled / ScheduledTaskRegistered with cmd/powershell/rundll32 imageSigned installers, RMM/deployment toolingInvestigate → Detect (Q6)

The highest-fidelity detection (H1, the malformed SAML probe) belongs in your WAF/NGSIEM rules against NetScaler logs, not a Falcon IOA — the appliance never reports to the sensor.

10

Machine-Readable IOC Appendix

Falcon IOC Management CSVbulk import
type,value,action,severity,expiration,description,tags
ipv4,146.70.139.154,detect,high,2026-10-05,CVE-2026-8451 NetScaler SAML overread scanning source,campaign:CVE-2026-8451
ipv4,REPLACE_WITH_HK_PROBE_IP,detect,medium,2026-10-05,CVE-2026-8451 Hong Kong follow-on probe,campaign:CVE-2026-8451
domain,REPLACE_WITH_C2_DOMAIN,detect,high,2027-01-05,CVE-2026-8451 post-exploit C2,campaign:CVE-2026-8451
sha256,REPLACE_WITH_TOOLING_HASH,prevent,critical,2027-01-05,CVE-2026-8451 post-exploit tooling,campaign:CVE-2026-8451
Behavioral SignaturesWAF / NGSIEM
# Exploit probe (native web/WAF inspection):
#   URI path      : /saml/login
#   Body          : bare <samlp:AuthnRequest> element, unclosed/malformed attribute,
#                   ~476 trailing spaces before a newline
#   Anomaly        : request body dominated by whitespace
# Memory leak (response side):
#   Set-Cookie    : NSC_TASS=<abnormally long / high-entropy value>
#   Anomaly        : NSC_TASS length far above baseline on a SAML flow
# Harvest loop:
#   Single source IP issuing thousands of /saml/login requests in minutes
NetScaler Log Hunt Stringsnative appliance
# Forward these to your SIEM and hunt on them:
#   ns.log / newnslog  -> /saml/login access entries by source IP + rate
#   AAA session table  -> sessions with no matching interactive logon
#   ICA connections    -> session reuse across differing source IPs
# CLI exposure check:
#   show ns version                 # is build < 14.1-72.61 / 13.1-63.18 ?
#   show samlidPProfile             # is a SAML IDP profile bound to a vserver ?
Patch / Config Auditremediation
# Fixed builds (upgrade to at least):
#   NetScaler ADC/Gateway 14.1-72.61
#   NetScaler ADC/Gateway 13.1-63.18
#   NetScaler ADC 14.1-FIPS 14.1-72.61
#   NetScaler ADC 13.1-FIPS / 13.1-NDcPP 13.1.37.272
# After patch (mandatory — memory theft precedes patch):
#   kill icaconnection -all
#   kill aaa session -all
#   kill pcoipConnection -all
#   # rotate SAML IDP signing cert + any secrets exposed to the appliance
11

Detection Validation Gates

GateCheckPass criterion
Telemetry readyNetScaler logs forwarded; NetworkConnectIP4 + UserLogon flowing from DMZ & internal hostsSAML-path log events queryable in SIEM within last 24h
Benign baselineEstablish normal NSC_TASS cookie length and normal per-source /saml/login rateBaseline captured; thresholds set above normal
Positive testIn a lab, replay a benign padded SAML request; confirm the WAF/log rule firesRule matches the padded AuthnRequest signature
Replace placeholdersAll REPLACE_* tokens (VIP/SNIP, DMZ subnet, IOCs) filled with tenant valuesNo REPLACE_* left in deployed queries
PromotionQ4/Q6 reviewed for FP volume before Detect promotion<1 FP/host/week after tuning
12

Hardening — Tiered & Deployable

Immediate (this week)
  • Patch to a fixed build (14.1-72.61 / 13.1-63.18 or the FIPS/NDcPP equivalents). Authority: Citrix security bulletin (30 Jun 2026). The single highest-leverage control.
  • Terminate all live sessions after patchingkill icaconnection -all, kill aaa session -all, kill pcoipConnection -all. A stolen session survives the patch. Authority: CitrixBleed post-incident guidance (M1018 / M1056 analog).
  • Rotate secrets exposed to the appliance — SAML IDP signing certificate, service-account credentials, API keys handled by the NetScaler. MITRE M1027.
Near term (1–4 weeks)
  • Restrict the SAML IDP surface — if SAML IDP is not required, unbind the profile; if it is, place the endpoint behind a WAF that rejects malformed <samlp:AuthnRequest> bodies and rate-limits /saml/login. MITRE M1050 (Exploit Protection) / M1037 (Filter Network Traffic).
  • Forward NetScaler logs to the SIEM and deploy the native H1 detections. MITRE M1047 (Audit).
  • Bind Conditional Access / device-trust to gateway apps so a replayed session from an unmanaged device/new IP is challenged or blocked. MITRE M1032 (MFA) / M1018.
Strategic (1–3 months)
  • Reduce internet-exposed appliance surface — front NetScaler management/SAML with an identity-aware proxy or ZTNA; never expose the management interface. MITRE M1035 (Limit Access to Resource Over Network).
  • Shorten session lifetime & bind sessions to client attributes so leaked tokens expire fast and don't replay from a new source. MITRE M1018.
  • Segment the DMZ so a compromised edge appliance cannot reach the internal estate directly. MITRE M1030 (Network Segmentation).
13

Deployable Playbooks

Playbook A — Patch, evict sessions, rotate (NetScaler CLI)

# 1. Confirm current version and exposure
show ns version
show samlidPProfile

# 2. Upload + install the fixed build via the CLI or GUI, then reboot
#    (target: 14.1-72.61 or 13.1-63.18 or later)

# 3. AFTER the appliance is on the fixed build, evict every live session
kill icaconnection -all
kill aaa session -all
kill pcoipConnection -all

# 4. Rotate the SAML IDP signing certificate and rebind
#    (generate/import new cert, then:)
#    set samlidPProfile <profile> -samlIdPCertName <new_cert>

# 5. Rotate any service-account / LDAP bind creds the appliance holds

Playbook B — WAF virtual-patch for the SAML overread (pseudo-rule)

# Reject malformed SAML AuthnRequest on the SAML endpoint:
IF  request.path == "/saml/login"
AND request.body matches "<samlp:AuthnRequest[^>]*[ ]{100,}\n"
THEN block, log(source_ip, request_id)

# Rate-limit the harvest loop:
IF  request.path == "/saml/login"
AND count(source_ip) > 50 within 60s
THEN throttle + alert

Playbook C — Entra sign-in replay hunt (KQL starter)

SigninLogs
| where AppDisplayName has_any ("NetScaler","Citrix Gateway","VPN")
| summarize ips = make_set(IPAddress), asns = make_set(AutonomousSystemNumber) by UserPrincipalName, SessionId
| where array_length(ips) > 1
// one session token seen from multiple IPs/ASNs = candidate replay
14

Containment Runbook

PhaseActionsOwnerEvidence
IsolatePatch appliance; kill all ICA/AAA/PCoIP sessions; if compromise suspected, take the appliance offline or restrict the SAML endpoint to known IPs.Network / Edge teamVersion banner, session-kill confirmation
EradicateRotate SAML signing cert + all secrets handled by the appliance; force credential reset for any account whose session may have been replayed; Falcon-contain any internal host flagged by Q3–Q6.IR + IAMCert serials, reset log, containment IDs
RecoverRestore SAML IDP behind WAF + rate-limit; re-enable services on a validated build; confirm no residual sessions in the AAA table.Edge + IRWAF rule IDs, clean AAA session table
Post-incidentEnable NetScaler log forwarding + native detections; add CA/device-trust to gateway apps; review DMZ segmentation.SecEngSIEM rule IDs, CA policy IDs
15

Detection Coverage Map

TechniqueBehaviorCQLIOACoverage
T1190Malformed SAML overread probeGAP (native-log only)
T1190Inbound from scanning IPQ1Partial
T1539Session/token theft from memoryGAP (off-sensor)
T1550.004 / T1078Replayed session on internal appsQ3DMZ-Sourced LogonPartial
T1087/T1016/T1033Discovery burstQ4Discovery BurstGood
T1071/T1041C2 / exfil to attacker infraQ2Partial
T1021Lateral from DMZ inwardQ5DMZ-Sourced LogonPartial
T1543.003 / T1053.005Service/task persistenceQ6Shell-Backed ServiceGood

Known gaps: the exploit primitive and the memory-theft (T1190/T1539) are off-sensor — they are only recoverable from NetScaler/WAF logs (§7). The Falcon queries here begin at session replay. Closing the primary gap = forwarding appliance logs to the SIEM and deploying the native H1 rules.

Validation: telemetry-ready and benign-baseline gates (§11) must pass before Q3/Q4/Q6 are promoted from Investigate to Detect.

16

Hunt Summary Ticket

TITLE:      CVE-2026-8451 — NetScaler SAML IDP Memory Overread ("new CitrixBleed")
SEVERITY:   Critical (CVSS 8.8, exploited in the wild < 24h post-disclosure)
SCOPE:      NetScaler ADC/Gateway as SAML IDP (pre-fix) + internal estate behind the gateway
HYPOTHESIS: Unauth memory overread leaks session tokens -> replayed past MFA -> lateral movement
QUERIES:    Q1 inbound-from-scan-IP · Q2 DMZ beacon · Q3 VIP-sourced logons ·
            Q4 discovery burst · Q5 DMZ lateral · Q6 service/task persistence
DO FIRST:   1) Patch to 14.1-72.61 / 13.1-63.18+  2) kill all ICA/AAA/PCoIP sessions
            3) rotate SAML cert + secrets  4) forward NetScaler logs, deploy H1 native rule
FINDINGS:   <record oversized NSC_TASS hits, /saml/login rate anomalies, replayed sessions>
GAPS:       Exploit + theft are off-sensor (native-log only); atomic host IOCs unpublished
ACTIONS:    Replace REPLACE_* tokens (VIP/SNIP, DMZ subnet, IOCs) before deploy;
            Falcon-contain hosts flagged by Q3-Q6; force cred reset for replayed accounts
OWNER:      <assign>          VERSION: v0.2 · 2026-07-05
17

Changelog

v0.22026-07-24CQL correctness pass. All 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.
v0.12026-07-05Initial HuntPack — CVE-2026-8451 NetScaler SAML IDP memory overread. 6 CQL post-exploitation queries, native NetScaler/WAF log hunts (H1), tiered hardening, and containment runbook. Exploit primitive flagged as off-sensor.
18

References

TierSourceUsed forAccessed
1 VendorCitrix / Cloud Software Group NetScaler security bulletin (30 Jun 2026)CVE scope, fixed builds, SAML IDP precondition2026-07-05
2 PressSecurityWeek — New CitrixBleed Vulnerability Exploited Immediately After Public DisclosureExploit signature, NSC_TASS leak, source IP, timeline2026-07-05
2 PressThe Hacker News — Citrix Patches Six NetScaler Flaws Allowing File Read and Denial-of-ServiceFull CVE batch, fixed versions, CVSS2026-07-05
3 AnalyticCitrixBleed / CitrixBleed 2 historical tradecraft (CVE-2023-4966, CVE-2026-3055)Session-theft → MFA-bypass replay model for hunt hypotheses2026-07-05