A NetScaler that leaks bits of its own memory to anyone who says hello with a TCP timestamp
CVE-2026-10817 is an out-of-bounds read (CWE-125) in the NetScaler TCP stack that fires when the appliance processes the TCP Timestamp option (RFC 7323) during connection setup. If a TCP Profile with tcpTimestamp ENABLED is bound to a virtual server (LB, CS, VPN) or a service, an unauthenticated remote attacker can send a crafted timestamp payload and get back chunks of adjacent process memory in responses. Affected builds are NetScaler ADC/Gateway 14.1 before 14.1-72.61, 13.1 before 13.1-63.18, and the FIPS/NDcPP variants 14.1-72.61 FIPS and 13.1-37.272. All 12.1 and 13.0 branches are already EOL and receive no fix.
Vendor rating of HIGH (7.5) — actually 6.9 in some scoring — is *fair, not inflated*. Unlike its sibling CVE-2026-8451 (the CitrixBleed-2 successor patched in the same bulletin CTX696604), this overread terminates when the read hits a NULL byte or > character, so leaks are bounded in length rather than kilobyte-scale. That reduces the odds of pulling a complete session token in a single request — but it does not eliminate it. Session cookies, TLS session state, and config fragments are still recoverable across repeated probes, and NetScaler is exactly the class of edge appliance attackers *do* mine repeatedly.
4 steps from start to impact.
Locate a NetScaler with TCP Timestamp on a public vserver
NSC_*, pwcount). They then probe TCP Timestamp handshake responses — the SYN-ACK's TSecr field confirms whether Timestamp is enabled. Tooling: nmap -O, hping3 --tcp-timestamp, zgrab2 tls.- Target NetScaler ADC 14.1<72.61 or 13.1<63.18
- TCP Profile with tcpTimestamp ENABLED bound to at least one vserver/service
- TCP/443 or the vserver port reachable from attacker network
- Default
nstcp_default_profileships with tcpTimestamp DISABLED — only custom or performance-tuned profiles typically enable it - Many enterprises front NetScaler with a WAF or CDN that normalizes TCP options
product:netscaler returns ~28k appliances; timestamp status is inferable from SYN-ACK captures. No GreyNoise tag as of 2026-07-05.Send malformed TCP Timestamp option to trigger overread
>, each probe returns a variable-length slice of adjacent heap. No public PoC exists yet, but watchTowr Labs demonstrated the CVE-2026-8451 primitive in the same code family — the same fuzzing harness pivots trivially.- Raw socket capability on attacker host to craft TCP options
- Stable TCP handshake to the vserver
- NetScaler drops many malformed TCP option streams before they reach the vulnerable parser
- Rate limiting on new connections in many production tunings
Iterate to reconstruct session material
> terminated), so the attacker replays thousands of probes across varying connection contexts to statistically reconstruct session cookies, in-flight TLS records, or configuration strings. CitrixBleed operators used exactly this pattern; the reduced leak length raises cost but does not defeat it.- Ability to sustain thousands of TCP connections without triggering IPS drops
- Some leaked segment eventually contains a valid
NSC_AAACorNSC_TASSsession token without embedded NULL
- Session tokens frequently contain bytes matching the terminator set → many leaks unusable
- AAA session TTLs on NetScaler are short (default 30 min idle)
newnslog records unusually high SYN-ACK volume per source; Splunk/Elastic dashboards on TCP retransmit ratio will flare.Session hijack into published VPN / ICA resources
- Recovered session token still within TTL
- MFA not re-prompted mid-session (default NetScaler behavior)
- Continuous access evaluation (CAE) / step-up MFA re-prompts on new source IP break the hijack
- Geo-based conditional access blocks foreign session replay
same session cookie, new ASN catch this cleanly — every mature Citrix shop deployed this after CitrixBleed.The supporting signals.
| In-the-wild status | No confirmed exploitation of CVE-2026-10817 as of 2026-07-05. Sibling CVE-2026-8451 (same bulletin) is under active exploitation per Cyberscoop reporting. |
|---|---|
| Public PoC | None specific to -10817. watchTowr Labs published a working primitive for CVE-2026-8451 in the same code family — the harness ports trivially. |
| EPSS | 0.0041 (~40th percentile). Low, but stale — the value predates the watchTowr writeup. |
| KEV status | Not listed. Expect CISA to add if session-token leakage is demonstrated, as with the original CitrixBleed. |
| CVSS vector | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N — pre-auth remote, confidentiality only. Score 7.5 base. |
| Affected versions | NetScaler ADC/Gateway 14.1 < 72.61, 13.1 < 63.18, 14.1 FIPS < 72.61, 13.1 NDcPP/FIPS < 37.272. 12.1 and 13.0 EOL, no fix. |
| Fixed versions | 14.1-72.61, 13.1-63.18, 14.1-72.61 FIPS, 13.1-37.272 FIPS/NDcPP — all released 2026-06-30 in bulletin CTX696604. |
| Exposure telemetry | Shodan: ~28,300 internet-facing NetScaler Gateway login pages. Censys: ~31k. Portion with TCP Timestamp enabled is unmeasured externally but non-default. |
| Disclosed | 2026-06-30 by Cloud Software Group as part of the six-CVE CTX696604 bulletin. |
| Credit | Reported to Cloud Software Group; watchTowr Labs authored the public technical breakdown of the sibling primitive. |
noisgate verdict.
The decisive factor is role multiplier: this is a pre-auth memory overread on an internet-facing VPN gateway / load balancer — the same class of appliance that produced CitrixBleed session-hijack campaigns. Leak length is bounded by NULL/> terminators so the primitive is weaker than CVE-2026-8451, but the target role and reachability keep this firmly in the HIGH bucket.
Why this verdict
- Role multiplier — network edge appliance: NetScaler is a canonical high-value-role component (VPN + reverse proxy + AAA). A pre-auth leak in this role has a documented history of ending in fleet-scale session hijack (CitrixBleed 2023). Verdict floor is HIGH.
- Pre-auth remote, network-reachable: No credentials, no user interaction, direct TCP path to the vserver — every internet-facing NetScaler is reachable to any origin the appliance is meant to serve.
- Bounded leak reduces primitive strength: NULL/
>termination means most session-token candidates are unusable per probe, versus CitrixBleed's kilobyte-scale disclosure. This is the reason we don't push to CRITICAL. - Configuration gate narrows population: Only appliances with
tcpTimestamp ENABLEDin a bound TCP profile are exposed. Default profile has it disabled, but performance-tuned deployments frequently flip it on. - Sibling under active exploitation: CVE-2026-8451 in the same bulletin is being weaponized now; adversary tooling in the code family lowers the cost of pivoting to -10817.
Why not higher?
Not CRITICAL because the overread terminates on common byte values, so single-shot recovery of a complete session token is unreliable — the primitive is materially weaker than CitrixBleed proper. Confidentiality-only impact (I:N, A:N) and no confirmed in-the-wild targeting of this specific CVE also argue against a CRITICAL bump.
Why not lower?
Not MEDIUM because the affected role is a canonical network-edge appliance — the Deployment-Role Blast Radius floor is HIGH for this class of component regardless of individual-primitive friction. Session-token leakage is empirically the endgame here, and enterprises should not wait for a public PoC to appear before treating a NetScaler edge leak as HIGH.
What to do — in priority order.
- Disable TCP Timestamp on all bound TCP profiles until patched — Run
show ns tcpProfileand identify any profile withtcpTimestamp ENABLEDbound to anLB/CS/VPNvserver or service. Setset ns tcpProfile <name> -tcpTimestamp DISABLED. This kills the vulnerable code path entirely with negligible operational impact (Timestamp is a performance option, not a correctness one). Deploy within 30 days per noisgate mitigation SLA for HIGH. - Upgrade to 14.1-72.61 / 13.1-63.18 (or FIPS equivalents) — This is the only durable fix. Stage on HA pair secondary, fail over, validate, then upgrade primary. Complete within 180 days per noisgate remediation SLA — sooner if the sibling CVE-2026-8451 (active exploitation) applies to your build, which it almost certainly does.
- Force AAA session invalidation post-patch — Run
kill aaa session -allafter upgrade to invalidate any session cookies that may have been leaked during the exposure window. Users re-authenticate; this is cheap insurance and matches CISA guidance from the original CitrixBleed IR playbook. - Hunt for anomalous session reuse from new ASN / geo — Query 90 days of NetScaler AAA logs and downstream StoreFront / IdP logs for the same
NSC_AAACor SAML session ID used from more than one source ASN within its TTL. This is the strongest post-hoc indicator of session hijack, whether via -10817 or -8451.
- WAF rules on HTTP layer — the vulnerable parser is in the TCP handshake path, below any HTTP inspection. WAF policies never see the malformed timestamp option.
- Client certificate authentication on the vserver — the overread fires during TCP setup, before TLS negotiation begins. mTLS does not mitigate.
- IP allow-listing on the management interface (NSIP) — this CVE is on the data-plane vservers, not the management plane. Restricting NSIP is good hygiene but irrelevant here.
- Enabling AppFlow / rate limiting alone — reduces exploitation *speed* but not *possibility*; a patient attacker still recovers material within a session TTL.
Crowdsourced verification payload.
Run this on an auditor workstation (any Linux/macOS box with SSH access to the NetScaler NSIP) with read-only nsroot or equivalent credentials. Invoke as ./check-cve-2026-10817.sh <NSIP> <user> — for example ./check-cve-2026-10817.sh 10.20.30.40 nsroot. It SSHes in, reads version and every TCP profile's Timestamp setting, and prints VULNERABLE / PATCHED / UNKNOWN.
#!/usr/bin/env bash
# check-cve-2026-10817.sh — noisgate verification for CVE-2026-10817
# Requires: ssh, awk. Read-only nsroot or delegated read account.
set -u
NSIP="${1:-}"
USER="${2:-nsroot}"
if [[ -z "$NSIP" ]]; then
echo "usage: $0 <NSIP> [user]" >&2
exit 2
fi
# Pull version banner and TCP profile dump in one round trip.
OUT=$(ssh -o StrictHostKeyChecking=accept-new -o ConnectTimeout=10 \
"${USER}@${NSIP}" \
'show ns version; show ns tcpProfile' 2>/dev/null) || {
echo "UNKNOWN: ssh failed to ${NSIP}"; exit 3; }
VER=$(printf '%s' "$OUT" | awk -F'NS' '/NetScaler NS/ {print $2; exit}' | awk '{print $1}')
if [[ -z "$VER" ]]; then echo "UNKNOWN: could not parse version"; exit 3; fi
# Fixed builds: 14.1-72.61, 13.1-63.18, 14.1-72.61-FIPS, 13.1-37.272
is_patched() {
local v="$1"
case "$v" in
14.1-*) awk -v b="${v#14.1-}" 'BEGIN{split(b,a,"."); exit !(a[1]>72 || (a[1]==72 && a[2]>=61))}' ;;
13.1-*) awk -v b="${v#13.1-}" 'BEGIN{split(b,a,"."); exit !(a[1]>63 || (a[1]==63 && a[2]>=18) || (a[1]==37 && a[2]>=272))}' ;;
*) return 2 ;;
esac
}
is_patched "$VER"; PATCH_RC=$?
# Any TCP profile with tcpTimestamp ENABLED is the exposure gate.
TS_ON=$(printf '%s' "$OUT" | awk '/TCPTIMESTAMP: ENABLED|tcpTimestamp: ENABLED/{c++} END{print c+0}')
echo "Version: $VER"
echo "TCP profiles with Timestamp ENABLED: $TS_ON"
if [[ $PATCH_RC -eq 0 ]]; then
echo "PATCHED"; exit 0
fi
if [[ $PATCH_RC -eq 2 ]]; then
echo "UNKNOWN: unrecognized version scheme ($VER)"; exit 3
fi
if [[ $TS_ON -gt 0 ]]; then
echo "VULNERABLE"; exit 1
fi
echo "VULNERABLE (unpatched build; disable TCP Timestamp is a mitigation, not a fix)"
exit 1
If you remember one thing.
show ns tcpProfile on each, and disable tcpTimestamp on any profile bound to a vserver — that closes the exposure window today. Per noisgate mitigation SLA for HIGH, complete that config change fleet-wide within 30 days. Per noisgate remediation SLA for HIGH, upgrade to 14.1-72.61 / 13.1-63.18 (or the FIPS equivalents) within 180 days — but pull that in aggressively because sibling CVE-2026-8451 in the same bulletin is under active exploitation and the same upgrade fixes both. After patching, run kill aaa session -all to invalidate any tokens that may have been leaked during the exposure window, and hunt 90 days of AAA logs for session cookies replayed from new ASNs.Sources
- NVD — CVE-2026-10817
- Cloud Software Group Bulletin CTX696604 (via Kraft Kennedy mirror)
- The Hacker News — Citrix Patches Six NetScaler Flaws
- watchTowr Labs — CitrixBleed To Infinity And Beyond (CVE-2026-8451 sibling primitive)
- CyberScoop — Citrix patches NetScaler flaw with echoes of CitrixBleed
- CCB Belgium — Multiple High Vulnerabilities in Citrix NetScaler
- CSA Singapore Alert AL-2026-082
- GBHackers — NetScaler Memory Overread and DoS Flaws
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.