Posts

NetScaler's Run of CVEs: What's Happened and What to Do Now

citrixnetscalersecuritypowershell

If you run NetScaler ADC or Gateway, 2026 has been exhausting. Six NetScaler vulnerabilities have been added to CISA’s Known Exploited Vulnerabilities list so far this year, two of them exploited before Citrix had a fix. The most recent was added on 4 October, and on 27 October Citrix released another critical fix, this time for flaws in the PHP component that runs the management interface.

This isn’t new. NetScaler has a long history of flaws attackers move on quickly: CVE-2019-19781 in 2019, CVE-2022-27518 in 2022, CVE-2023-3519 and CitrixBleed (CVE-2023-4966) in 2023, and CitrixBleed 2 (CVE-2025-5777), CVE-2025-6543 and CVE-2025-7775 in 2025. But the pace has picked up.

2026 so far

Timeline of six NetScaler flaws exploited in 2026: CVE-2026-3055 added to CISA's list 7 days after its fix in March; CVE-2026-8452 57 days after its June fix; CVE-2026-19490 21 days after its August fix; CVE-2026-88771 and CVE-2026-88772 exploited as zero-days on 27 September; CVE-2026-88779 added on 4 October.

CVE What it is Applies when Fixed in
CVE-2026-3055 Memory overread Configured as a SAML IdP 14.1-66.59, 13.1-62.23
CVE-2026-8452 Heap overflow; public exploit showed RCE Gateway or AAA with SAML 14.1-72.61, 13.1-63.18
CVE-2026-19490 Authentication bypass Gateway or AAA vserver (SAML on newer builds) 14.1-73.32, 13.1-63.21
CVE-2026-88771 Unauthenticated RCE (zero-day) All deployments, default configuration 14.1-73.37, 13.1-64.23
CVE-2026-88772 Memory overflow, RCE (zero-day) DTLS enabled, the default on VPN vservers 14.1-73.37, 13.1-64.23
CVE-2026-88779 Memory overflow; attacks crash appliances SAML with Gateway or AAA 14.1-73.41, 13.1-64.28

FIPS and NDcPP builds have their own fixed versions; check the Citrix bulletin for each.

Latest: PHP fixes on 27 October

On 27 October 2026, Citrix released fixed builds for two critical PHP vulnerabilities, CVE-2026-109618 and CVE-2026-109619 (bulletin CTX697263, first published 22 October). They’re flaws in PHP itself, sometimes called “php2shell”:

  • CVE-2026-109618: remote code execution through memory corruption when PHP runs out of memory
  • CVE-2026-109619: remote code execution through stale state left over from an earlier request

Both are rated critical (CVSS 9.2) and allow unauthenticated remote code execution. CISA added both to its exploited list on 26 October, based on attacks against PHP in general.

What it means for NetScaler: on NetScaler, PHP runs behind the management GUI. That makes the NSIP, any SNIP with management access enabled and the cluster IP the exposed surfaces; Gateway and AAA virtual servers aren’t the way in. Citrix-managed cloud services have already been fixed, and NetScaler Console isn’t affected.

Branch Fixed in
NetScaler ADC and Gateway 14.1 14.1-73.49 and later
NetScaler ADC and Gateway 13.1 13.1-64.32 and later
NetScaler ADC 14.1-FIPS 14.1-73.49 FIPS and later
NetScaler ADC 13.1-FIPS and 13.1-NDcPP 13.1-37.286 and later

These builds also include the earlier 2026 fixes, including the 8 October fix for CVE-2026-107406 (a SAML flaw with no reported exploitation), so they’re the builds to aim for. Until you can upgrade, restrict GUI and API access to trusted admin hosts with ACLs. Don’t use the PHP version to check whether you’re fixed; go by the NetScaler build number.

The pattern

  • The gateway is the target. Almost every one of these needs a Gateway or AAA virtual server, which is exactly what’s on the internet.
  • SAML keeps coming up. Four of the six involve SAML. If you don’t use it on a NetScaler, don’t configure it.
  • Patching isn’t the end. Mandiant’s write-up of the September zero-days describes web shells, a root backdoor, a tunnelling tool into the internal network and credential theft. A patched appliance can still be compromised.
  • The management interface is a target too. The October PHP flaws reach the management GUI, not the gateway. A management interface on the internet turns an admin-side bug into an internet-facing one.
  • Old branches fall behind. The 13.1 branch reached End of Maintenance on 15 September 2026. Plan your move to 14.1 now.
  • Citrix-managed services are patched for you. The bulletins only apply to customer-managed NetScalers. The Citrix Gateway service used with DaaS is patched by Citrix.

