Résumé
Vulnérabilité : Élévation locale de privilèges non authentifiée vers SYSTEM via le port TCP 24801 du démon Barrier
Fournisseur : debauchee (projet Barrier)
Produit : Barrier 2.4.0 (version finale, 2021-11-01)
CWE : CWE-306 : Absence d'authentification pour une fonction critique
Description
Le service Windows de Barrier (barrierd.exe), installé et exécuté en tant que LocalSystem, lie un serveur de contrôle IPC TCP sur 127.0.0.1:24801 sans authentification, sans vérification de l'identité du client et sans contrôle d'accès. Tout processus local, quel que soit son niveau de privilège, peut se connecter à ce port et envoyer un message kIpcCommand (« ICMD ») contenant une ligne de commande arbitraire et un indicateur « elevate » d'un octet. Cela duplique le jeton principal SYSTEM de winlogon.exe et hop, votre code s'exécute en tant que NT AUTHORITY\SYSTEM. Comme le montre la POC, vous pouvez également provoquer l'apparition d'un nouveau cmd.exe qui s'exécute en tant que SYSTEM.
Étapes pour reproduire
- Obtenez une exécution de code locale à faibles privilèges sur un hôte Windows où le service Barrier (barrierd.exe, LocalSystem) est installé et en cours d'exécution.
- Ouvrez une connexion TCP vers 127.0.0.1:24801.
- Envoyez le message d'accueil IPC : b"IHEL" + b"\x00" (identifie en tant que kIpcClientGui).
- Envoyez le message de commande : b"ICMD" + struct.pack(">I", len(cmd)) + cmd.encode("utf-8") + b"\x01" (elevate=1), où cmd = " -d x /c " (pour une commande à exécution unique) ou " -d x /k " (pour éviter la boucle de relance du watchdog du démon si le payload lui-même ne maintient pas de processus actif, par exemple lors de l'utilisation de
start pour faire apparaître une fenêtre visible). Le préfixe "-d x" est OBLIGATOIRE pour éviter de faire planter le démon via le bug compagnon de déréférencement NULL.
- Le thread watchdog de barrierd.exe énumère la session console active, ouvre winlogon.exe et duplique son jeton principal SYSTEM.
- CreateProcessAsUser(systemToken, NULL, cmd, ...) lance la commande de l'attaquant en tant que NT AUTHORITY\SYSTEM -- l'analyseur d'options tolérant de cmd.exe ignore le bruit "-d x" au début et honore correctement "/c"/"/k" comme « exécuter le reste comme commande ».
- PERSISTANCE : la commande exécutée est automatiquement enregistrée et sera réexécutée en tant que SYSTEM à chaque redémarrage du service ou de la machine sans action supplémentaire de l'attaquant, jusqu'à ce qu'elle soit explicitement effacée en envoyant une commande vide ou en modifiant directement HKLM\SOFTWARE\Barrier.
Code affecté
- src/lib/ipc/IpcClientProxy.cpp - Commande + octet elevate
- src/lib/ipc/IpcServer.cpp -- Aucune authentification sur le chemin d'acceptation IPC
- src/lib/barrier/win32/DaemonApp.cpp -- Ignore les résultats et persiste la commande dans la base de registre HKLM\SOFTWARE\Barrier
- src/lib/platform/MSWindowsWatchdog.cpp -- Jeton SYSTEM acquis
Code : https://github.com/debauchee/barrier/releases/tag/v2.4.0
Preuve de concept (POC) ou rien
Une preuve de concept (POC) a été incluse pour prouver que c'est bien réel.
POC -- Debauchee_Barrier_Privesc.py

Impact
Un attaquant peut exploiter cette vulnérabilité pour obtenir des privilèges de niveau SYSTEM. Pire encore, la commande exécutée se déclenchera automatiquement au redémarrage/démarrage.
Correctif suggéré
Barrier n'est plus maintenu et ne recevra pas de correctif. Pour les organisations qui utilisent encore Barrier, migrez vers une version corrigée de Deskflow (le successeur activement maintenu) qui traite la même vulnérabilité dans CVE-2026-41477 / GHSA-6rx5-g478-775c.
Chronologie de divulgation
- 20 avril 2026 -- Découverte. Le projet n'est plus maintenu et il n'y a personne à qui la signaler.
- 25 juillet 2026 -- Décision qu'il valait la peine de contacter NoCVE car ce projet pourrait potentiellement être forké.