En bref

  • CVE-2026-44194 (CVSS 9.1 Critical) : injection de commande OS dans la gestion des utilisateurs d'OPNsense, permettant l'exécution de code arbitraire en root via un nom d'utilisateur email malformé — accompagnée de CVE-2026-45158 (CVSS 9.1), injection DHCP exploitable sans credentials
  • Systèmes affectés : OPNsense toutes versions antérieures à 26.1.8 (Community Edition et Business Edition)
  • Action urgente : mettre à jour immédiatement vers OPNsense 26.1.8 ; aucun contournement disponible sauf suppression des privilèges user-management de tous les comptes non-administrateurs

Les faits

Le 12 mai 2026, le projet OPNsense a publié la version 26.1.8 corrigeant CVE-2026-44194, une vulnérabilité d'injection de commande OS (OS Command Injection, CWE-78) dans le script de synchronisation des utilisateurs locaux. Avec un score CVSS v3.1 de 9.1 (vecteur : CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H), la faille est classée critique malgré l'exigence de privilèges élevés pour l'exploitation initiale, car elle entraîne un changement de scope complet : depuis l'application web OPNsense vers le système d'exploitation FreeBSD sous-jacent avec les privilèges root. Un proof-of-concept fonctionnel sous forme de commande curl a été publié simultanément dans l'advisory GitHub GHSA-f59w-m967-9rf6.

La vulnérabilité réside dans le fichier /core/src/opnsense/scripts/auth/sync_user.php, le script responsable de la synchronisation des comptes utilisateurs locaux sur le système FreeBSD sous-jacent à OPNsense. Ce script est invoqué lorsqu'un administrateur crée ou modifie un utilisateur via l'API OPNsense. Le problème fondamental est une interpolation de chaîne non sécurisée : la variable $username est passée directement et sans échappement dans une commande shell exécutée via la fonction mwexecf(). Le shell FreeBSD interprète alors tous les métacaractères contenus dans la valeur du nom d'utilisateur, permettant l'injection de commandes arbitraires exécutées avec les privilèges root du backend OPNsense.

La particularité de cette vulnérabilité réside dans le vecteur d'injection choisi : les adresses email utilisées comme noms d'utilisateurs. OPNsense accepte les adresses email comme identifiants d'utilisateurs, conformément à la RFC 5321 sur la syntaxe des adresses email. Cette RFC autorise les quoted local-parts — la partie avant le symbole @, encadrée par des guillemets doubles — qui peuvent légalement contenir des backticks, points-virgules, pipes, dollars, et autres métacaractères shell. La validation d'OPNsense accepte correctement ces adresses comme syntaxiquement valides selon la RFC, mais ne neutralise pas ces métacaractères avant leur passage à la couche d'exécution shell — une erreur classique d'échappement de contexte entre deux niveaux de validation distincts.

La chaîne d'exploitation est d'une simplicité redoutable. L'attaquant, disposant d'un compte avec le privilège user-management ou de droits administrateur équivalents, envoie une requête POST à l'endpoint /api/auth/user/add/ avec un champ name contenant une injection shell encapsulée dans une adresse email RFC 5321 valide. La valeur construite avec des backticks encadrant une commande arbitraire est acceptée comme email valide par OPNsense, mais déclenche l'exécution de cette commande avec écriture du résultat sur le filesystem du pare-feu. Une seule requête API suffit à obtenir l'exécution de code root arbitraire sur l'appliance, sans autre interaction requise.

Le proof-of-concept publié dans l'advisory GitHub GHSA-f59w-m967-9rf6 est remarquablement simple : une unique commande curl utilisant une clé API valide et un JSON body contenant le nom d'utilisateur malformé. Aucun outil spécialisé ou expertise technique avancée n'est requise pour exploiter cette vulnérabilité une fois les credentials appropriés obtenus. Cette facilité d'exploitation est un facteur aggravant majeur : tout acteur malveillant ayant compromis un compte administrateur OPNsense par phishing, credential stuffing, ou réutilisation de mot de passe peut immédiatement escalader vers root OS, obtenant ainsi un contrôle total sur le pare-feu et par extension sur l'ensemble de l'infrastructure réseau qu'il protège.

