Citrix hat am 27. September 2026 das Sicherheitsbulletin CTX697096 veröffentlicht. Es beschreibt acht Schwachstellen in NetScaler ADC und NetScaler Gateway. Für CVE-2026-88771 und CVE-2026-88772 hat Citrix Angriffe auf ungepatchte Systeme beobachtet.
Betroffen sind die unterstützten Zweige 13.1 und 14.1 unterhalb der neuen Zielbuilds. Das schließt die Stände aus dem August ein, also 14.1-73.32 und 13.1-63.21.
Dieser Beitrag fasst die acht Schwachstellen mit ihren Voraussetzungen zusammen und liefert ein PowerShell-Skript, das jede Appliance je CVE bewertet und den nächsten Schritt nennt.
Die acht Schwachstellen
| CVE | CVSS 4.0 | Art | Voraussetzung laut Bulletin |
|---|---|---|---|
| CVE-2026-88771 | 9.5 | Codeausführung ohne Anmeldung, wird ausgenutzt | jede Appliance, auch in der Standardkonfiguration |
| CVE-2026-88772 | 9.5 | Speicherüberlauf, Codeausführung oder Dienstausfall, wird ausgenutzt | DTLS aktiv. Auf VPN-vServern ist DTLS Standard |
| CVE-2026-88773 | 9.3 | HTTP Request Smuggling | HTTP-Konfiguration |
| CVE-2026-88774 | 7.0 | Umgehung von Richtlinien | Richtlinienausdruck mit HTTP-URL, etwa HTTP.REQ.URL |
| CVE-2026-88775 | 8.8 | Speicherüberlauf, Dienstausfall | Gateway (SSL VPN, ICA Proxy, CVPN, RDP Proxy) oder AAA-vServer |
| CVE-2026-88776 | 8.8 | Speicherüberlauf, Dienstausfall | LB-vServer vom Typ Oracle |
| CVE-2026-88777 | 8.8 | Speicherüberlauf, Dienstausfall | LB, CS, CGNAT/LSN oder NAT64 mit Nicht-HTTP-Protokoll auf Schicht 7 |
| CVE-2026-88778 | 8.8 | TCP-Sequenznummern vorhersagbar | TCP-Konfiguration. Abhilfe: Build und Enhanced ISN Generation |
Behobene Builds
| Zweig | Behoben ab |
|---|---|
| 14.1 | 14.1-73.37 |
| 13.1 | 13.1-64.23 |
| 14.1-FIPS | 14.1-73.37 FIPS |
| 13.1-FIPS / NDcPP | 13.1-37.279 |
Diese Builds enthalten auch die Korrekturen aus den Bulletins vom März (CTX696300) und August (CTX696939), da sie im selben Zweig liegen und höher nummeriert sind. Für 12.1 und 13.0 gibt es keine Wartung mehr und damit keinen behobenen Build. Hier ist der Wechsel auf 13.1 oder 14.1 der Weg.
Maßgeblich sind die Nummern aus dem Bulletin. In einzelnen Meldungen kursierten am 27.09. abweichende Angaben, etwa 14.1-37.73.
Prüfen mit PowerShell
Das Skript beantwortet für jede Appliance und jede der acht CVEs zwei Fragen: Ist der Build verwundbar, und ist die Voraussetzung in der Konfiguration erfüllt? Daraus ergibt sich ein Status mit Begründung und nächstem Schritt.
Was wird gemacht? über NITRO die Version, die laufende Konfiguration und die TCP-Parameter. Es ändert nichts auf der Appliance.
Voraussetzung:
- Windows PowerShell 5.1 oder PowerShell 7, keine zusätzlichen Module
- HTTPS-Zugriff auf die Verwaltungsadresse, angesprochen über den FQDN, damit das Zertifikat regulär geprüft werden kann
- ein Konto mit Leserechten
Aufruf:
# Online gegen eine oder mehrere Appliances
.\Test-NetScalerCTX697096.ps1 -Appliance adc01.firma.local, adc02.firma.local |
Format-Table Appliance, CVE, Status, Grund, Hilfe -AutoSize -Wrap
# Als Bericht
.\Test-NetScalerCTX697096.ps1 -Appliance adc01.firma.local |
Export-Csv .\CTX697096.csv -NoTypeInformation -Encoding UTF8
# Offline gegen eine gesicherte ns.conf, ohne Verbindung
.\Test-NetScalerCTX697096.ps1 -NsConf .\ns.conf -Version 'NS14.1: Build 73.32.nc'
# FIPS-Appliances mit -Fips, dann gelten die FIPS-Zielbuilds
.\Test-NetScalerCTX697096.ps1 -Appliance adc-fips01.firma.local -Fips
Die Statuswerte:
| Status | Bedeutung |
|---|---|
BETROFFEN |
Build verwundbar und Voraussetzung erfüllt |
PRUEFEN |
Voraussetzung maschinell nicht eindeutig bestimmbar, kurzer Blick nötig |
NICHT ERFUELLT |
Build verwundbar, Voraussetzung in der Konfiguration nicht gefunden |
BEHOBEN |
Build behoben. Bei CVE-2026-88778 zusätzlich Enhanced ISN Generation aktiv |
NICHT ERFUELLT bedeutet: Diese eine Lücke ist über die aktuelle Konfiguration nicht erreichbar. Das Upgrade bleibt trotzdem nötig, denn CVE-2026-88771 setzt keine Konfiguration voraus.
Das Skript
<#
.SYNOPSIS
Prueft NetScaler ADC / Gateway gegen CTX697096 (CVE-2026-88771 bis CVE-2026-88778).
.DESCRIPTION
Liest ausschliesslich, aendert nichts. Je Appliance und je CVE ein Ergebnis mit
Status, Grund und naechstem Schritt.
Online: Anmeldung per NITRO ueber HTTPS und FQDN, das Zertifikat wird regulaer
geprueft. Gelesen werden Version, laufende Konfiguration und TCP-Parameter.
Offline: Auswertung einer gesicherten ns.conf plus Versionsangabe, ohne Verbindung.
Status:
BETROFFEN Build verwundbar und Voraussetzung erfuellt
PRUEFEN Voraussetzung nicht eindeutig maschinell bestimmbar
NICHT ERFUELLT Build verwundbar, Voraussetzung in der Konfiguration nicht gefunden
BEHOBEN Build behoben (bei CVE-2026-88778 zusaetzlich Enhanced ISN aktiv)
Stand der Zielbuilds: CTX697096 vom 27.09.2026.
.EXAMPLE
.\Test-NetScalerCTX697096.ps1 -Appliance adc01.firma.local, adc02.firma.local |
Format-Table Appliance, CVE, Status, Grund -AutoSize -Wrap
.EXAMPLE
.\Test-NetScalerCTX697096.ps1 -NsConf .\ns.conf -Version 'NS14.1: Build 73.32.nc'
#>
[CmdletBinding(DefaultParameterSetName = 'Online')]
param(
[Parameter(Mandatory, ParameterSetName = 'Online')]
[string[]]$Appliance,
[Parameter(ParameterSetName = 'Online')]
[pscredential]$Credential,
[Parameter(Mandatory, ParameterSetName = 'Offline')]
[string]$NsConf,
[Parameter(Mandatory, ParameterSetName = 'Offline')]
[string]$Version,
[switch]$Fips
)
# Zielbuilds laut CTX697096
$Ziel = @{
'14.1' = @(73, 37)
'13.1' = @(64, 23)
'14.1-FIPS' = @(73, 37)
'13.1-FIPS' = @(37, 279)
}
# Lastverteilungstypen, die weder HTTP noch reines TCP/UDP sind (CVE-2026-88777).
# Die Liste ist eine Naeherung, daher nur Status PRUEFEN.
$NichtHttpL7 = @('DNS', 'DNS_TCP', 'MSSQL', 'MYSQL', 'RADIUS', 'DIAMETER', 'SSL_DIAMETER',
'SIP_UDP', 'SIP_TCP', 'SIP_SSL', 'RTSP', 'SMPP', 'MQTT', 'MQTT_TLS',
'FTP', 'TFTP', 'RDP', 'SYSLOGTCP', 'SYSLOGUDP', 'USER_TCP', 'USER_SSL_TCP')
$Name = '("[^"]+"|\S+)' # Objektname, auch in Anfuehrungszeichen
function ConvertTo-NsBuild {
param([string]$Text, [switch]$Fips)
# 'NetScaler NS14.1: Build 72.61.nc, Date: ...' -> Zweig 14.1, Build 72.61
if ($Text -notmatch 'NS(\d+\.\d+)\s*:\s*Build\s*(\d+)\.(\d+)') {
throw "Version nicht lesbar: $Text"
}
$zweig = $Matches[1]
[pscustomobject]@{
Zweig = $zweig
Schluessel = if ($Fips) { "$zweig-FIPS" } else { $zweig }
Major = [int]$Matches[2]
Minor = [int]$Matches[3]
Text = "$zweig-$($Matches[2]).$($Matches[3])"
}
}
function Get-NsBefund {
param([string]$Konfiguration)
$b = [ordered]@{ Vpn = @(); VpnDtls = @(); LbDtls = @(); Aaa = @(); Http = @()
Oracle = @(); NichtHttp = @(); Lsn = @(); UrlAusdruck = @(); Tcp = @() }
foreach ($zeile in ($Konfiguration -split "\r?\n")) {
if ($zeile -match "^add vpn vserver $Name (\S+)") {
$b.Vpn += $Matches[1]
# DTLS ist auf VPN-vServern Standard. In der ns.conf steht nur die Abweichung.
if ($zeile -notmatch '-dtls OFF') { $b.VpnDtls += $Matches[1] }
$b.Http += $Matches[1]; $b.Tcp += $Matches[1]
}
elseif ($zeile -match "^add authentication vserver $Name") {
$b.Aaa += $Matches[1]; $b.Http += $Matches[1]; $b.Tcp += $Matches[1]
}
elseif ($zeile -match "^add (lb|cs) vserver $Name (\S+)") {
$art, $vs, $typ = $Matches[1], $Matches[2], $Matches[3].ToUpper()
if ($typ -in 'HTTP', 'SSL') { $b.Http += $vs }
if ($typ -eq 'DTLS') { $b.LbDtls += $vs }
if ($typ -eq 'ORACLE') { $b.Oracle += $vs }
if ($typ -in $NichtHttpL7) { $b.NichtHttp += "$vs ($typ)" }
if ($typ -notin 'UDP', 'DNS', 'SIP_UDP', 'RADIUS', 'TFTP', 'SYSLOGUDP', 'DTLS') { $b.Tcp += $vs }
}
elseif ($zeile -match '^add (lsn group|nat64)\s') {
$b.Lsn += ($zeile -split '\s+')[0..3] -join ' '
}
# Jede Richtlinie, Aktion oder benannte Expression mit URL-Ausdruck (CVE-2026-88774)
if ($zeile -match '^add ' -and $zeile -match 'HTTP\.REQ\.URL') {
$b.UrlAusdruck += ($zeile -split '\s+')[1..3] -join ' '
}
}
[pscustomobject]$b
}
function Get-CveBewertung {
param($Build, $Befund, [string]$Isn, [string]$Appliance)
$wartung = $Ziel.ContainsKey($Build.Schluessel)
if ($wartung) {
$z = $Ziel[$Build.Schluessel]
# Numerisch, Segment fuer Segment. Als Text waere 73.5 groesser als 73.37.
$behoben = ($Build.Major -gt $z[0]) -or ($Build.Major -eq $z[0] -and $Build.Minor -ge $z[1])
$zielText = "$($Build.Zweig)-$($z[0]).$($z[1])"
$upgrade = "Upgrade auf $zielText oder neuer"
}
else {
$behoben = $false
$zielText = '-'
$upgrade = "Zweig $($Build.Zweig) ohne Wartung: Wechsel auf 13.1 oder 14.1"
}
$isnAn = $Isn -match 'ENABLED|^1$|true'
function Liste($x) { if ($x.Count -gt 3) { ($x[0..2] -join ', ') + " und $($x.Count - 3) weitere" } else { $x -join ', ' } }
function Eintrag($cve, $cvss, $erfuellt, $grund, $hilfe, [switch]$Unsicher) {
$status = if ($behoben) { 'BEHOBEN' }
elseif ($Unsicher -and $erfuellt) { 'PRUEFEN' }
elseif ($erfuellt) { 'BETROFFEN' }
else { 'NICHT ERFUELLT' }
if ($behoben) { $hilfe = '-' }
elseif (-not $erfuellt) { $hilfe = "$upgrade (Build ist verwundbar)" }
[pscustomobject]@{ Appliance = $Appliance; Build = $Build.Text; Ziel = $zielText
CVE = $cve; CVSS = $cvss; Status = $status; Grund = $grund; Hilfe = $hilfe }
}
$dtls = @($Befund.VpnDtls) + @($Befund.LbDtls)
Eintrag 'CVE-2026-88771' 9.5 $true 'jede Appliance, keine Voraussetzung. Wird ausgenutzt' "$upgrade. Vorrangig"
Eintrag 'CVE-2026-88772' 9.5 ($dtls.Count -gt 0) $(if ($dtls) { "DTLS aktiv: $(Liste $dtls). Wird ausgenutzt" } else { 'kein vServer mit DTLS' }) `
"$upgrade. Vorrangig. Bis dahin DTLS abschalten, wo nicht benoetigt"
Eintrag 'CVE-2026-88773' 9.3 ($Befund.Http.Count -gt 0) $(if ($Befund.Http) { "HTTP/SSL-vServer: $(Liste $Befund.Http)" } else { 'kein HTTP-vServer' }) $upgrade
# Die mitgelieferten Cache-Richtlinien ctx_* nutzen HTTP.REQ.URL auf jeder Appliance
$eigene = @($Befund.UrlAusdruck | Where-Object { $_ -notmatch '^cache policy ctx_' })
$mitgeliefert = @($Befund.UrlAusdruck).Count - $eigene.Count
if ($eigene.Count -gt 0) {
Eintrag 'CVE-2026-88774' 7.0 $true "HTTP.REQ.URL in: $(Liste $eigene)" $upgrade
}
elseif ($mitgeliefert -gt 0) {
Eintrag 'CVE-2026-88774' 7.0 $true "nur in $mitgeliefert mitgelieferten Cache-Richtlinien ctx_*. Gegen Bulletin abgleichen" $upgrade -Unsicher
}
else {
Eintrag 'CVE-2026-88774' 7.0 $false 'keine Richtlinie mit HTTP.REQ.URL' $upgrade
}
Eintrag 'CVE-2026-88775' 8.8 (($Befund.Vpn.Count + $Befund.Aaa.Count) -gt 0) $(if ($Befund.Vpn -or $Befund.Aaa) { "Gateway/AAA: $(Liste (@($Befund.Vpn) + @($Befund.Aaa)))" } else { 'kein Gateway- oder AAA-vServer' }) $upgrade
Eintrag 'CVE-2026-88776' 8.8 ($Befund.Oracle.Count -gt 0) $(if ($Befund.Oracle) { "LB-vServer ORACLE: $(Liste $Befund.Oracle)" } else { 'kein LB-vServer vom Typ ORACLE' }) $upgrade
$l7 = @($Befund.NichtHttp) + @($Befund.Lsn)
Eintrag 'CVE-2026-88777' 8.8 ($l7.Count -gt 0) $(if ($l7) { "Nicht-HTTP-L7 oder LSN/NAT64: $(Liste $l7). Gegen Bulletin abgleichen" } else { 'kein Nicht-HTTP-L7-vServer, kein LSN/NAT64' }) $upgrade -Unsicher
# CVE-2026-88778: Build UND Enhanced ISN Generation
$isnText = if ($Isn) { "Enhanced ISN Generation: $Isn" } else { 'Enhanced ISN Generation nicht in der ns.conf, Standard ist DISABLED. show ns tcpparam pruefen' }
$isnText += if ($behoben) { '. Build behoben' } else { '. Build verwundbar' }
$status = if ($behoben -and $isnAn) { 'BEHOBEN' } elseif ($Befund.Tcp.Count -eq 0) { 'PRUEFEN' } elseif (-not $Isn) { 'PRUEFEN' } else { 'BETROFFEN' }
$hilfe = @()
if (-not $behoben) { $hilfe += $upgrade }
if (-not $isnAn) { $hilfe += 'Enhanced ISN Generation aktivieren (TCP-Parameter, siehe CTX697096)' }
[pscustomobject]@{ Appliance = $Appliance; Build = $Build.Text; Ziel = $zielText
CVE = 'CVE-2026-88778'; CVSS = 8.8; Status = $status
Grund = "$isnText. TCP-vServer: $($Befund.Tcp.Count)"
Hilfe = if ($hilfe) { $hilfe -join '; ' } else { '-' } }
}
# ------------------------------------------------------------------ Offline
if ($PSCmdlet.ParameterSetName -eq 'Offline') {
$text = Get-Content -Path $NsConf -Raw
$build = ConvertTo-NsBuild -Text $Version -Fips:$Fips
$isn = if ($text -match '(?im)^set ns tcpParam.*-\w*isn\w*\s+(\S+)') { $Matches[1] } else { '' }
Get-CveBewertung -Build $build -Befund (Get-NsBefund $text) -Isn $isn -Appliance (Split-Path $NsConf -Leaf)
return
}
# ------------------------------------------------------------------ Online
if (-not $Credential) { $Credential = Get-Credential -Message 'NetScaler-Anmeldung (Leserechte genuegen)' }
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 # fuer PowerShell 5.1
foreach ($fqdn in $Appliance) {
$basis = "https://$fqdn".TrimEnd('/') + '/nitro/v1/config' # ohne doppelten Schraegstrich
$sitzung = $null
try {
$rumpf = @{ login = @{
username = $Credential.UserName.Split('\')[-1] # ohne Domaenenanteil
password = $Credential.GetNetworkCredential().Password
} } | ConvertTo-Json -Depth 3 # reines JSON, kein object=
$null = Invoke-RestMethod -Method Post -Uri "$basis/login" -Body $rumpf `
-ContentType 'application/json' -SessionVariable sitzung
$ver = (Invoke-RestMethod -Uri "$basis/nsversion" -WebSession $sitzung).nsversion.version
$conf = (Invoke-RestMethod -Uri "$basis/nsrunningconfig" -WebSession $sitzung).nsrunningconfig.response
$tcp = (Invoke-RestMethod -Uri "$basis/nstcpparam" -WebSession $sitzung).nstcpparam
# Feldname je nach Version unterschiedlich geschrieben, daher nach 'isn' suchen
$isn = ($tcp.PSObject.Properties | Where-Object { $_.Name -match 'isn' } | Select-Object -First 1).Value
$build = ConvertTo-NsBuild -Text $ver -Fips:$Fips
Get-CveBewertung -Build $build -Befund (Get-NsBefund $conf) -Isn "$isn" -Appliance $fqdn
}
catch {
[pscustomobject]@{ Appliance = $fqdn; Build = '-'; Ziel = '-'; CVE = '-'; CVSS = '-'
Status = 'FEHLER'; Grund = $_.Exception.Message
Hilfe = 'Erreichbarkeit per HTTPS, Name im Zertifikat und Rechte pruefen' }
}
finally {
if ($sitzung) {
try { $null = Invoke-RestMethod -Method Post -Uri "$basis/logout" -Body '{"logout":{}}' `
-ContentType 'application/json' -WebSession $sitzung } catch { }
}
}
}
Beispielausgabe
Gemessen am 28.09.2026 gegen eine Testappliance auf 14.1-72.61. Für den Test ist sie um einen Gateway-vServer, einen AAA-vServer, LB-vServer vom Typ ORACLE, MYSQL und DNS sowie eine Responder-Richtlinie mit URL-Ausdruck ergänzt. Ein zweiter Gateway-vServer mit -dtls OFF zeigt die Unterscheidung bei CVE-2026-88772:
CVE Status Grund
--- ------ -----
CVE-2026-88771 BETROFFEN jede Appliance, keine Voraussetzung. Wird ausgenutzt
CVE-2026-88772 BETROFFEN DTLS aktiv: cvetest_gw. Wird ausgenutzt
CVE-2026-88773 BETROFFEN HTTP/SSL-vServer: LB01, LB02, LB03 und 7 weitere
CVE-2026-88774 BETROFFEN HTTP.REQ.URL in: cs policy CS-Action, responder policy cvetest_url
CVE-2026-88775 BETROFFEN Gateway/AAA: cvetest_gw, cvetest_gw_nodtls, cvetest_aaa
CVE-2026-88776 BETROFFEN LB-vServer ORACLE: cvetest_ora
CVE-2026-88777 PRUEFEN Nicht-HTTP-L7 oder LSN/NAT64: cvetest_mysql (MYSQL), cvetest_dns (DNS). Gegen Bulletin abgleichen
CVE-2026-88778 BETROFFEN Enhanced ISN Generation: DISABLED. Build verwundbar. TCP-vServer: 13
Bei CVE-2026-88772 erscheint nur cvetest_gw. Der zweite Gateway-vServer trägt -dtls OFF und erfüllt die Voraussetzung nicht, für CVE-2026-88775 zählt er trotzdem. Ohne die Testobjekte meldet dieselbe Appliance bei 88772, 88775, 88776 und 88777 NICHT ERFUELLT. Betroffen bleibt sie über CVE-2026-88771 in jedem Fall.
Hinweise zur Auswertung
Der Build wird numerisch verglichen, Segment für Segment. Als Text sortiert wäre 73.5 größer als 73.37. Numerisch ist 73.5 der ältere Build, und so bewertet ihn das Skript.
DTLS (CVE-2026-88772): In der ns.conf stehen nur Einstellungen, die vom Standard abweichen. Da DTLS auf VPN-vServern standardmäßig aktiv ist, gilt ein VPN-vServer als betroffen, solange in seiner Zeile kein -dtls OFF steht. Das Bulletin nennt genau diese Form als Beispiel für eine nicht erfüllte Voraussetzung:
add vpn vserver vpn1 SSL 10.0.0.0 443 -dtls OFF -Listenpolicy NONE
URL-Ausdrücke (CVE-2026-88774): Auf jeder Appliance liegen mitgelieferte Cache-Richtlinien mit dem Präfix ctx_, die HTTP.REQ.URL verwenden. Das Skript führt sie getrennt. Nutzen nur diese den Ausdruck, meldet es PRUEFEN, bei eigenen Richtlinien BETROFFEN mit deren Namen.
Nicht-HTTP-Protokolle (CVE-2026-88777): Das Bulletin nennt keine abschließende Liste der Protokolle. Das Skript meldet vServer mit typischen Schicht-7-Protokollen wie MYSQL, MSSQL, DNS, RADIUS, DIAMETER oder SIP sowie LSN-Gruppen und NAT64 mit PRUEFEN. Die gemeldeten Objekte gleichst du mit dem Bulletin ab.
TCP-Sequenznummern (CVE-2026-88778): Hier sind zwei Dinge nötig, der behobene Build und die aktivierte Einstellung Enhanced ISN Generation. Das Skript liest die TCP-Parameter und nennt fehlende Schritte einzeln. Von Hand zeigt es dieser Befehl auf der CLI:
show ns tcpparam | grep "Enhanced ISN Generation"
Der Standardwert ist DISABLED. Im Offline-Modus steht die Einstellung deshalb nur dann in der ns.conf, wenn sie aktiviert wurde. Fehlt sie, meldet das Skript PRUEFEN.
Maßnahmen
1. Upgrade auf den behobenen Build. Zuerst Appliances, deren Verwaltung oder vServer aus dem Internet erreichbar sind, und solche mit VPN-vServern, da dort DTLS aktiv ist. Danach alle übrigen, auch rein intern erreichbare. CVE-2026-88771 betrifft jede Appliance.
2. Enhanced ISN Generation aktivieren. Die Änderung der TCP-Parameter beschreibt Citrix in der Dokumentation, auf die das Bulletin verweist. Sie gehört zusammen mit dem Upgrade ins selbe Wartungsfenster.
3. Bis zum Upgrade: DTLS abschalten, wo es nicht gebraucht wird. Das nimmt CVE-2026-88772 die Voraussetzung. Es ist ein Behelf für die Zeit bis zum Upgrade und ersetzt es nicht.
4. Vor dem Upgrade sichern. Bei einer VPX ein Snapshot, bei einer MPX die Verzeichnisse /var und /nsconfig. Das dauert wenige Minuten und erhält den Zustand vor dem Upgrade für eine spätere Untersuchung.
5. Nach dem Upgrade auf Spuren prüfen. Bei zwei Schwachstellen mit Codeausführung, die bereits ausgenutzt werden, gehört diese Prüfung zum Upgrade dazu. Das Upgrade ersetzt die Firmware, Dateien unter /var oder /nsconfig bleiben erhalten. Zu prüfen sind unbekannte Dateien, unerwartete Konfigurationsänderungen und unbekannte Konten. Veröffentlicht Citrix eigene Hinweise zur Erkennung, sind diese maßgeblich.
6. Bei einem Fund neu aufsetzen. Frisches Abbild, geprüfte Konfiguration zurückspielen und alles erneuern, was auf der Appliance hinterlegt war: private Schlüssel der Zertifikate, LDAP-Bindkonten, Dienstkonten und SAML-Signaturmaterial.
Zusammenfassung
CTX697096 betrifft alle NetScaler 13.1 und 14.1 unterhalb von 14.1-73.37 bzw. 13.1-64.23, einschließlich der Stände aus dem August. CVE-2026-88771 setzt keine Konfiguration voraus, für 88771 und 88772 sind Angriffe belegt.
Das Skript zeigt je Appliance und CVE, ob der Build verwundbar ist, ob die Voraussetzung erfüllt ist und was als Nächstes zu tun ist. Für CVE-2026-88778 gehört neben dem Upgrade die Einstellung Enhanced ISN Generation dazu.
Quellen
- CTX697096: NetScaler ADC und Gateway, CVE-2026-88771 bis CVE-2026-88778, Citrix, 27.09.2026
- CTX696939: NetScaler ADC und Gateway, CVE-2026-19490 und CVE-2026-19489, Citrix, 19.08.2026
- CTX696300: NetScaler ADC und Gateway, CVE-2026-3055 und CVE-2026-4368, Citrix, 23.03.2026
Stand dieses Beitrags: 28.09.2026. Neue Builds oder Hinweise von Citrix trage ich datiert nach.
