Threat Intelligence

CVE-2026-104286 : un octet nul et un ../ suffisent pour écrire où l'on veut sur une passerelle FortiMail

Admin CyberAfrik 02 October 2026 37 lectures
CVE-2026-104286 : un octet nul et un ../ suffisent pour écrire où l'on veut sur une passerelle FortiMail

Rapport CTI technique du 2 octobre 2026

Résumé exécutif

Fortinet a confirmé l'exploitation active de CVE-2026-104286, une vulnérabilité de FortiMail notée 9,8 qui permet à un attaquant non authentifié d'écrire des fichiers arbitraires sur le système sous-jacent par simple requête HTTP ou HTTPS. Le défaut combine une traversée de chemin (CWE-22) et une mauvaise neutralisation de l'octet nul (CWE-158). La CISA l'a ajoutée au catalogue KEV le 1er octobre 2026 et demande aux agences fédérales de corriger ou d'appliquer les contournements avant le 4 octobre.

Le point qui doit inquiéter les équipes : à la date de publication, les correctifs pour les branches 8.0, 7.6 et 7.4 sont annoncés comme « à venir ». Les seules protections immédiates sont la désactivation de la fonction IBE (Identity Based Encryption) et la fermeture de l'interface de gestion vers Internet. Les IOC publiés par Fortinet décrivent une persistance par ld.so.preload et une bibliothèque liblog.so injectée, ce qui signifie qu'une passerelle compromise reste compromise après une mise à jour.

Chronologie

DateÉvénement
Septembre 2026Découverte interne par Gwendal Guégniaud (Fortinet Product Security)
1er octobre 2026Publication de l'advisory FG-IR-26-175, exploitation confirmée, IOC publiés
1er octobre 2026Ajout de CVE-2026-104286 au catalogue CISA KEV
2 octobre 2026Couverture The Hacker News, correctifs 8.0.2 / 7.6.7 / 7.4.9 toujours annoncés comme à venir
4 octobre 2026Échéance BOD 22-01 pour les agences fédérales américaines

Fiche vulnérabilité (format fiche CTI)

CVE-2026-104286 | CVSS 9,8 | Fortinet FortiMail (interface web, module IBE)

Description technique. Le serveur web de FortiMail ne restreint pas correctement les chemins reçus dans certaines requêtes et ne neutralise pas l'octet nul. Un attaquant peut faire remonter un chemin hors du répertoire prévu avec des séquences ../, puis tronquer l'extension ou le suffixe imposé côté serveur avec un %00. Résultat : écriture d'un fichier au contenu et à l'emplacement choisis par l'attaquant. Fortinet associe la mitigation à la fonction IBE, ce qui pointe vers le chemin de code IBE comme point d'entrée.

Versions affectées :

  • FortiMail 8.0.0 à 8.0.1 (corrigé en 8.0.2, à venir)
  • FortiMail 7.6.0 à 7.6.6 (corrigé en 7.6.7, à venir)
  • FortiMail 7.4.0 à 7.4.8 (corrigé en 7.4.9, à venir)
  • FortiMail 7.2.0 à 7.2.9 (pas de correctif, migration vers 7.4 ou supérieur)

Conditions d'exploitation. Accès réseau HTTP/HTTPS à l'interface concernée, aucune authentification, aucune interaction utilisateur. Le module IBE activé semble requis au vu de la mitigation proposée.

PoC disponible : non, aucun PoC public recensé au 2 octobre 2026. Exploitation in the wild confirmée par Fortinet et la CISA.

Patch/mitigation : désactiver IBE (config system encryption ibe / set status disable / end), retirer l'interface de gestion d'Internet, puis appliquer 8.0.2, 7.6.7 ou 7.4.9 dès leur sortie.

Diagramme de la chaîne d'attaque

Chaîne d'attaque CVE-2026-104286 FortiMail

Chaîne reconstituée à partir de l'advisory Fortinet FG-IR-26-175 et des IOC publiés. Sources : Fortinet PSIRT, CISA KEV, The Hacker News.

Analyse technique

Étape 1 : traversée de chemin tronquée par octet nul

Le schéma classique CWE-22 + CWE-158 ressemble à ceci côté serveur : le code concatène un répertoire de base, une valeur fournie par le client et un suffixe fixe, puis passe le résultat à une primitive C (open, fopen) qui s'arrête au premier \0. Une valeur du type ../../../data/etc/ld.so.preload%00 sort du répertoire de base et neutralise le suffixe. Le contenu écrit vient du corps de la requête. Fortinet n'a pas publié le nom exact de l'endpoint vulnérable ; le lien avec IBE est une déduction tirée du contournement officiel.

Étape 2 : dépôt de binaires et d'une bibliothèque partagée