CVE-2026-44194 est accompagnée d'une vulnérabilité complémentaire, CVE-2026-45158, également corrigée dans OPNsense 26.1.8 et évaluée CVSS 9.1. CVE-2026-45158 est une injection d'argument (CWE-88) dans la gestion des baux DHCP : un nom d'hôte DHCP non sanitisé est écrit dans un fichier de configuration dhclient. Lors du prochain renouvellement de bail DHCP, le script dhclient-script invoque ifconfig via une instruction eval avec le nom d'hôte malveillant comme variable d'environnement, exécutant des commandes arbitraires en root. Contrairement à CVE-2026-44194, ce vecteur d'exploitation ne nécessite pas de credentials API : un attaquant contrôlant un serveur DHCP sur un segment réseau servi par OPNsense peut exploiter cette faille directement depuis le réseau, sans aucune authentification préalable au pare-feu. Cette capacité rend CVE-2026-45158 particulièrement dangereuse dans les environnements exposant des segments Wi-Fi ou des zones réseau accessibles à des tiers.

La découverte a été réalisée par le chercheur sopex et divulguée via le processus de divulgation responsable d'OPNsense. La chronologie complète est la suivante : le 9 avril 2026, CERT-Bund publie un avis sur des CVE connexes d'OPNsense incluant une divulgation d'information (CVSS 8.2). Le 6 mai 2026, deux CVE complémentaires — CVE-2026-44193 et CVE-2026-44195 — sont divulguées. Le 12 mai 2026, CVE-2026-44194 et CVE-2026-45158 sont publiées simultanément au release d'OPNsense 26.1.8. Le 13 mai 2026, le NVD publie les entrées CVE et la couverture médiatique spécialisée débute via securityonline.info et TheHackerWire. Cette chronologie reflète une divulgation coordonnée et responsable, avec le patch disponible au moment de la publication des détails techniques.

Le correctif appliqué dans OPNsense 26.1.8 est direct et efficace : remplacement de l'interpolation directe de $username dans les commandes shell par une exécution paramétrisée utilisant des placeholders %s et des tableaux d'arguments, empêchant l'interprétation des métacaractères shell. Une correction similaire a été appliquée pour CVE-2026-45158 dans la gestion des noms d'hôtes DHCP. La mise à jour vers OPNsense 26.1.8 est la seule remédiation complète disponible pour les deux CVE. Aucune mitigation partielle n'est possible tant que la version reste non mise à jour, à l'exception de la suppression des privilèges user-management de tous les comptes non strictement nécessaires pour CVE-2026-44194.

OPNsense est une plateforme de pare-feu open source dérivée de FreeBSD, largement déployée dans les environnements d'entreprise, PME, MSSP et home labs. Sa position stratégique dans l'infrastructure réseau en fait une cible de choix : un pare-feu compromis contrôle l'ensemble du trafic réseau entrant et sortant, les tunnels VPN (WireGuard, OpenVPN, IPsec), les règles de filtrage, et dans de nombreux cas l'accès Internet de l'ensemble des postes de l'organisation. La compromission d'un pare-feu OPNsense est équivalente à la compromission du périmètre de sécurité réseau dans son intégralité.

Impact et exposition

La compromission d'un pare-feu OPNsense via CVE-2026-44194 confère à l'attaquant un accès root au système FreeBSD sous-jacent, avec des conséquences immédiates en cascade sur l'ensemble de l'infrastructure réseau. L'attaquant peut modifier toutes les règles de pare-feu pour ouvrir des backdoors réseau, capturer l'ensemble du trafic transitant par le pare-feu via tcpdump ou des hooks eBPF, exfiltrer les clés privées des certificats TLS et des tunnels VPN, créer des comptes système persistants et injecter des clés SSH autorisées, et modifier le routing pour rediriger le trafic vers des infrastructures malveillantes. Dans les déploiements où OPNsense termine des tunnels VPN d'accès distant, la compromission expose directement l'ensemble des sessions VPN actives et potentiellement les credentials des utilisateurs distants.

