Ivanti Connect Secure : une chaîne zero-day jusqu’à root

Ivanti corrige la CVE-2026-104935, exploitée depuis début octobre par un acteur inconnu qui enchaîne trois zero-day pour obtenir les droits root sur Connect Secure sans authentification. Le troisième maillon, une élévation de privilèges, reste sans correctif, et l’Integrity Checker Tool d’Ivanti ne détecte pas la compromission.

TLP:CLEAR   PAP:CLEAR   Diffusion libre, exploitation sans restriction.
Publication
14 octobre 2026
Objet
CVE-2026-104935, Ivanti Connect Secure, UTA0576
Diffusion
Publique
Confiance
Élevée
Sources
8

Les faits

Le 13 octobre 2026, Ivanti publie l’avis de sécurité 000109571 consacré à la CVE-2026-104935, un contournement d’authentification par usurpation dans Ivanti Connect Secure, abrégé ICS (1), sa passerelle VPN (2). L’éditeur indique que la faille permet à un attaquant distant non authentifié d’exécuter des commandes arbitraires et qu’il a connaissance d’une exploitation touchant un nombre limité de clients au moment de la publication. Les versions corrigées sont disponibles.

Le même jour, Volexity publie l’analyse de l’incident qui a conduit à la découverte. Un acteur jusqu’alors inconnu, que la société suit sous le nom UTA0576, exploite depuis le 3 octobre 2026 une chaîne de trois vulnérabilités sur une passerelle ICS à jour, en version 22.8R2.4, pour exécuter du code avec les droits root sans s’authentifier. La CVE-2026-104935 couvre les deux premiers maillons de la chaîne. Le troisième, une élévation de privilèges, n’a ni CVE (3) ni correctif à la date de publication ; Ivanti annonce une correction dans une version ultérieure, dans les semaines à venir.

L’agence américaine CISA (4) ajoute la CVE-2026-104935 à son catalogue KEV (5) le 13 octobre 2026, avec une échéance de remédiation au 16 octobre 2026 pour les agences fédérales, et publie une alerte qui reprend les procédures de récupération d’Ivanti. Elle y précise qu’une recherche de compromission suppose une analyse forensique du réseau et de la mémoire, l’Integrity Checker Tool pouvant ne rien détecter.

Ce qu’il faut retenir

Mettre à jour ferme le point d’entrée de la chaîne mais ne dit rien d’une compromission antérieure : l’acteur n’a déposé ni backdoor ni web shell, a rejoué l’exploitation à chaque commande et a nettoyé les journaux. Toute passerelle ICS exposée et restée en version vulnérable après le 1er octobre 2026 relève d’une recherche de compromission, avec réinitialisation des comptes de service Active Directory qu’elle utilise.

Chronologie

DateÉvénementSource
Juillet 2026Publication de la 25.1.3.0, qui corrige la partie de la vulnérabilité découverte en interneIvanti
25 septembre 2026Dernière modification du guide de compatibilité 25.xIvanti
30 septembre au 7 octobre 2026Serveur OpenVPN actif sur 108.165.147[.]64Volexity
1er octobre 2026Premiers signes d’exploitation observés par DefusedBleepingComputer
3 octobre 2026Première exploitation de la passerelle étudiée par VolexityVolexity
5 octobre 2026Ouverture de l’enquête de Volexity ; mise à disposition de la 25.1.1.2Volexity, Ivanti
10 octobre 2026Indicateurs fournis aux clients de Volexity ; règle YARA (6) de détection de l’élévation de privilègesVolexity
12 octobre 2026Mise à disposition de la 22.8R2.5 ; bulletin TIB-20261012 de VolexityIvanti, Volexity
13 octobre 2026Avis Ivanti, analyse de Volexity, publication de la CVE, ajout au catalogue KEV et alerte de la CISAIvanti, Volexity, CISA
16 octobre 2026Échéance de remédiation KEV pour les agences fédérales américainesCISA
31 janvier 2027Fin de vie des branches 22.7 et 22.8Ivanti

Fig. 1. Chronologie reconstituée à partir de l’avis Ivanti, de l’analyse de Volexity, de la fiche CVE et de l’alerte de la CISA.

L’échéance de trois jours découle de la directive BOD (7) 26-04 de la CISA, à laquelle renvoie l’action requise de l’entrée KEV, avec une obligation de triage forensique. La version 25.1.1.2 était disponible deux jours après le début de l’exploitation observée par Volexity, et la 22.8R2.5 la veille de la publication de l’avis : une passerelle 22.8 mise à jour le jour de l’avis est restée vulnérable pendant au moins dix jours d’exploitation constatée.