What to do now

  1. Get to the latest build. At the time of writing that’s 14.1-73.49 or 13.1-64.32 or later, which covers everything in this post, including the October PHP fixes. If you’re on an older branch, move to 14.1.
  2. If an appliance was exposed and unpatched, assume compromise. Preserve evidence first (a VM snapshot with memory, logs and a support bundle), then run Citrix’s IOC scanner and hunt using the published indicators.
  3. Kill existing sessions after upgrading. Stolen session tokens survive a patch. See the commands below.
  4. Rotate credentials. Admin accounts, LDAP bind accounts, RADIUS secrets, certificates and keys, and passwords for users who signed in through a compromised appliance.
  5. Shrink the attack surface. Keep management interfaces (NSIP, SSH, the GUI and NITRO API) off the internet. Turn off SAML, DTLS and other features you don’t use.
  6. Send the logs somewhere. NetScaler doesn’t forward the useful logs by default. Send ns.log, /var/log/messages and HTTP logs to your SIEM, and alert on NSPPE crashes and new core files.
  7. Consider whether you still need it. For HDX-only access with Citrix DaaS, the Gateway service moves the patching to Citrix.

What Citrix recommends

If you’re running an affected version of NetScaler ADC or NetScaler Gateway, Citrix strongly urges you to install the updated versions as soon as possible. Citrix also strongly recommends that you subscribe to alerts, so you’re told whenever a NetScaler security bulletin is created or changed.

To reduce risk and be better prepared, organisations should:

  • Stay on a supported NetScaler release and apply security updates promptly.
  • Review deployments against the NetScaler Secure Deployment Guide and current security advisories.
  • Make sure management interfaces aren’t exposed to the internet and that administrative access is tightly controlled.
  • Keep a tested process for assessing exposure, reviewing indicators of compromise and recovering services if needed.

Resources

From the field: which build is each NetScaler on?

This PowerShell 7 script asks each appliance for its version through the NITRO API and flags anything below the latest fixed build. Use a read-only NetScaler account.

$appliances = 'ns01.contoso.local', 'ns02.contoso.local'
$cred       = Get-Credential   # read-only NetScaler account
$minimum    = @{ '14.1' = [version]'73.49'; '13.1' = [version]'64.32' }

foreach ($ns in $appliances) {
    $headers = @{
        'X-NITRO-USER' = $cred.UserName
        'X-NITRO-PASS' = $cred.GetNetworkCredential().Password
    }
    $v = (Invoke-RestMethod "https://$ns/nitro/v1/config/nsversion" -Headers $headers -SkipCertificateCheck).nsversion.version

    if ($v -match 'NS(\d+\.\d+): Build (\d+\.\d+)') {
        $branch = $Matches[1]; $build = [version]$Matches[2]
        [pscustomobject]@{
            Appliance = $ns
            Branch    = $branch
            Build     = $build
            Status    = if (-not $minimum[$branch]) { 'Unsupported branch: upgrade to 14.1' }
                        elseif ($build -lt $minimum[$branch]) { 'Needs patching' }
                        else { 'OK' }
        }
    }
}

-SkipCertificateCheck is only there for appliances with self-signed management certificates; remove it if yours are trusted. FIPS builds use different numbers, so check those against the bulletin by hand.

After upgrading, end every existing session from the NetScaler CLI, so stolen session tokens stop working:

kill icaconnection -all
kill rdp connection -all
kill pcoipConnection -all
kill aaa session -all
clear lb persistentSessions

Quick hunting checks from the appliance shell, taken from Mandiant’s September write-up:

# Unexpected PHP handlers or aliases in httpd.conf
grep -En -i "application/x-httpd-php|php_flag|AliasMatch" /etc/httpd.conf

# The shell should be -rwxr-xr-x, not -rwsr-xr-x
ls -l /bin/sh

Anything unexpected means treating the appliance as compromised: isolate it, preserve evidence and rebuild.

Bottom line

NetScaler is a high-value target because it sits on the internet, in front of everything, and holds sessions and credentials. Patch fast, kill sessions, hunt rather than assume, and switch off what you don’t use. And if a Citrix-managed gateway would do the job, let Citrix carry the patching.

Sources