Le vecteur de compromission initiale le plus probable pour CVE-2026-44194 est l'obtention de credentials d'un compte avec privilèges user-management via phishing, password spray, ou credential stuffing. CVE-2026-45158, en revanche, ne nécessite aucun credential : un attaquant ayant la capacité de contrôler ou d'usurper un serveur DHCP sur un segment réseau desservi par OPNsense peut déclencher l'exploitation lors du prochain renouvellement de bail DHCP — un vecteur particulièrement préoccupant dans les environnements Wi-Fi publics, les zones réseau invité, ou les segments accessibles à des prestataires externes.

La combinaison des deux CVE crée une chaîne d'exploitation potentielle à deux étapes : utiliser CVE-2026-45158 sans credentials pour obtenir un shell root initial depuis le réseau, puis exploiter ce shell pour pivoter vers d'autres systèmes ou exfiltrer des données. À ce jour, au 18 mai 2026, aucune exploitation in-the-wild n'a été confirmée pour ces deux CVE. Cependant, la publication du PoC simplifie considérablement le travail des attaquants, et le délai habituel entre publication de PoC et exploitation active est de l'ordre de quelques jours à quelques semaines pour des vulnérabilités de cette criticité avec des conditions d'exploitation aussi simples.

Les organisations les plus exposées sont celles déployant OPNsense comme pare-feu périmétrique principal, notamment les PME et les MSSP gérant des infrastructures pour le compte de plusieurs clients. La criticité est amplifiée dans les environnements multi-tenant où une compromission d'OPNsense pourrait permettre un mouvement latéral vers plusieurs clients distincts partageant la même infrastructure de routage. Les environnements hébergeant des zones Wi-Fi invité ou des segments DHCP accessibles à des tiers sont particulièrement exposés à CVE-2026-45158.

Recommandations immédiates

  • Mettre à jour immédiatement OPNsense vers la version 26.1.8 via System > Firmware > Updates — corrige simultanément CVE-2026-44194 et CVE-2026-45158 — advisory : OPNsense GitHub Security Advisory GHSA-f59w-m967-9rf6
  • Si la mise à jour immédiate est impossible : révoquer le privilège user-management de tous les comptes non strictement nécessaires et n'accorder ce privilège qu'aux comptes administrateurs principaux avec authentification multifacteur activée
  • Auditer les journaux d'accès API OPNsense pour identifier d'éventuelles tentatives d'exploitation : rechercher les requêtes POST vers /api/auth/user/add/ avec des champs name contenant des backticks, points-virgules, pipes ou autres métacaractères shell
  • Vérifier l'intégrité du système FreeBSD sous-jacent : contenu du répertoire /conf/, liste des comptes système dans /etc/passwd, clés SSH autorisées dans /root/.ssh/authorized_keys, tâches cron dans /etc/cron*
  • Pour CVE-2026-45158 : activer le DHCP snooping sur les switches qui le supportent, identifier tout serveur DHCP non autorisé sur les segments desservis par OPNsense
  • Changer tous les secrets API OPNsense et mots de passe d'administration après la mise à jour, par mesure de précaution systématique

⚠️ Urgence

CVE-2026-44194 et CVE-2026-45158 permettent toutes deux une exécution de code root sur un pare-feu OPNsense, donnant à l'attaquant un contrôle total sur votre réseau. Un proof-of-concept public est disponible depuis le 12 mai 2026. Toute organisation utilisant OPNsense doit mettre à jour vers la version 26.1.8 immédiatement, sans attendre la prochaine fenêtre de maintenance planifiée.

Comment savoir si je suis vulnérable ?

Vérifiez votre version OPNsense dans l'interface web sous Lobby > Dashboard > Firmware, ou via la commande opnsense-version en SSH. Si la version affichée est inférieure à 26.1.8, votre système est vulnérable à CVE-2026-44194 (si des comptes avec privilèges user-management existent) et à CVE-2026-45158 (si OPNsense fournit du DHCP sur des segments accessibles à des tiers). Pour vérifier les comptes à risque pour CVE-2026-44194 : dans System > Access > Users, listez tous les utilisateurs et vérifiez ceux ayant le privilège User Manager (accounts and groups) assigné. Tout compte avec ce privilège représente un vecteur d'exploitation potentiel si un attaquant compromet ces credentials.

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