Versions concernées et correctifs

Trois branches sont touchées. La branche 22.7 ne l’est pas jusqu’à la 22.7R2.14 incluse. La branche 25.1.3, publiée en juillet 2026, ne l’est pas non plus : Ivanti indique avoir découvert une partie de la vulnérabilité dans le cadre de son programme de sécurité produit et l’avoir corrigée dans cette version, puis avoir travaillé au report de la correction sur les autres versions maintenues lorsque l’exploitation est survenue. Le chemin de correction dépend aussi de la plateforme Ivanti Secure Access, dite ISA (8), sur laquelle fonctionne la passerelle, matérielle ou virtuelle.

BrancheVersions vulnérablesVersion corrigéeDate de mise à dispositionPlateformes
25.1.125.1.1.1 et antérieures25.1.1.25 octobre 2026Matériel ISA6000 et ISA8000 ; virtuel ISA4000, ISA6000 et ISA8000
25.1.225.1.2.2 et antérieures25.1.3.0, 25.1.3.1Juillet 2026 pour 25.1.3.0Nouvelle plateforme ISA4500, ISA6500 ou ISA8500
22.822.8R2.4 et antérieures22.8R2.512 octobre 2026Branche de transition vers 25.1, fin de vie le 31 janvier 2027
22.7Non concernée jusqu’à 22.7R2.14 incluseSans objetSans objetFin de vie le 31 janvier 2027

Fig. 2. Versions concernées et corrigées selon l’avis Ivanti 000109571, recoupées avec la fiche de la CVE, les critères CPE (9) de la NVD (10) et l’alerte de la CISA.

Pour la branche 22.8, Ivanti recommande de passer directement en 25.1.1.2 ou ultérieure, la 22.8 n’étant conçue que comme une passerelle temporaire de la 22.7 vers la 25.1 ; la 22.8R2.5 est proposée aux clients qui ne peuvent pas migrer immédiatement. Les deux branches 22.7 et 22.8 arrivent en fin de vie le 31 janvier 2027.

Trois écritures des versions à ne pas confondre

La description de la CVE indique « ICS before version 25.1.3.0 », formulation qui, lue seule, désignerait aussi comme vulnérables les versions corrigées 25.1.1.2 et 22.8R2.5. Les critères CPE publiés par la NVD retiennent trois périmètres plus précis : de 25.1.0.0 à 25.1.1.2 exclue, de 25.1.2.0 à 25.1.3.0 exclue, et les versions 22.8R2 à 22.8R2.4. La fiche du CNA (11) liste comme non affectées les versions 25.1.3.0, 25.1.3.1, 22.8R2.5 et 22.7R2.14. Enfin, la section Solution de l’avis Ivanti écrit « Versions 22.7.14 and lower » là où la description et la fiche CVE écrivent 22.7R2.14.

Point de vigilance

Un outil de gestion des vulnérabilités qui s’appuie sur la seule description textuelle de la CVE peut signaler à tort une passerelle en 25.1.1.2 ou en 22.8R2.5. La correspondance de versions à retenir est celle des critères CPE et du tableau de l’avis, pas la phrase de description.

Une chaîne en trois maillons

Volexity décrit trois vulnérabilités distinctes, dont l’enchaînement donne une exécution de code avec les droits root sans authentification. Les deux premières, contournement d’authentification et écriture de fichier menant à l’exécution de code, sont suivies sous la CVE-2026-104935. La troisième ne l’est pas.

MaillonComposantEffetStatut
1. Contournement d’authentificationwelcome.cgiAcheminement d’une requête non authentifiée vers un script CGI (12) protégéCVE-2026-104935, corrigée
2. Écriture de fichier et exécutionwu.cgiExécution de code avec les droits de l’utilisateur cgi-serverCVE-2026-104935, corrigée
3. Élévation de privilègesdsinvoked, DSCacheExécution de commandes avec les droits rootSans CVE, correctif annoncé

Fig. 3. Les trois maillons de la chaîne d’exploitation décrite par Volexity le 13 octobre 2026.

Le contournement d’authentification

