Threat Intelligence

NetScaler CVE-2026-88771 et CVE-2026-88772 : une appliance de bordure qui garde l'attaquant après le patch

Admin CyberAfrik 02 October 2026 64 lectures
NetScaler CVE-2026-88771 et CVE-2026-88772 : une appliance de bordure qui garde l'attaquant après le patch

Rapport CTI technique du 2 octobre 2026

Résumé exécutif

Deux vulnérabilités critiques de Citrix NetScaler ADC et NetScaler Gateway sont exploitées comme zero-days depuis au moins début septembre 2026. CVE-2026-88771 est une faille de validation d'entrée qui aboutit à une exécution de commande sans authentification sur toute configuration. CVE-2026-88772 est une corruption mémoire dans le moteur de paquets, atteignable avant authentification sur les appliances où DTLS est actif, c'est à dire par défaut sur les serveurs virtuels VPN. Citrix a confirmé l'exploitation le 27 septembre et publié des correctifs pour huit failles. La CISA a inscrit les deux au catalogue KEV.

Le point que doivent retenir les équipes défensives : plusieurs cabinets indépendants (Mandiant et Google Threat Intelligence Group, LevelBlue, watchTowr) décrivent une post-exploitation conçue pour survivre à la mise à jour. Création d'un compte administrateur discret dans la configuration, webshells PHP déguisés en ressources statiques, modification de /bin/sh et vol de la configuration complète de l'appliance. Appliquer le correctif ne suffit donc pas. Toute appliance exposée durant septembre doit faire l'objet d'une chasse et d'une rotation complète des secrets.

Chronologie

DateÉvénement
Début septembre 2026Exploitation de CVE-2026-88772 observée rétroactivement par Mandiant
15 septembre 2026Fin de maintenance de la branche NetScaler 13.1
26 septembre 2026watchTowr signale des rumeurs crédibles de RCE NetScaler, des administrateurs coupent leurs appliances
27 septembre 2026Bulletin Citrix CTX697096, exploitation confirmée, correctifs pour 8 CVE
29 septembre 2026Exploitation de masse de CVE-2026-88771 après diffusion d'un PoC
30 septembre 2026Rapports Mandiant/GTIG (WHIPSHOT, SLAPSHOT) et ajout au KEV CISA
1er octobre 2026LevelBlue THOR publie les artefacts de post-exploitation observés chez plusieurs clients

Fiche vulnérabilité (format fiche CTI)

CVE-2026-88771 | CVSS v4 9,5 | NetScaler ADC et Gateway, toutes configurations

Validation d'entrée insuffisante conduisant à l'exécution de commandes sans authentification. Aucune fonctionnalité particulière requise, la configuration par défaut est concernée. LevelBlue a relevé des événements d'authentification dont les champs portaient des variantes des chaînes pitboss et NSPPE, marqueurs de l'activité. PoC disponible : oui, diffusé publiquement le 29 septembre selon Help Net Security, d'où une bascule vers l'exploitation opportuniste. Patch : 14.1-73.37, 13.1-64.23 et équivalents FIPS/NDcPP.

CVE-2026-88772 | CVSS v4 9,5 | NetScaler avec DTLS actif (défaut sur les serveurs virtuels VPN)

Débordement mémoire dans le Netscaler Packet Processing Engine lors de la négociation DTLS, avant authentification. D'après GTIG, l'exploitation réussie laisse deux traces corrélées dans les journaux : un échec de poignée de main SSL en DTLSv1.0 avec le motif « Handshake failure-Internal Error », suivi d'un arrêt du processus NSPPE que le chien de garde ne parvient pas à relancer. PoC disponible : pas de code d'exploitation public complet, mais watchTowr a diffusé une analyse et un générateur d'artefacts de détection. Patch : mêmes versions. Mitigation temporaire : désactiver DTLS et bloquer l'UDP/443 entrant, ce qui ne couvre pas CVE-2026-88771.

Les builds 14.1-73.32 et 13.1-63.21, qui corrigeaient CVE-2026-19490 en août, restent dans la plage vulnérable.

Diagramme de la chaîne d'attaque

Intrusion NetScaler de la bordure vers le réseau interne

Trajet d'intrusion à travers les périmètres, d'une appliance exposée vers les données internes. Sources : Citrix CTX697096, Mandiant/GTIG, LevelBlue THOR, watchTowr.

Analyse technique

Étape 1 : accès initial sans authentification

Les deux failles donnent un pied dans la place avant toute authentification. CVE-2026-88772 vise le chemin DTLS sur UDP et aboutit, selon GTIG, à une exécution avec les privilèges root sur le FreeBSD sous-jacent. CVE-2026-88771 passe par le traitement des données d'authentification et aboutit à l'exécution de commandes. Dans les deux cas, l'appliance exposée sur Internet est le point d'entrée, sans credentials.

Étape 2 : installation du webshell déguisé

La première action observée est le dépôt d'un webshell. Mandiant décrit une modification du fichier httpd.conf d'Apache pour que des extensions inattendues (fichiers .deb ou .sig) soient traitées comme du PHP. Une redirection fait ensuite servir un faux fichier .ico par le shell caché. Le webshell PHP WHIPSHOT lit ses commandes dans des en-têtes HTTP successifs encodés en base64, désactive son propre reporting d'erreurs et répond systématiquement par un code 404 pour ne rien laisser paraître dans les journaux du serveur web.

