CVE-2026-8451 — Citrix NetScaler SAML IDP Memory Overread ("new CitrixBleed")
NSC_TASS response cookie. Exploited in the wild within 24 hours of disclosure.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.
Source Review & Web Hunter Notes
| Tier | Source | Key finding | Carry fwd |
|---|---|---|---|
| 1 Vendor | Citrix / 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 Gov | CISA 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 Press | SecurityWeek — "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 Press | The 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 Analytic | Historical 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.
Hunt Brief & Attack Chain
Hunt hypotheses (fidelity-ordered)
| # | Hypothesis | MITRE | Telemetry | Conf |
|---|---|---|---|---|
| H1 | The 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. | T1190 | NetScaler ns.log / web proxy (native) | HIGH |
| H2 | A Falcon-instrumented host in the DMZ / appliance segment receives inbound connections from the known scanning IP or serves the SAML endpoint to it. | T1190 | NetworkConnectIP4 | MED |
| H3 | After 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 / T1078 | UserLogon | MED |
| H4 | A host reached via the replayed session runs a burst of built-in discovery (whoami, nltest, net group, quser) shortly after first access. | T1087 / T1016 / T1033 | ProcessRollup2 | MED |
| H5 | An instrumented host beacons outbound to attacker infrastructure (146.70.139[.]154 or newly-seen rare external IPs) from the gateway/DMZ segment. | T1071 / T1041 | NetworkConnectIP4 | MED |
| H6 | Lateral movement lands from the DMZ inward: RemoteInteractive / network logons or remote service creation originating from the appliance segment into the internal estate. | T1021 | UserLogon / ServiceInstalled | MED |
Attack chain
| Step | Action | Telemetry / hunt angle |
|---|---|---|
| 1 · Recon | Scan 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 · Harvest | Repeat 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. |
Consolidated IOC Table
| Type | Value | Conf | Action | Context |
|---|---|---|---|---|
| IPv4 | 146.70.139[.]154 | medium | hunt | Frankfurt-based initial scanning / exploitation source (SecurityWeek). VPN/hosting IP — treat as perishable, corroborate before blocking. |
| Behavioral | HTTP request to /saml/login with body = bare <samlp:AuthnRequest> padded by ~476 spaces + newline | high | detect | Exploit signature for the overread. Native web/WAF/proxy inspection. |
| Behavioral | Response Set-Cookie: NSC_TASS= with abnormally large / high-entropy value on a SAML flow | high | detect | Memory contents returned to attacker. Anomalous cookie length vs. baseline. |
| Config | NetScaler ADC/Gateway configured as SAML IDP on a pre-fix build | high | hunt | Exposure precondition. show saml / samlIdPProfile present + version < fixed build. |
| Geo/Infra | Hong Kong-based follow-on probing IPs | low | enrich | Reported 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.
Affected Surface & Telemetry Matrix
| Surface | Required telemetry | Priority | Gap risk |
|---|---|---|---|
| NetScaler ADC / Gateway (SAML IDP) | ns.log / newnslog, web proxy or WAF access logs, AAA session table | Critical | High — appliance not Falcon-instrumented; requires log forwarding to NGSIEM/syslog |
| DMZ / appliance-segment hosts | NetworkConnectIP4, NetworkListenIP4 | High | Medium — only if sensors deployed in the DMZ |
| Internal apps behind the gateway (VDI, web, file) | UserLogon, ProcessRollup2 | High | Low — standard endpoint coverage |
| Identity provider / DC | UserLogon, UserLogonFailed2, Entra/AD sign-in logs | High | Medium — 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.
ATT&CK Mapping
| Tactic | Technique | Observed behavior | Query / control |
|---|---|---|---|
| Initial Access | T1190 Exploit Public-Facing App | Overread via malformed SAML AuthnRequest on /saml/login | Native H1; Q2 |
| Credential Access | T1539 Steal Web Session Cookie | Session/AAA tokens reassembled from leaked memory | Native H1; §12 session invalidation |
| Defense Evasion / Lateral | T1550.004 Use Alternate Auth Material (web session) | Stolen session replayed past MFA | Q3 |
| Initial Access / Persistence | T1078 Valid Accounts | Authenticated as victim without credentials | Q3; §12 CA policy |
| Discovery | T1087 / T1016 / T1033 | Account/network/owner enumeration on first foothold | Q4 |
| Command & Control / Exfil | T1071 / T1041 | Beaconing / data egress to attacker infra | Q5 |
| Lateral Movement | T1021 Remote Services | Pivot from DMZ inward via RDP/SMB/remote service | Q6 |
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 samlidPProfileandshow 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/loginpath 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_TASScookie 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/GETto/saml/loginwhere 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
SigninLogsby session ID + IP/ASN novelty.
CrowdStrike LogScale CQL Hunt Queries
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.
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)
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)
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)
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)
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)
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)
Custom IOA Recommendations
The exploit is off-sensor, so IOAs here target the post-exploitation behavior on instrumented hosts. Promote only after baselining.
| IOA name | Pattern | Exclusions | Path |
|---|---|---|---|
| Discovery Burst — Edge Pivot | ≥4 distinct discovery LOLBins (whoami/nltest/quser/net/systeminfo) on one host within 10 min | Admin jump hosts, logon-script parents, monitoring agents | Investigate → promote to Detect after baseline (Q4) |
| DMZ-Sourced Interactive Logon | RemoteInteractive/network logon whose source IP ∈ DMZ segment into a non-bastion internal host | Sanctioned bastions, backup/patch service accounts | Investigate-only (Q5) |
| Shell-Backed Service Creation | ServiceInstalled / ScheduledTaskRegistered with cmd/powershell/rundll32 image | Signed installers, RMM/deployment tooling | Investigate → 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.
Machine-Readable IOC Appendix
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
# 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
# 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 ?
# 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
Detection Validation Gates
| Gate | Check | Pass criterion |
|---|---|---|
| Telemetry ready | NetScaler logs forwarded; NetworkConnectIP4 + UserLogon flowing from DMZ & internal hosts | SAML-path log events queryable in SIEM within last 24h |
| Benign baseline | Establish normal NSC_TASS cookie length and normal per-source /saml/login rate | Baseline captured; thresholds set above normal |
| Positive test | In a lab, replay a benign padded SAML request; confirm the WAF/log rule fires | Rule matches the padded AuthnRequest signature |
| Replace placeholders | All REPLACE_* tokens (VIP/SNIP, DMZ subnet, IOCs) filled with tenant values | No REPLACE_* left in deployed queries |
| Promotion | Q4/Q6 reviewed for FP volume before Detect promotion | <1 FP/host/week after tuning |
Hardening — Tiered & Deployable
- 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 patching —
kill 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.
- 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.
- 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).
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
Containment Runbook
| Phase | Actions | Owner | Evidence |
|---|---|---|---|
| Isolate | Patch appliance; kill all ICA/AAA/PCoIP sessions; if compromise suspected, take the appliance offline or restrict the SAML endpoint to known IPs. | Network / Edge team | Version banner, session-kill confirmation |
| Eradicate | Rotate 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 + IAM | Cert serials, reset log, containment IDs |
| Recover | Restore SAML IDP behind WAF + rate-limit; re-enable services on a validated build; confirm no residual sessions in the AAA table. | Edge + IR | WAF rule IDs, clean AAA session table |
| Post-incident | Enable NetScaler log forwarding + native detections; add CA/device-trust to gateway apps; review DMZ segmentation. | SecEng | SIEM rule IDs, CA policy IDs |
Detection Coverage Map
| Technique | Behavior | CQL | IOA | Coverage |
|---|---|---|---|---|
| T1190 | Malformed SAML overread probe | — | — | GAP (native-log only) |
| T1190 | Inbound from scanning IP | Q1 | — | Partial |
| T1539 | Session/token theft from memory | — | — | GAP (off-sensor) |
| T1550.004 / T1078 | Replayed session on internal apps | Q3 | DMZ-Sourced Logon | Partial |
| T1087/T1016/T1033 | Discovery burst | Q4 | Discovery Burst | Good |
| T1071/T1041 | C2 / exfil to attacker infra | Q2 | — | Partial |
| T1021 | Lateral from DMZ inward | Q5 | DMZ-Sourced Logon | Partial |
| T1543.003 / T1053.005 | Service/task persistence | Q6 | Shell-Backed Service | Good |
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.
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
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 | Accessed |
|---|---|---|---|
| 1 Vendor | Citrix / Cloud Software Group NetScaler security bulletin (30 Jun 2026) | CVE scope, fixed builds, SAML IDP precondition | 2026-07-05 |
| 2 Press | SecurityWeek — New CitrixBleed Vulnerability Exploited Immediately After Public Disclosure | Exploit signature, NSC_TASS leak, source IP, timeline | 2026-07-05 |
| 2 Press | The Hacker News — Citrix Patches Six NetScaler Flaws Allowing File Read and Denial-of-Service | Full CVE batch, fixed versions, CVSS | 2026-07-05 |
| 3 Analytic | CitrixBleed / CitrixBleed 2 historical tradecraft (CVE-2023-4966, CVE-2026-3055) | Session-theft → MFA-bypass replay model for hunt hypotheses | 2026-07-05 |