Les IOC listent trois fichiers ajoutés : /data/lib/liblog.so, /data/bin/webconsole et /data/bin/mailservice. Les noms imitent des composants légitimes d'une passerelle mail. webconsole et mailservice sont vraisemblablement le backdoor et son lanceur, liblog.so l'implant chargé dans les processus.

Étape 3 : persistance par ld.so.preload

L'ajout de /data/etc/ld.so.preload est le marqueur le plus parlant. Toute bibliothèque listée dans ce fichier est chargée par le loader dynamique dans chaque processus lié dynamiquement au démarrage. Avec liblog.so dedans, l'attaquant obtient du hooking de fonctions libc (lecture de fichiers, listing de processus, réseau) dans tous les démons de l'appliance, y compris ceux qui servent l'interface d'administration. C'est la technique T1574.006 (Dynamic Linker Hijacking), redoutable sur une appliance où l'administrateur n'a pas de shell complet pour l'inspecter.

Étape 4 : altération de la configuration et du mécanisme de mise à jour

Trois fichiers sont modifiés : /bin/smit, /data/etc/httpd.conf et /data/migadmin.tar.gz. La modification de httpd.conf sert typiquement à exposer un handler ou une route cachée vers le backdoor. Celle de migadmin.tar.gz, archive utilisée lors des migrations et mises à niveau, laisse penser que l'attaquant cherche à survivre à un upgrade firmware. /bin/smit modifié touche un binaire système : à traiter comme une altération de la chaîne de confiance de l'appliance.

Étape 5 : contrôle et usage de la passerelle

Une passerelle FortiMail voit passer tout le courrier entrant et sortant de l'organisation. Un implant résident peut lire les messages, détourner des pièces jointes, collecter des identifiants transmis par mail ou servir de point de pivot vers les serveurs Exchange ou M365 en aval. Les deux adresses IP publiées par Fortinet sont les seuls indicateurs réseau connus à ce stade.

Indicateurs de compromission

TypeValeur
IPv479.141.169[.]187
IPv445.129.0[.]192
Fichier ajouté/data/lib/liblog.so
Fichier ajouté/data/bin/webconsole
Fichier ajouté/data/bin/mailservice
Fichier ajouté/data/etc/ld.so.preload
Fichier modifié/bin/smit
Fichier modifié/data/etc/httpd.conf
Fichier modifié/data/migadmin.tar.gz

MITRE ATT&CK

Fortinet n'a publié aucune cartographie ATT&CK. Le tableau suivant est notre propre lecture technique des IOC et de l'advisory, pas une attribution éditeur.

TactiqueTechniqueIDJustification
Initial AccessExploit Public-Facing ApplicationT1190Écriture de fichier non authentifiée via HTTP(S)
PersistenceHijack Execution Flow: Dynamic Linker HijackingT1574.006Ajout de /data/etc/ld.so.preload pointant vers liblog.so
PersistenceServer Software Component: Web ShellT1505.003Modification de httpd.conf pour exposer le backdoor
Defense EvasionMasquerading: Match Legitimate NameT1036.005Noms webconsole, mailservice, liblog.so
PersistenceCompromise Host Software BinaryT1554Modification de /bin/smit et de migadmin.tar.gz pour survivre aux mises à niveau (hypothèse)
CollectionEmail CollectionT1114Position de la passerelle sur le flux SMTP
Command and ControlApplication Layer Protocol: Web ProtocolsT1071.001Communication supposée vers les IP publiées

Remédiation : checklist opérationnelle

  1. Inventorier toutes les instances FortiMail et leur version (get system status).
  2. Désactiver IBE immédiatement si la fonction n'est pas indispensable : config system encryption ibe, set status disable, end.
  3. Retirer l'interface d'administration d'Internet ou la limiter à des réseaux de confiance (config system interface, champ allowaccess, et trusted hosts sur les comptes admin).
  4. Rechercher les 7 fichiers IOC sur chaque appliance. Si l'un d'eux est présent, traiter l'équipement comme compromis : isolement, ticket TAC Fortinet, réinstallation propre plutôt que simple mise à jour.
  5. Bloquer et rechercher dans les logs pare-feu, proxy et NetFlow toute communication avec 79.141.169[.]187 et 45.129.0[.]192 depuis le 1er septembre.
  6. Faire tourner les secrets stockés sur la passerelle : comptes admin, comptes LDAP de liaison, certificats TLS, clés DKIM.
  7. Migrer les instances 7.2 vers 7.4 ou supérieur, puis appliquer 8.0.2, 7.6.7 ou 7.4.9 dès leur publication.
  8. Ajouter une règle de détection sur les requêtes HTTP vers FortiMail contenant %00 ou ..%2f dans le chemin ou les paramètres.

Sources

Tags : CVE-2026-104286FortiMailFortinetCISA KEVpath traversalCWE-22ld.so.preloadécriture de fichier
Partager cet article