Étape 3 : persistance et compte superutilisateur

LevelBlue a observé un script Perl de seconde étape qui modifie /flash/nsconfig/ns.conf pour créer un compte local nommé sec_monitor doté du rôle superuser. En parallèle, les permissions de /bin/sh sont passées en setuid root pour que les commandes lancées via le shell conservent les privilèges. L'attaquant dispose alors d'un accès administrateur qui subsiste après redémarrage et qui n'est pas retiré par une simple mise à jour firmware.

Étape 4 : vol de configuration et pivot interne

Le même script archive le répertoire /flash/nsconfig et l'exfiltre vers un serveur distant, puis supprime l'archive et s'efface. La configuration d'un NetScaler contient des secrets de liaison LDAP, RADIUS, des certificats et des clés. L'outil Python SLAPSHOT ouvre ensuite un tunnel TCP depuis la passerelle vers le réseau interne, ce qui permet la reconnaissance et la recherche d'identifiants au-delà de la bordure. SLAPSHOT ferme les sessions inactives après 15 minutes et se supprime après 10 minutes sans activité, effaçant ses fichiers de port et de verrou.

Étape 5 : pourquoi le patch ne suffit pas

Mandiant insiste : mettre à jour vers une version corrigée n'évince pas un attaquant déjà installé et ne traite pas le risque lié aux identifiants volés. Le compte sec_monitor, le /bin/sh setuid, les webshells et les secrets exfiltrés survivent à l'upgrade. Les organisations doivent considérer toute appliance exposée pendant la fenêtre d'exploitation comme potentiellement compromise et faire tourner les secrets après, et non avant, l'application du correctif.

Indicateurs de compromission

TypeValeur
Compte malveillantsec_monitor (rôle superuser dans ns.conf)
Fichier (webshell)/var/netscaler/logon/LogonPoint/.local_journal
Artefact SLAPSHOT/tmp/.uxdport, /tmp/.uxdlock
JournalSSL_HANDSHAKE_FAILURE en DTLSv1.0, motif « Handshake failure-Internal Error » corrélé à un crash NSPPE
JournalÉvénements d'authentification contenant les chaînes pitboss ou NSPPE
URL de récupération64.94.85[.]67:443/update_c08937.pl
URL de récupération31.56.197[.]72:9090/lula
URL de récupération23.27.143[.]20:9000/main.py
IPv4 (reverse shell)45.141.21[.]130
Altération système/bin/sh en setuid root ; httpd.conf traitant .deb/.sig comme PHP

MITRE ATT&CK

Mandiant n'a pas publié de matrice ATT&CK formelle pour cette campagne. Le tableau ci-dessous est notre lecture technique des artefacts rapportés.

TactiqueTechniqueIDJustification
Initial AccessExploit Public-Facing ApplicationT1190Exploitation pré-auth de CVE-2026-88771 et CVE-2026-88772
ExecutionCommand and Scripting InterpreterT1059Charges Perl et Python de seconde étape
PersistenceServer Software Component: Web ShellT1505.003WHIPSHOT et webshell PHP déguisé
PersistenceCreate Account: Local AccountT1136.001Compte sec_monitor en superuser
Privilege EscalationSetuid and SetgidT1548.001/bin/sh passé en setuid root
Defense EvasionMasquerading: Match Legitimate NameT1036.005Webshell mappé sur des URL de ressources CSS/ICO
Defense EvasionIndicator Removal: File DeletionT1070.004SLAPSHOT et script Perl s'autosuppriment
CollectionData from Configuration RepositoryT1602Exfiltration de /flash/nsconfig
Command and ControlProtocol TunnelingT1572Tunnel TCP SLAPSHOT vers le réseau interne

Remédiation : checklist opérationnelle

  1. Mettre à jour vers 14.1-73.37, 13.1-64.23 ou les équivalents FIPS/NDcPP sans délai. Si l'upgrade immédiat est impossible, désactiver DTLS et bloquer l'UDP/443 entrant pour couvrir CVE-2026-88772 (ne protège pas de CVE-2026-88771).
  2. Avant de patcher, préserver les preuves : instantané de la VPX, journaux distants (syslog, NetScaler Console), bundle de support, core dump du moteur de paquets.
  3. Chasser les IOC : compte sec_monitor dans ns.conf, /bin/sh setuid, entrées anormales dans httpd.conf (.deb/.sig traités comme PHP), fichiers /tmp/.uxdport et /tmp/.uxdlock, webshell .local_journal.
  4. Corréler dans les journaux les échecs de poignée de main DTLSv1.0 « Handshake failure-Internal Error » avec les crashs NSPPE, et les événements d'authentification portant pitboss ou NSPPE.
  5. Bloquer et rechercher tout trafic vers 64.94.85[.]67, 31.56.197[.]72, 23.27.143[.]20 et 45.141.21[.]130 depuis début septembre.
  6. Après le patch, faire tourner tous les secrets manipulés par l'appliance : comptes admin, clés SSH, certificats TLS, identifiants LDAP et RADIUS.
  7. Retirer définitivement l'interface de gestion d'Internet.
  8. Exécuter les scripts de vérification du NCSC-NL sur appliance en service et sur images, en tenant compte de leurs limites.

Sources

Tags : CVE-2026-88771CVE-2026-88772Citrix NetScalerWHIPSHOTSLAPSHOTCISA KEVzero-dayDTLS
Partager cet article