Le script /dana-na/auth/url_default/welcome.cgi est public : il sert la page de connexion de la passerelle et accepte donc les requêtes sans authentification. Volexity montre que la passerelle décide d’autoriser une requête d’après son URL (13), mais choisit le script de destination d’après la valeur de l’en-tête HTTP (14) X-DSCGI-PATH. Une requête adressée à welcome.cgi et portant dans cet en-tête le chemin d’un script non public, ici /home/webserver/htdocs/dana/fb/smb/wu.cgi, est donc autorisée comme une requête publique, puis transmise à un script qui s’exécute dans un contexte de confiance. C’est le sens de la classe de faiblesse 290 du référentiel CWE (15) retenue par Ivanti, un contournement d’authentification par usurpation.

L’écriture de fichier et la situation de concurrence

Le gestionnaire de téléversement wu.cgi écrit le contenu reçu dans /home/runtime/tmp/, sous un nom égal à l’empreinte MD5 (16) du nom de fichier fourni par le client, puis vérifie seulement après l’écriture qu’il s’agit d’une archive ZIP (17) valide. L’acteur envoie un script Perl portant l’extension .zip ; le contrôle échoue et le fichier est supprimé, mais il existe sur le disque pendant un bref intervalle. L’acteur envoie en parallèle plusieurs requêtes dont l’en-tête X-DSCGI-PATH pointe vers ce fichier temporaire, par la même technique que le premier maillon. Si l’une d’elles atteint le fichier avant sa suppression, le script s’exécute. Le script Perl lance un script Bash, qui exécute à son tour un script Python transmis compressé et encodé, décodé puis exécuté en mémoire seulement.

L’élévation de privilèges, toujours ouverte

Le service dsinvoked s’exécute avec les droits root et lance à la demande des tâches de maintenance, dont il lit le programme dans DSCache, le magasin de configuration partagé de la passerelle. Le script Python de l’acteur modifie en mémoire la copie de la bibliothèque /home/lib/libdsplibs.so chargée par le processus cgi-server, ce qui lui permet de modifier DSCache et de rediriger une tâche existante, ScriptUtil/updateOpswatSDK, vers l’interpréteur Perl. Il demande ensuite à dsinvoked d’exécuter cette tâche avec un script Perl en argument, qui s’exécute avec les droits root. Le script contrôle sa réussite en testant la lecture de /etc/shadow, puis restaure l’entrée DSCache vers /home/bin/updateOpswatSDK.pl et l’octet modifié de la bibliothèque en mémoire, par /proc/self/mem. La bibliothèque sur disque n’est jamais modifiée.

Point de vigilance

Après mise à jour, l’élévation de privilèges reste exploitable par tout code qui s’exécuterait avec les droits cgi-server. Le correctif ferme l’accès sans authentification décrit par Volexity ; il ne protège pas contre un autre point d’entrée qui serait découvert d’ici la publication du correctif de dsinvoked. Volexity estime par ailleurs probable que d’autres chemins, en URL comme en valeur d’en-tête, soient identifiés pour le premier maillon.

Ce que l’acteur a fait sur la passerelle

Volexity a ouvert son enquête le 5 octobre 2026 chez un client de son offre de surveillance réseau, à partir d’une activité suspecte dont l’origine a été remontée jusqu’à la passerelle ICS. L’acteur n’a pas utilisé de canal de commande et de contrôle distinct : chaque commande transitait par les requêtes HTTPS (18) de la chaîne d’exploitation, qui était rejouée intégralement à chaque fois, et le résultat revenait dans la réponse HTTP. Volexity estime avec une confiance élevée que l’opérateur interagissait avec les résultats plutôt que de dérouler un script préparé, au vu de la diversité des commandes.

