CitrixBleed 3 — CVE-2026-3055
Executive Summary
CVE-2026-3055 ("CitrixBleed 3") is a critical (CVSS 9.3) out-of-bounds memory read (CWE-125) in Citrix NetScaler ADC and NetScaler Gateway appliances configured as a SAML Identity Provider (IdP). An unauthenticated remote attacker sends a crafted SAML request that triggers a memory overread, leaking sensitive appliance memory — session tokens, cookies, and other authentication artifacts — back in the response. Captured tokens let the attacker replay a valid authenticated session (session hijacking), bypassing MFA, exactly as the original CitrixBleed (CVE-2023-4966) and CitrixBleed 2 (CVE-2025-5777) did.
Citrix patched on 2026-03-23/24. WatchTowr observed active reconnaissance within a week; CISA added it to KEV on 2026-03-31; a Metasploit module landed 2026-03-31; and Fortinet confirmed large-scale active exploitation against internet-facing SAML-IdP NetScaler appliances in early June 2026. Companion CVE-2026-4368 (CVSS 7.7, race condition in Gateway/AAA on build 14.1-66.54) is fixed in the same releases.
Defensive reality: the appliance itself is the leak surface and there are no published atomic IOCs (no attacker IPs, hashes, or domains). The disclosure happens inside encrypted TLS to the appliance, so EDR will not see the overread directly. The hunt is behavioral: it lives in NetScaler/AAA logs (anomalous SAML/AAA traffic, IdP-initiated logins with no matching user session) and — most importantly for Falcon — in the downstream blast radius: hijacked sessions landing on internal hosts from the NetScaler/VPN egress, impossible-travel and new-device authentications, and lateral movement that follows.
Defender priority: Patching alone does NOT evict an attacker who already stole a session token. After upgrading every SAML-IdP NetScaler, you MUST terminate all active sessions (kill aaa session -all, kill icaconnection -all, kill pcoipConnection -all) and force re-authentication — then hunt for sessions that originated before the kill from the appliance's egress.
Source Review & Web Hunter Notes
| Tier | Source | Key Finding | Carry Forward |
|---|---|---|---|
| Vendor | Citrix CTX696300 | CWE-125 memory overread; SAML-IdP precondition; affected/fixed versions; companion CVE-2026-4368; detect config via show authentication samlIdPProfile | Yes |
| Gov | CISA KEV | Added 2026-03-31 — confirmed exploited, federal remediation deadline applies | Yes |
| Vendor TI | Fortinet | Large-scale active exploitation against internet-facing SAML-IdP NetScaler appliances confirmed ~2026-06-02 | Yes |
| Research | Hadrian | Memory overread leaks session tokens / credentials / keys / config; monitor SAML processing errors and SAML requests from unexpected source IPs | Yes |
| Research | threat-modeling.com | Hunt for IdP-initiated logins with no matching user session, unfamiliar source ranges, unauthorized SAML config changes, new local accounts | Yes |
| News | Help Net Security | Patch 2026-03-24; WatchTowr recon 2026-03-30; explicit parallel to CitrixBleed; restrict access via network controls | Partial |
| Ref | NVD CVE-2026-3055 | CVSS v4.0 9.3 AV:N/AC:L/AT:N/PR:N/UI:N; vector confirms unauth network exploitation | Yes |
IOC provenance note: No source published concrete atomic IOCs (IPs, hashes, domains, filenames). WatchTowr released detection scripts and described how IOCs "might look," but no attributable atomic indicators exist. This pack is deliberately behavioral / TTP-driven — no IOCs were invented to pad it.
Hunt Brief & Attack Chain
The exploit is a single unauthenticated request; the damage is everything an attacker does with a stolen, fully-authenticated session. Falcon telemetry begins where the hijacked session touches the network and endpoints behind the gateway.
Hunt hypotheses (highest fidelity first)
| # | Hypothesis | MITRE | Telemetry | Conf |
|---|---|---|---|---|
| H1 | A user session is authenticated from the NetScaler/VPN egress IP but the same user is concurrently logged on from a different geo/device (session token replay) | T1550.004 | UserLogon | High |
| H2 | An internal host receives interactive/remote logons sourced from the NetScaler appliance IP at an anomalous hour or volume after the appliance went unpatched-and-exposed | T1133 / T1078 | UserLogon | High |
| H3 | Post-hijack discovery: a freshly-landed session immediately runs AD/host recon (whoami, net group, nltest, dsquery) within minutes of first logon | T1087 / T1018 | ProcessRollup2 | High |
| H4 | A new local/domain account is created or added to a privileged group shortly after a NetScaler-egress logon | T1136 / T1098 | UserAccountAddedToGroup | Medium |
| H5 | Lateral movement from the first-landed host: remote service / WMI / PsExec-style child processes to additional internal hosts | T1021 / T1570 | ProcessRollup2 | Medium |
| H6 | Outbound connections from the NetScaler management subnet to rare external IPs (recon scanners / exploitation infrastructure probing the appliance) | T1190 | NetworkConnectIP4 | Medium |
| H7 | Credential-access tooling (LSASS access, comsvcs MiniDump) on a host first reached via a NetScaler-egress session | T1003.001 | ProcessRollup2 | Medium |
Attack chain
| Step | Action | Telemetry | Hunt Angle |
|---|---|---|---|
| 1 · Recon | Identify internet-facing NetScaler with SAML IdP enabled | Appliance/web logs (not EDR) | Scanner traffic to SAML endpoints; correlate with H6 |
| 2 · Exploit | Crafted SAML request triggers OOB read; response leaks memory | NetScaler ns.log / AAA logs | SAML parse errors, oversized/anomalous SAML responses |
| 3 · Harvest | Parse leaked memory for valid session tokens / cookies | None on EDR (in-appliance) | Behavioral only — pivot to downstream effect |
| 4 · Replay | Reuse stolen token → fully authenticated session, MFA bypassed | UserLogon (egress IP) | H1/H2 — logon from appliance egress + concurrent/impossible-travel |
| 5 · Discovery | Enumerate AD, hosts, shares from landed session | ProcessRollup2 | H3 — recon process bursts post-logon |
| 6 · Persist/Expand | New accounts, group changes, lateral movement, cred dumping | ProcessRollup2 / UserAccountAddedToGroup | H4/H5/H7 |
Consolidated IOC Table
No atomic IOCs (IPs, hashes, domains, filenames) have been published by any cited source for CVE-2026-3055. The indicators below are configuration / behavioral — the only honest, source-backed indicators for an in-appliance memory-disclosure bug. Atomic-IOC rows are intentionally omitted rather than fabricated.
| Type | Value / Pattern | Confidence | Action | Context |
|---|---|---|---|---|
| Config (vuln) | add authentication samlIdPProfile * present in ns.conf | High | hunt | Exposure precondition — appliance is exploitable (Citrix CTX696300) |
| Version | NetScaler 14.1 < 14.1-66.59 / 13.1 < 13.1-62.23 / FIPS-NDcPP < 13.1-37.262 | High | detect | Unpatched/vulnerable build (Citrix CTX696300 / NVD) |
| Behavior | SAML/AAA logon from NetScaler egress IP with concurrent session for same user elsewhere | Medium | hunt | Session-token replay signal (threat-modeling.com) |
| Behavior | IdP-initiated login with no matching originating user session | Medium | hunt | Hijacked token reuse (threat-modeling.com) |
| Behavior | SAML processing errors / requests to SAML endpoints from unexpected source IP ranges | Medium | hunt | Exploitation attempt artifact (Hadrian) |
| Behavior | Unauthorized SAML config change / new local account on appliance | Medium | hunt | Post-compromise persistence (threat-modeling.com) |
Affected Surface & Telemetry Matrix
| Surface | Required Telemetry | Priority | Gap Risk |
|---|---|---|---|
| NetScaler ADC / Gateway appliance | ns.log / AAA / syslog forwarded to NGSIEM | Critical | High — not EDR-covered; needs syslog ingest |
| Identity (SAML SP / AD / Entra) | UserLogon, federation/sign-in logs | Critical | Medium — depends on IdP log forwarding |
| Windows / server endpoints behind gateway | ProcessRollup2, UserLogon, UserAccountAddedToGroup | High | Low — Falcon-native |
| Internal network egress from appliance | NetworkConnectIP4 | Medium | Medium — appliance IP must be known |
The single most valuable enrichment for this hunt is a list of your NetScaler / VPN egress IP(s). Every CQL below that references egress uses the placeholder 10.20.30.40 — replace it with your appliance's internal source IP(s) before running.
ATT&CK Mapping
| Tactic | Technique | Observed Behavior | Query / Control |
|---|---|---|---|
| Initial Access | T1190 Exploit Public-Facing Application | SAML OOB-read against NetScaler IdP | Q6 · Patch (H1 hardening) |
| Initial Access | T1133 External Remote Services | Authenticated session via stolen token | Q1 / Q2 |
| Defense Evasion | T1550.004 Use Alternate Auth Material: Web Session Cookie | Session-token replay, MFA bypass | Q1 |
| Persistence | T1078 Valid Accounts | Continued use of hijacked identity | Q2 |
| Discovery | T1087 Account Discovery / T1018 Remote System Discovery | Recon burst after landing | Q3 |
| Persistence / Priv Esc | T1136 Create Account / T1098 Account Manipulation | New account or group add post-logon | Q4 |
| Lateral Movement | T1021 Remote Services / T1570 Lateral Tool Transfer | Pivot to additional internal hosts | Q5 |
| Credential Access | T1003.001 LSASS Memory | Credential dumping on landed host | Q7 |
Native Audit-Log Hunts (non-CQL)
Run these directly on the appliance and IdP — they cover the steps Falcon EDR cannot see.
On each NetScaler (CLI)
# Confirm exposure: is SAML IdP configured? show authentication samlIdPProfile # Confirm running build vs fixed (14.1-66.59 / 13.1-62.23 / 13.1-37.262 FIPS-NDcPP) show version # Review for unauthorized config changes / new local users show ns runningConfig | grep -iE "samlIdPProfile|add system user|bind system" # Inspect auth logs for SAML parse errors & anomalous source IPs shell tail -n 5000 /var/log/ns.log | grep -iE "saml|aaad|assertion"
On the SAML SP / IdP (Entra ID / ADFS / Okta)
- Search federated sign-ins for IdP-initiated logins with no matching authentication request (token reuse).
- Flag sign-ins where the source IP is the NetScaler egress but the session shows impossible travel or a new/unmanaged device.
- Alert on MFA-satisfied sessions that never presented an MFA challenge (replayed post-MFA token).
- Review for new app-consent grants, new federation trusts, or new local appliance accounts after 2026-03-23.
CrowdStrike LogScale CQL Hunt Queries
10.20.30.40 with your NetScaler/VPN egress IP(s) wherever it appears. These queries hunt the downstream blast radius of a hijacked session — the appliance overread itself is not in EDR telemetry.Looks for: the same user authenticating from the NetScaler egress IP while also logging on from a different source within the window — the classic signature of a replayed session token. FP: roaming/VPN users, NAT, and shared service accounts; exclude known service accounts and tune the egress IP list.
// HUNT: Concurrent logons from NetScaler egress + another source (session-token replay) // MITRE: T1550.004, T1078 // CONF: high FP: medium COST: medium | REQUIRES: UserLogon // FALSE POSITIVES: roaming users, NAT, shared service accounts // TUNING: maintain RemoteAddressIP4!=/^(known-svc-egress)$/ and exclude service UserName values #event_simpleName=UserLogon | UserName!=/^(DWM-|UMFD-|SYSTEM$|LOCAL SERVICE|NETWORK SERVICE)/i | egress := if(RemoteAddressIP4=="10.20.30.40", "appliance", "other") | groupBy([UserName], function=([collect([egress, RemoteAddressIP4, ComputerName]), count(RemoteAddressIP4, as=srcCount, distinct=true)])) | test(srcCount >= 2) | egress=/appliance/ | table([UserName, srcCount, RemoteAddressIP4, ComputerName, egress], limit=200)
Looks for: internal hosts receiving network/remote-interactive logons whose source is the NetScaler egress IP — the landing point of a hijacked session. Baseline normal gateway logon volume first, then alert on new users/hosts/off-hours. FP: legitimate VPN/ICA users; scope to off-hours or privileged accounts to cut noise.
// HUNT: Remote/interactive logons originating from the NetScaler egress IP // MITRE: T1133, T1078 // CONF: high FP: medium COST: low | REQUIRES: UserLogon // FALSE POSITIVES: legitimate VPN/ICA gateway users // TUNING: restrict to LogonType 10/3 and exclude baselined gateway users #event_simpleName=UserLogon | RemoteAddressIP4="10.20.30.40" | in(LogonType, values=[10, 3]) | UserName!=/\$$/ | groupBy([UserName, ComputerName, LogonType], function=([count(aid, as=hits), min(LogonTime, as=firstSeen)])) | table([UserName, ComputerName, LogonType, hits, firstSeen], limit=200)
Looks for: classic discovery tooling (whoami, net, nltest, dsquery, nltest /dclist, quser) clustered on a host shortly after first logon — what an operator runs minutes after a hijacked session lands. FP: admin scripts and login banners; the multi-tool burst threshold keeps this low.
// HUNT: Discovery command burst (account/host/domain enumeration) // MITRE: T1087, T1018, T1016 // CONF: high FP: low COST: medium | REQUIRES: ProcessRollup2 #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | ImageFileName=/\\(whoami|net1?|nltest|dsquery|quser|systeminfo|tasklist|arp|ipconfig)\.exe$/i | groupBy([ComputerName, UserName], function=([count(ImageFileName, as=tools, distinct=true), collect([ImageFileName, CommandLine])])) | test(tools >= 4) | table([ComputerName, UserName, tools, ImageFileName, CommandLine], limit=200)
Looks for: account creation or addition to a sensitive group via command line (net user /add, net localgroup administrators /add, Add-ADGroupMember) — post-hijack persistence/privilege escalation. FP: legitimate IT provisioning; exclude known admin hosts/accounts and correlate with a recent Q2 hit.
// HUNT: Account creation / privileged group addition via CLI // MITRE: T1136, T1098 // CONF: high FP: medium COST: low | REQUIRES: ProcessRollup2 // FALSE POSITIVES: legitimate IT provisioning workflows // TUNING: exclude sanctioned admin hosts/users and IT automation accounts #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | CommandLine=/(net\s+user\s+\S+\s+.*\/add|net\s+localgroup\s+administrators\s+\S+\s+\/add|Add-ADGroupMember|New-LocalUser)/i | table([ComputerName, UserName, ParentBaseFileName, ImageFileName, CommandLine], limit=200)
Looks for: remote-execution tradecraft (psexec, wmic ... /node:, sc \\host, PsExec, wsmprovhost, scheduled-task creation against a remote host) spawned from a session that landed via the gateway. FP: admin and patch-management tooling; restrict to hosts that appear in a Q2 result and exclude RMM agents.
// HUNT: Lateral movement tooling (remote exec / service install) from landed host // MITRE: T1021, T1570, T1569.002 // CONF: medium FP: medium COST: medium | REQUIRES: ProcessRollup2 // FALSE POSITIVES: legitimate admin / RMM remote-exec tooling // TUNING: scope ComputerName to Q2 landing hosts; exclude sanctioned RMM ParentBaseFileName #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | ImageFileName=/\\(psexec|psexesvc|paexec|wmic|wsmprovhost|winrs)\.exe$/i OR CommandLine=/(\/node:|\\\\[A-Za-z0-9.-]+\\(ADMIN|C)\$|sc\s+\\\\)/i | table([ComputerName, UserName, ParentBaseFileName, ImageFileName, CommandLine], limit=200)
Looks for: rare external destinations contacted by hosts in the NetScaler management subnet — potential exploitation infrastructure or exfil staging. FP: high — update servers, telemetry, CDNs; restrict to the management subnet and exclude known-good destinations / RFC1918, then rank by rarity.
// HUNT: Rare external egress from NetScaler management subnet // MITRE: T1190, T1071 // CONF: medium FP: high COST: medium | REQUIRES: NetworkConnectIP4 // FALSE POSITIVES: update/telemetry/CDN endpoints // TUNING: set the LocalAddressIP4 prefix to your mgmt subnet; exclude allow-listed RemoteAddressIP4 #event_simpleName=NetworkConnectIP4 | ConnectionDirection="1" | LocalAddressIP4=/^10\.20\.30\./ | RemoteAddressIP4!=/^(10\.|172\.(1[6-9]|2[0-9]|3[01])\.|192\.168\.)/ | groupBy([RemoteAddressIP4, RemotePort], function=([count(aid, as=hosts, distinct=true), count(LocalAddressIP4, as=hits)])) | sort(hosts, order=asc) | table([RemoteAddressIP4, RemotePort, hosts, hits], limit=200)
Looks for: LSASS credential theft via comsvcs.dll MiniDump, rundll32 dump, or known dumpers — the standard next step after landing a session and running recon. FP: low; legitimate crash-dump tooling is rare and easily excluded by ParentBaseFileName.
// HUNT: LSASS credential dumping (comsvcs MiniDump / known dumpers) // MITRE: T1003.001 // CONF: high FP: low COST: low | REQUIRES: ProcessRollup2 #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/ | CommandLine=/(comsvcs\.dll.{0,40}MiniDump|rundll32.{0,40}MiniDump|procdump.{0,20}lsass|\bnanodump\b|\bmimikatz\b|sekurlsa)/i | table([ComputerName, UserName, ParentBaseFileName, ImageFileName, CommandLine], limit=200)
CrowdStrike Custom IOA Recommendations
| IOA Name | Pattern | Exclusions | Deployment |
|---|---|---|---|
| NetScaler-Egress Discovery Burst | Process · ImageFileName (nltest|dsquery|net1)\.exe with discovery args, host first reached via gateway | Sanctioned admin hosts, logon scripts | Detect → promote from Q3 after baseline |
| Post-Hijack Account Creation | Process · CommandLine net localgroup administrators .* /add | IT provisioning accounts/hosts | Detect (high severity) from Q4 |
| LSASS MiniDump via comsvcs | Process · CommandLine comsvcs\.dll.*MiniDump | None recommended | Prevent — high confidence (Q7) |
| Gateway-Egress Remote Exec | Process · psexec/wmic /node: from a Q2 landing host | RMM/patch tooling | Detect from Q5 after scoping |
Q1/Q2 are identity-correlation hunts best run as scheduled searches (they need the egress-IP enrichment), not endpoint IOAs. Q7 is the strongest Prevent candidate.
Machine-Readable IOC Appendix
No atomic IOCs are published for CVE-2026-3055, so the Falcon IOC-Management block uses REPLACE_WITH_* placeholders — populate only from confirmed incident evidence. The behavioral, config-audit, and validation blocks are the operative content for this pack.
type,value,action,severity,expiration,description,tags ipv4,REPLACE_WITH_ATTACKER_IP,detect,high,2026-09-25,CitrixBleed3 exploit source (confirm in incident),campaign:CitrixBleed3 ipv4,REPLACE_WITH_C2_IP,detect,high,2026-09-25,CitrixBleed3 post-hijack C2 (confirm in incident),campaign:CitrixBleed3 domain,REPLACE_WITH_C2_DOMAIN,detect,high,2026-09-25,CitrixBleed3 C2 (confirm in incident),campaign:CitrixBleed3 sha256,REPLACE_WITH_TOOL_HASH,prevent,critical,2026-12-25,Post-exploit tooling (confirm in incident),campaign:CitrixBleed3 # NOTE: no atomic IOCs were published for CVE-2026-3055 — do NOT import blank rows.
# CitrixBleed3 (CVE-2026-3055) behavioral indicators # 1. SAML/AAA logon from NetScaler egress IP + concurrent session for same user elsewhere # 2. IdP-initiated login with no matching originating user authentication request # 3. MFA-satisfied federated session that never presented an MFA challenge (replayed token) # 4. Discovery command burst (nltest/dsquery/net/whoami) minutes after a gateway logon # 5. New local/domain account or privileged group add shortly after a gateway-egress logon # 6. SAML processing errors / SAML endpoint hits from unexpected source IP ranges (appliance log)
# Is this appliance exploitable, and is it patched? show authentication samlIdPProfile # any output = vulnerable config present show version # need: 14.1-66.59+ / 13.1-62.23+ / 13.1-37.262+ (FIPS-NDcPP) show ns runningConfig | grep -iE "add system user|bind system global" # rogue local accounts # Vulnerable if SAML IdP configured AND build below the fixed version.
# After upgrading EVERY SAML-IdP NetScaler to a fixed build: kill aaa session -all # invalidate all AAA sessions kill icaconnection -all # terminate ICA sessions kill pcoipConnection -all # terminate PCoIP sessions # Then force re-auth and rotate any secrets that may have been in appliance memory. # Patching WITHOUT this step does not evict an attacker holding a stolen token.
Detection Validation Gates
| Gate | Check | Pass Criteria |
|---|---|---|
| Telemetry ready | NetScaler syslog/ns.log forwarded to NGSIEM; UserLogon & ProcessRollup2 flowing from hosts behind the gateway | Appliance logs visible; EDR events < 5 min latency |
| Enrichment ready | NetScaler/VPN egress IP(s) substituted for 10.20.30.40 in Q1/Q2/Q6 | Real egress IP(s) confirmed and applied |
| Benign baseline | Run Q1/Q2 over a known-clean week; catalog normal gateway users/hosts | FP set documented and excluded |
| Positive test | Q3/Q4/Q7 fire on a lab host running the recon/account/dump commands | Each query returns the seeded activity |
| Promotion | Q7 → Prevent IOA; Q3/Q4 → Detect IOA after baseline | Promoted with documented exclusions |
Hardening — Tiered
- Patch every NetScaler ADC/Gateway to 14.1-66.59+ / 13.1-62.23+ / 13.1-37.262+ (FIPS-NDcPP). Fixes both CVE-2026-3055 and CVE-2026-4368. (Citrix CTX696300 · MITRE M1051)
- Terminate all active sessions after patching —
kill aaa session -all,kill icaconnection -all,kill pcoipConnection -all— then force re-authentication. (MITRE M1018 · CitrixBleed remediation parallel) - Audit for compromise indicators — rogue local appliance accounts, unauthorized SAML config changes, IdP-initiated logins without matching sessions. (MITRE M1047)
- Restrict management/SAML exposure — limit access to the SAML IdP endpoints and NSIP/management plane to required networks via network ACLs / responder policies. (MITRE M1030 · Help Net Security guidance)
- Bind a WAF / responder policy in front of the SAML endpoints to drop malformed/oversized SAML requests while monitoring for exploitation attempts. (MITRE M1050 · ⚠ best-practice, no formal benchmark)
- Shorten session lifetimes and bind sessions to client attributes where supported, to reduce the value/longevity of any leaked token. (MITRE M1018)
- Phishing-resistant / token-binding MFA (FIDO2, certificate-bound tokens) so a replayed bearer token alone cannot complete authentication. (MITRE M1032)
- Front internet-facing gateways with an identity-aware proxy / ZTNA and remove direct internet exposure of the appliance management plane. (MITRE M1035 · NIST SP 800-207)
- Continuous appliance config & version monitoring with alerting on SAML-IdP config drift and out-of-date builds. (MITRE M1047)
Deployable Playbooks
Playbook A — Patch & evict (NetScaler CLI)
# 1. Confirm exposure and current build show authentication samlIdPProfile show version # 2. Upgrade to a fixed build (per Citrix upgrade procedure for your platform) # Target: 14.1-66.59+ | 13.1-62.23+ | 13.1-37.262+ (FIPS-NDcPP) # 3. After upgrade — invalidate every session an attacker may already hold kill aaa session -all kill icaconnection -all kill pcoipConnection -all # 4. Force credential reset for any account that may have been hijacked, # and rotate appliance secrets (SAML signing certs, service-account creds).
Playbook B — Restrict SAML/management exposure (responder + ACL)
# Limit management-plane (NSIP) reachability to admin networks only add ns acl restrict_mgmt DENY -destIP = <NSIP> -srcIP != 10.0.0.0-10.0.0.255 -priority 10 apply ns acls # Drop malformed/oversized SAML POSTs at the responder layer (illustrative; # validate the expression against your traffic before enforcing) add responder action drop_bad_saml drop add responder policy block_oversized_saml "HTTP.REQ.URL.CONTAINS(\"/saml\") && HTTP.REQ.CONTENT_LENGTH.GT(65536)" drop_bad_saml bind responder global block_oversized_saml 100 END -type REQUEST
Playbook C — Identity-side response (IdP / Entra)
# Revoke refresh/session tokens for any user seen in Q1/Q2 from the gateway egress # Entra example: Revoke-MgUserSignInSession -UserId <upn> # Require re-registration of MFA for affected users; review and remove # any new app-consent grants, federation trusts, or appliance-local accounts # created after 2026-03-23.
Containment Runbook
| Phase | Actions | Owner | Evidence |
|---|---|---|---|
| Isolate | Restrict appliance management/SAML exposure; network-contain any host flagged by Q2/Q3 via Falcon RTR | Network / SOC | ACL change record; containment event |
| Eradicate | Patch all appliances; kill aaa/ica/pcoip session -all; revoke IdP tokens; remove rogue accounts/group adds (Q4) | Platform / IAM | Build version; kill output; account-removal log |
| Recover | Force re-auth, rotate appliance secrets & affected creds, re-enable access; confirm Q1/Q2 quiet | IAM / SOC | Secret-rotation record; clean re-run of Q1/Q2 |
| Monitor | Run Q1–Q7 as scheduled searches for 30 days; watch for re-entry from new egress | SOC | Scheduled-search results |
Detection Coverage Map
| Technique | Behavior | CQL | IOA | Coverage |
|---|---|---|---|---|
| T1190 Exploit Public-Facing App | SAML overread against appliance | — | — | GAP — not in EDR; appliance-log/syslog only |
| T1550.004 Session token replay | Concurrent logon, appliance egress | Q1 | Sched. search | Partial — needs egress-IP + IdP logs |
| T1133 / T1078 Valid Accounts | Logon from appliance egress | Q2 | Sched. search | Good |
| T1087 / T1018 Discovery | Recon burst post-landing | Q3 | Detect | Good |
| T1136 / T1098 Account creation | New acct / group add | Q4 | Detect | Good |
| T1021 / T1570 Lateral movement | Remote exec from landed host | Q5 | Detect | Partial — scope to landing hosts |
| T1190 / T1071 C2 / exploit infra | Rare egress from mgmt subnet | Q6 | — | Partial — high FP, rarity-ranked |
| T1003.001 Credential dumping | LSASS MiniDump | Q7 | Prevent | Good |
Known gap: The exploitation event itself (the SAML memory overread) is invisible to Falcon EDR — it occurs inside the appliance over TLS. Close this gap by forwarding NetScaler ns.log/AAA/syslog into NGSIEM and alerting on SAML parse errors and anomalous SAML-endpoint sources (Native Hunts, §7). Validation gates for all CQL are in §11.
Hunt Summary Ticket
TITLE: CitrixBleed 3 (CVE-2026-3055) — NetScaler SAML IdP memory overread → session hijack
SEVERITY: CRITICAL (CVSS 9.3 · CISA KEV · exploited in the wild)
SCOPE: All internet-facing NetScaler ADC/Gateway with SAML IdP; all hosts/identities behind them
HYPOTHESIS: Stolen session tokens from the appliance overread are being replayed to land
authenticated sessions, followed by discovery, account creation, lateral movement,
and credential dumping behind the gateway.
QUERIES: Q1 token-replay · Q2 egress logon · Q3 discovery burst · Q4 account creation ·
Q5 lateral movement · Q6 mgmt-subnet egress · Q7 LSASS dump
DO FIRST: 1) show authentication samlIdPProfile + show version on every appliance
2) Patch to fixed build; then kill aaa/ica/pcoip session -all; force re-auth
3) Substitute real NetScaler egress IP into Q1/Q2/Q6 and run
FINDINGS: <record concurrent-logon / egress-logon hits and any post-landing activity>
GAPS: Appliance overread not visible in EDR — requires ns.log/AAA syslog into NGSIEM.
No atomic IOCs published; hunt is behavioral.
ACTIONS: Patch + session kill + token revoke + rogue-account removal + 30-day scheduled hunt
OWNER: HuntPack
VERSION: v0.1 · 2026-06-25
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 |
|---|---|---|---|
| Vendor | Citrix CTX696300 | CVE detail, versions, SAML precondition, companion CVE | 2026-06-25 |
| Gov | NVD CVE-2026-3055 | CVSS 9.3 vector, CWE-125 | 2026-06-25 |
| Research | Hadrian — Memory overread analysis | Leak content, detection guidance | 2026-06-25 |
| Research | threat-modeling.com — SAML IdP | Behavioral hunt angles, exploitation timeline | 2026-06-25 |
| News | Help Net Security | Patch date, KEV, recon, CitrixBleed parallel | 2026-06-25 |
Generated 2026-06-25 · HuntPack pipeline (web-hunter-v2 → threat-hunter-v2 → crowdstrike-logscale-v2 → alert-builder-v2 → threat-hardening-v2 → review-v2) · Defensive content only.