ObjectifActions observéesArtefacts cités par Volexity
Configuration et journaux de la passerelleCollecte de la configuration, dont les méthodes d’authentification ; extraction des noms d’utilisateur depuis les journaux d’authentification/home/etc/pulse/, /home/etc/, /home/*.cfg, /home/runtime, log.events.vc0, /tmp/pu.txt
Identifiants stockésExtraction des identifiants de domaine utilisés par la passerelle pour LDAP (19)Non précisé
Annuaire Active DirectoryRequêtes LDAP avec le compte de service Active Directory de la passerelle, à la recherche des mots de passe LAPS (20), des informations de récupération BitLocker, des attributs userPassword et unixUserPassword et des chemins de scripts de connexion ; export compressé et encodé en JSON (21)/tmp/ml.py, /tmp/rq5.py
KerberosOutil Kerberos écrit en Python pour tester des identifiants ; fonction de Kerberoasting présente mais non utilisée/tmp/mk.py, /tmp/rr.py
Interception réseauBinaire tcpdump renommé, filtrant les ports des protocoles en clair (LDAP, HTTP, FTP (22), telnet) sur huit fichiers de capture tournants ; analyse des captures pour récupérer les identifiants LDAP, HTTP Basic et les empreintes NTLM (23) ; exfiltration des 8 premiers Ko d’une capture/data/.icscap/dsstatmond, /data/.icscap/h.py, /data/.icscap/cap0
Reconnaissance et password sprayExfiltration de /etc/resolv.conf, résolution DNS (24) de domaines internes, puis password spray contre des comptes Active Directorysp_run.py, sp_out.txt, spray_hits.json

Fig. 4. Actions de post-exploitation reconstituées par Volexity à partir de la mémoire, du disque et des fichiers core de la passerelle compromise.

La technique de capture des échanges LDAP depuis la passerelle a déjà été observée par Volexity chez un autre acteur, UTA0533, qui avait obtenu les droits root par l’exploitation d’un zero-day sur des passerelles SonicWall SMA, décrite en juillet 2026. L’opération ayant été détectée et interrompue, Volexity n’a pas pu établir l’objectif final de l’acteur ; elle estime avec une confiance élevée que ses actions préparaient un mouvement latéral et une compromission plus large du réseau de la victime.

Attribution

  • Motivation criminelle plutôt qu’espionnage : confiance faible, fondée sur la nature de la cible
  • Recours à des LLM (25) pour le développement des codes d’exploitation et la post-exploitation : confiance moyenne, fondée sur l’usage continu du canal d’exploitation, des scripts très spécifiques à identifiants codés en dur et la complexité de la chaîne
  • Infrastructure : adresse IP (26) 108.165.147[.]64, un VPS (27) de l’hébergeur Evoxt, sur lequel un serveur OpenVPN a fonctionné du 30 septembre au 7 octobre 2026

Pourquoi l’Integrity Checker Tool ne voit rien

L’Integrity Checker Tool d’Ivanti compare les fichiers présents sur le disque de la passerelle à leur état attendu. La chaîne d’UTA0576 ne laisse rien de durable à ce niveau : la bibliothèque n’est modifiée qu’en mémoire puis restaurée, l’entrée DSCache est remise à sa valeur d’origine, les scripts sont exécutés en mémoire ou supprimés après usage. Volexity en conclut que l’outil ne détecte aucune modification, et la CISA comme Ivanti reprennent cette réserve.

Les charges récupérées par Volexity contiennent plusieurs fonctions destinées à effacer les traces :

  • Suppression sélective des entrées récentes de /home/runtime/dlogs/debuglog et /var/log/audit/audit.log, les fichiers étant tronqués puis réécrits avec les seules entrées antérieures à la fenêtre ciblée
  • Suppression par le script Perl exécuté avec les droits root de son propre fichier /home/runtime/tmp/ics-root-run-inband-*.pl, et des résultats temporaires /home/runtime/tmp/ics-root-result-inband-*
  • Suppression explicite de /tmp/rq5.py et /tmp/rr.py après exécution
  • Redirection des flux des processus de nettoyage vers /dev/null
  • Rotation des huit fichiers de capture, qui écrase le trafic capturé le plus ancien

Volexity précise que la présence de ces fonctions est établie dans le code récupéré, mais que la mesure dans laquelle chacune a abouti sur la passerelle compromise n’est pas entièrement établie. L’exploitation a été reconstituée à partir de l’image mémoire, de l’image disque et des fichiers core générés par l’exploitation elle-même, collectés avec Ivanti.

Point de vigilance

La FAQ de l’avis Ivanti invite à exécuter régulièrement l’Integrity Checker Tool pour savoir si l’on a été compromis. Pour cette chaîne, un résultat négatif de l’outil n’est pas une preuve d’absence de compromission ; la CISA demande une analyse forensique du réseau et de la mémoire.

Une faille, plusieurs notations

Ivanti, en tant que CNA, note la CVE-2026-104935 à 8,6 sur l’échelle CVSS (28), sévérité élevée. Le vecteur publié dans l’avis porte le préfixe CVSS:3.0, celui de la fiche CVE le préfixe CVSS:3.1 ; les huit métriques sont identiques et le score de base est le même dans les deux versions du référentiel.

SourceNotationLecture
Avis Ivanti8,6, CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:LAccès réseau, sans privilège ni interaction ; confidentialité élevée, intégrité et disponibilité faibles
Fiche CVE et NVD8,6, CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:L, CWE-290Mêmes métriques, statut « Analyzed » à la NVD
Décision SSVC (29) de la CISAExploitation active, automatisable yes, impact technique totalHorodatée au 13 octobre 2026 à 15:42 UTC (30)

Fig. 5. Notations publiées pour la CVE-2026-104935 au 13 octobre 2026.

Le vecteur d’Ivanti classe l’atteinte à l’intégrité et à la disponibilité comme faible, alors que la description de la CVE annonce l’exécution de commandes arbitraires et que la CISA qualifie l’impact technique de total. Le score CVSS ne porte que sur les deux maillons couverts par la CVE, qui donnent une exécution avec les droits cgi-server ; l’élévation de privilèges vers root, qui fait de la chaîne une prise de contrôle complète, n’est notée nulle part faute de CVE. La sévérité « élevée » porte donc sur les deux maillons corrigés, pas sur l’effet observé de la chaîne complète.

Mettre à jour : ce que dit le guide de compatibilité 25.x

La CISA renvoie, en complément de l’avis, vers le guide de compatibilité des mises à jour et des migrations de la branche 25.x publié par Ivanti (article 000108861). Le document, créé le 6 septembre et modifié pour la dernière fois le 25 septembre 2026, est antérieur aux versions correctives 25.1.1.2 et 22.8R2.5, qui n’y figurent pas : leur chemin de mise à jour est à vérifier dans les notes de version correspondantes.

Version cibleMise à jour sur place depuisMigration de configuration depuis
25.1.3.125.1.3.025.1.3.0, 25.1.2.2, 25.1.1.1, 22.7R2.14
25.1.3.025.1.2.1 (matériel ISA-6500 seul), 25.1.2.2 (matériel ISA-6500 et ISA-8500 seul)25.1.2.2, 25.1.2.1, 25.1.1.1, 25.1.1.0, 22.8R2.4, 22.7R2.14
25.1.1.125.1.1.0, 22.8R2.325.1.0.1, 25.1.1.0, 22.8R2.3, 22.7R2.12
25.1.1.025.1.0.1, 25.1.0.0, 22.8R2.3, 22.8R2.2, 22.8R2.125.1.0.1, 25.1.0.0, 22.8R2.3, 22.8R2.2, 22.8R2.1, 22.7R2.12, 22.7R2.11
25.1.0.125.1.0.0, 22.8R225.1.0.0, 22.8R2, 22.7R2.8
25.1.0.022.8R222.8R2, 22.7R2.8, 22.7R2.7

Fig. 6. Matrice de compatibilité du guide Ivanti 000108861, état du 25 septembre 2026. Les deux colonnes portent le même intitulé « Upgrade From » dans l’original ; leur distinction entre mise à jour sur place et migration de configuration suit le texte d’introduction du guide.

Les contraintes à anticiper

  • La mise à jour directe vers 25.1.3.0 n’est prise en charge que sur les matériels ISA-6500 et ISA-8500 ; les matériels ISA-6000 et ISA-8000 et les passerelles virtuelles existantes doivent migrer vers une plateforme prise en charge. L’avis précise que la 25.1.3.0 exige la nouvelle plateforme, ISA4500, ISA6500 ou ISA8500, et que les passerelles virtuelles ou cloud doivent être reconstruites à partir du modèle 25.1.3.0
  • Les versions 25.1.2.1 et 25.1.2.2 sont réservées aux matériels ISA-6500, et ISA-8500 pour la seconde, et ne sont pas en téléchargement libre
  • Les déploiements virtuels exigent un vTPM (31)
  • Une grappe ne peut pas être mise à jour directement de 22.8R2 vers 25.x : elle doit être dissociée, chaque nœud mis à jour séparément, puis la grappe recréée ; la mise à jour de grappe n’est prise en charge qu’à l’intérieur de la branche 25.x
  • Le guide renvoie à une liste des fonctions abandonnées en 25.x, à consulter avant toute migration depuis 22.x
Choix pratique selon la version en service

Une passerelle en 22.8R2.x qui ne peut pas migrer dans l’immédiat passe en 22.8R2.5 ; c’est la seule option qui ne suppose ni changement de plateforme ni dissociation de grappe. Une passerelle en 25.1.1.1 ou antérieure sur ISA6000 ou ISA8000 passe en 25.1.1.2. Une passerelle en 25.1.2.x passe en 25.1.3.0 ou 25.1.3.1. Dans tous les cas, la mise à jour ne dispense pas de la recherche de compromission décrite plus loin.

Détection et indicateurs

Trafic vers la passerelle

Volexity recommande de surveiller un volume important de requêtes vers /dana-na/auth/url_default/welcome.cgi portant un en-tête de la forme suivante :

  • X-DSCGI-PATH: /home/webserver/htdocs/dana/fb/smb/wu.cgi
  • X-DSCGI-PATH: /home/runtime/tmp/<MD5(filename)>

D’autres chemins pouvant être trouvés pour l’URL comme pour l’en-tête, Volexity conseille de rechercher plus largement toute discordance entre le chemin de l’URL et la valeur de X-DSCGI-PATH. La situation de concurrence du deuxième maillon impose à l’attaquant d’envoyer plusieurs requêtes rapprochées, et la chaîne est rejouée pour chaque commande : une exploitation se traduit donc par des rafales de requêtes répétées.

Artefacts sur la passerelle

EmplacementNature
/tmp/Scripts ml.py, rq5.py, mk.py, rr.py, sp_run.py ; résultats pu.txt, sp_out.txt, spray_hits.json ; fichiers JSON compressés et encodés
/data/.icscap/Répertoire caché : dsstatmond (tcpdump renommé), h.py, captures cap*
/home/runtime/tmp/ics-root-run-inband-*.pl, ics-root-result-inband-*, fichiers nommés d’après une empreinte MD5
Processusdsstatmond en écoute réseau, lancé depuis un répertoire caché
/home/runtime/dlogs/debuglog, /var/log/audit/audit.logTrous dans la chronologie des entrées récentes
Fichiers coreGénérés par l’exploitation, exploitables en analyse forensique

Fig. 7. Artefacts cités par Volexity. Une partie est supprimée par l’acteur ; leur absence ne vaut pas absence de compromission.

Indicateurs publiés par Volexity

Le dépôt GitHub de Volexity pour cette campagne contient un seul indicateur réseau, l’adresse 108.165.147[.]64, décrite comme adresse d’exploitation d’UTA0576, et deux règles YARA :

  • exploit_log_ivanti_rce, qui recherche dans des fichiers ou des régions mémoire la chaîne X-DSCGI-PATH: /home/webserver/htdocs/dana/fb/smb/wu.cgi
  • exploit_py_ivanti_oct26, qui détecte en mémoire l’implémentation Python de l’élévation de privilèges, à partir de chaînes propres au script de l’acteur ; empreinte SHA-256 (32) de référence 25b95f47359c327e3a5ae5ac5cd147f8d9afd98092faf136822ee287e25e3dc8

Côté Active Directory

Au vu des actions décrites par Volexity, la recherche s’étend aux contrôleurs de domaine. Les actions de l’acteur passent par le compte de service Active Directory de la passerelle et partent de son adresse. Les journaux des contrôleurs de domaine sont à examiner sur cette adresse source et ce compte : requêtes LDAP portant sur les mots de passe LAPS et les informations de récupération BitLocker, demandes de tickets Kerberos inhabituelles, échecs d’authentification répartis sur de nombreux comptes, caractéristiques d’un password spray. Ivanti indique que les indicateurs disponibles restent limités.

En cas de compromission suspectée

La CISA reprend les procédures de récupération d’Ivanti en cinq étapes :

ÉtapeAction
1Sauvegarder la configuration de la passerelle, selon la procédure Ivanti de sauvegarde et de restauration de la configuration binaire par serveur d’archivage
2Réinitialiser la passerelle aux paramètres d’usine et la mettre à jour vers la dernière version
3Pour les passerelles virtuelles et cloud, reconstruire l’instance et la mettre à jour vers la dernière version
4Restaurer la configuration sauvegardée à l’étape 1
5Réinitialiser les mots de passe de tous les comptes, de domaine, d’administration et locaux ; révoquer et réémettre les certificats stockés ; réinitialiser les clés d’API (33) stockées et les identifiants du serveur de licences

Fig. 8. Procédure de récupération recommandée par la CISA le 13 octobre 2026, d’après les procédures d’Ivanti.

La CISA demandant une analyse forensique de la mémoire, l’acquisition de la mémoire et du disque doit précéder la réinitialisation aux paramètres d’usine : la chaîne s’exécutant en mémoire, une réinitialisation préalable efface l’essentiel des éléments qui permettent d’établir ou d’écarter la compromission. Au vu des actions décrites par Volexity, l’étape 5 s’étend aux comptes dont la passerelle détient ou voit passer les secrets : compte de service Active Directory de la passerelle, comptes dont les identifiants ont pu transiter en clair par LDAP ou HTTP Basic, mots de passe LAPS et clés de récupération BitLocker lisibles par ce compte de service.

Qualification des sources

L’avis d’Ivanti, l’analyse de Volexity, la fiche CVE et l’alerte de la CISA sont des sources primaires, lues en intégralité. Les versions ont été recoupées entre ces quatre documents.

ÉlémentStatutCommentaire
Versions vulnérables et corrigéescorroboréAvis Ivanti, fiche CVE du CNA, critères CPE de la NVD et alerte de la CISA concordants ; seule l’écriture « 22.7.14 » de la section Solution de l’avis diverge.
Exploitation activecorroboréAvis Ivanti, analyse de Volexity, ajout au catalogue KEV et décision SSVC de la CISA.
Score et vecteur CVSScorroboréMétriques identiques dans l’avis et la fiche CVE, préfixe 3.0 dans l’avis et 3.1 dans la fiche.
Fonctionnement de la chaîne, post-exploitation et anti-forensiquesource uniqueAnalyse de Volexity, seule source technique ; Ivanti et la CISA y renvoient sans la détailler.
Élévation de privilèges non corrigéecorroboréVolexity ; reprise par la presse spécialisée. L’avis Ivanti ne la mentionne pas.
Premiers signes d’exploitation au 1er octobre 2026source uniqueObservation de Defused rapportée par BleepingComputer, non consultée à la source.
Plus de 5 500 passerelles ICS exposéessource uniqueChiffre de Shadowserver rapporté par BleepingComputer, sans distinction des pots de miel ni des passerelles déjà corrigées.
Motivation criminelle de l’acteursource uniqueEstimation de Volexity à confiance faible.
Description « ICS before version 25.1.3.0 » comme périmètre des versions vulnérablesécartéContredite par l’avis et les critères CPE, qui donnent 25.1.1.2 et 22.8R2.5 comme corrigées.

Évaluation

Passerelles ICS exposées non mises à jour
Exploitation sans authentification ni interaction, active depuis début octobre, détails techniques publics depuis le 13 octobre ; passerelle placée en bordure du réseau et liée à l’annuaire.
Élevé
Compromission antérieure à la mise à jour non détectée
Aucune persistance sur disque, journaux nettoyés, Integrity Checker Tool inopérant ; la détection suppose une analyse de la mémoire et du réseau.
Élevé
Atteinte à l’annuaire par le compte de service de la passerelle
Recherche des mots de passe LAPS et des clés BitLocker, capture d’identifiants en clair et password spray observés.
Élevé
Élévation de privilèges sans correctif
Exploitable seulement après une exécution de code en tant que cgi-server, que le correctif de la CVE-2026-104935 ferme ; le risque dépend de la découverte d’un autre point d’entrée.
Modéré
Fiabilité de l’attribution
Acteur inconnu, une seule victime décrite, motivation estimée à confiance faible.
Faible
Note de méthode

Analyse fondée sur l’avis Ivanti 000109571 du 13 octobre 2026, le guide de compatibilité 000108861 dans son état du 25 septembre 2026, l’analyse de Volexity du 13 octobre 2026 et ses indicateurs sur GitHub, l’alerte de la CISA et la fiche de la CVE consultée sur Vulnerability-Lookup, le 14 octobre 2026. Les indicateurs n’ont pas été testés. Les éléments de la chaîne d’exploitation sont repris au niveau de détail utile à la détection. Les niveaux de la grille relèvent du jugement.

Lexique

  1. ICS (1) : Ivanti Connect Secure, passerelle d’accès distant d’Ivanti, anciennement Pulse Connect Secure.
  2. VPN (2) : Virtual Private Network, réseau privé virtuel.
  3. CVE (3) : Common Vulnerabilities and Exposures, identifiant public attribué à une vulnérabilité.
  4. CISA (4) : Cybersecurity and Infrastructure Security Agency, agence américaine de cybersécurité et de sécurité des infrastructures.
  5. KEV (5) : Known Exploited Vulnerabilities, catalogue de la CISA des vulnérabilités dont l’exploitation est constatée.
  6. YARA (6) : outil et langage de règles de détection de motifs dans des fichiers ou des régions mémoire.
  7. BOD (7) : Binding Operational Directive, directive opérationnelle contraignante de la CISA pour les agences fédérales civiles américaines.
  8. ISA (8) : Ivanti Secure Access, gamme de plateformes matérielles et virtuelles sur lesquelles s’exécute Connect Secure.
  9. CPE (9) : Common Platform Enumeration, nomenclature normalisée des produits et versions, employée par la NVD pour décrire les configurations vulnérables.
  10. NVD (10) : National Vulnerability Database, base de vulnérabilités du NIST.
  11. CNA (11) : CVE Numbering Authority, organisme habilité à attribuer des CVE et à publier leur fiche ; ici Ivanti.
  12. CGI (12) : Common Gateway Interface, interface d’exécution de scripts par un serveur web.
  13. URL (13) : Uniform Resource Locator, adresse d’une ressource sur le web.
  14. HTTP (14) : Hypertext Transfer Protocol, protocole de transfert du web.
  15. CWE (15) : Common Weakness Enumeration, classification des faiblesses logicielles.
  16. MD5 (16) : Message Digest 5, fonction de hachage.
  17. ZIP (17) : format d’archive compressée.
  18. HTTPS (18) : HTTP Secure, HTTP chiffré par TLS.
  19. LDAP (19) : Lightweight Directory Access Protocol, protocole d’accès aux annuaires, dont Active Directory.
  20. LAPS (20) : Local Administrator Password Solution, solution Microsoft de gestion des mots de passe d’administrateur local, stockés dans Active Directory.
  21. JSON (21) : JavaScript Object Notation, format texte de données structurées.
  22. FTP (22) : File Transfer Protocol, protocole de transfert de fichiers.
  23. NTLM (23) : NT LAN Manager, protocole d’authentification de Microsoft.
  24. DNS (24) : Domain Name System, système de résolution des noms de domaine.
  25. LLM (25) : Large Language Model, grand modèle de langage.
  26. IP (26) : Internet Protocol, protocole d’adressage du réseau Internet.
  27. VPS (27) : Virtual Private Server, serveur virtuel loué chez un hébergeur.
  28. CVSS (28) : Common Vulnerability Scoring System, système de notation de la gravité des vulnérabilités.
  29. SSVC (29) : Stakeholder-Specific Vulnerability Categorization, méthode d’aide à la décision de traitement des vulnérabilités, appliquée par la CISA.
  30. UTC (30) : Coordinated Universal Time, temps universel coordonné.
  31. vTPM (31) : virtual Trusted Platform Module, module de sécurité matériel émulé pour une machine virtuelle.
  32. SHA-256 (32) : Secure Hash Algorithm 256 bits, fonction de hachage employée pour les empreintes de fichiers.
  33. API (33) : Application Programming Interface, interface de programmation.

Sources

  1. Ivanti, Security Advisory Ivanti Connect Secure (CVE-2026-104935), article 000109571, 13 octobre 2026. hub.ivanti.com
  2. Ivanti, Ivanti Connect Secure 25.x Upgrade and Migration Compatibility Guide, article 000108861, 6 septembre 2026, modifié le 25 septembre 2026. hub.ivanti.com
  3. Volexity, Charlie Gardner, Sean Koessel, Steven Adair, A Series of Unauthenticated Events: Chained Exploitation of Ivanti Connect Secure Zero-Days, 13 octobre 2026. volexity.com
  4. Volexity, indicateurs et règles YARA de la campagne, iocs.csv et rules.yar, 12 octobre 2026. github.com/volexity/threat-intel
  5. CISA, CISA Urges Patching Newly Exploited Vulnerability in Ivanti Connect Secure, 13 octobre 2026. cisa.gov
  6. CISA, catalogue Known Exploited Vulnerabilities, entrée CVE-2026-104935, consulté le 14 octobre 2026. cisa.gov/known-exploited-vulnerabilities-catalog
  7. RadioCSIRT, Vulnerability-Lookup, fiche CVE-2026-104935 (données NVD, CNA et ADP de la CISA), consultée le 14 octobre 2026. cve.radiocsirt.org
  8. BleepingComputer, Sergiu Gatlan, Ivanti warns of Connect Secure zero-day exploited in attacks, 13 octobre 2026. bleepingcomputer.com

Marquage TLP:CLEAR, PAP:CLEAR. Diffusion libre, exploitation sans restriction.

Les analyses présentées ici n’engagent que leur auteur et reposent sur les sources publiques listées ci-dessus.