Zusammenfassung
Schwachstelle: Nicht authentifizierte lokale IPC-Privilegienerweiterung auf SYSTEM über den Barrier-Daemon-TCP-Port 24801
Anbieter: debauchee (Barrier-Projekt)
Produkt: Barrier 2.4.0 (finale Version, 2021-11-01)
CWE: CWE-306: Fehlende Authentifizierung für kritische Funktion
Beschreibung
Der Windows-Dienst von Barrier (barrierd.exe), der als LocalSystem installiert ist und ausgeführt wird, bindet einen TCP-IPC-Steuerungsserver an 127.0.0.1:24801 – ohne Authentifizierung, ohne Client-Identitätsprüfung und ohne Zugriffskontrolle. Jeder lokale Prozess, unabhängig von seiner Berechtigungsstufe, kann sich mit diesem Port verbinden und eine kIpcCommand-("ICMD-")Nachricht mit einer beliebigen Befehlszeile und einem 1-Byte-"elevate"-Flag senden. Dadurch wird das primäre SYSTEM-Token von winlogon.exe dupliziert und zack hast du Code als NT AUTHORITY\SYSTEM ausgeführt. Wie der POC zeigt, kann man auch ein neues cmd.exe aufpoppen lassen, das als SYSTEM läuft.
Schritte zur Reproduktion
- Verschaffen Sie sich die Ausführung von lokalem Code mit niedrigen Berechtigungen auf einem Windows-Host, auf dem der Barrier-Dienst (barrierd.exe, LocalSystem) installiert ist und ausgeführt wird.
- Öffnen Sie eine TCP-Verbindung zu 127.0.0.1:24801.
- Senden Sie den IPC-Hello: b"IHEL" + b"\x00" (identifiziert als kIpcClientGui).
- Senden Sie die Befehlsnachricht: b"ICMD" + struct.pack(">I", len(cmd)) + cmd.encode("utf-8") + b"\x01" (elevate=1), wobei cmd = " -d x /c " (für einen einmaligen Befehl) oder " -d x /k " (um die Watchdog-Neustartschleife des Daemons zu vermeiden, falls das Payload selbst keinen Prozess am Leben hält, z. B. bei Verwendung von
start, um ein sichtbares Fenster zu öffnen). Das Präfix "-d x" ist ERFORDERLICH, um einen Absturz des Daemons durch den begleitenden NULL-Deref-Fehler zu vermeiden.
- Der Watchdog-Thread von barrierd.exe ermittelt die aktive Konsolensitzung, öffnet winlogon.exe und dupliziert dessen primäres SYSTEM-Token.
- CreateProcessAsUser(systemToken, NULL, cmd, ...) startet den Befehl des Angreifers als NT AUTHORITY\SYSTEM -- der eigene nachsichtige Schalterparser von cmd.exe ignoriert das führende "-d x"-Rauschen und behandelt "/c"/"/k" korrekt als „Rest als Befehl ausführen“.
- PERSISTENZ: Der ausgeführte Befehl wird automatisch gespeichert und bei jedem Dienstneustart/-reboot ohne weiteres Zutun des Angreifers erneut als SYSTEM ausgeführt, bis er explizit durch Senden eines leeren Befehls oder durch direktes Bearbeiten von HKLM\SOFTWARE\Barrier gelöscht wird.
Betroffener Code
- src/lib/ipc/IpcClientProxy.cpp - Befehl + elevate-Byte
- src/lib/ipc/IpcServer.cpp -- Keine Authentifizierung im IPC-Accept-Pfad
- src/lib/barrier/win32/DaemonApp.cpp -- Verwirft Ergebnisse und speichert den Befehl in der Registrierung HKLM\SOFTWARE\Barrier
- src/lib/platform/MSWindowsWatchdog.cpp -- SYSTEM-Token erlangt
Code: https://github.com/debauchee/barrier/releases/tag/v2.4.0
Proof-of-Concept (POC) oder geh nach Hause
Ein Proof-of-Concept (POC) wurde beigefügt, um zu beweisen, dass es real ist.
POC -- Debauchee_Barrier_Privesc.py

Auswirkungen
Ein Angreifer kann diese Schwachstelle ausnutzen, um SYSTEM-Berechtigungen zu erlangen. Schlimmer noch: Der ausgeführte Befehl wird beim Neustart/Start automatisch ausgelöst.
Empfohlene Behebung
Barrier wird nicht mehr gewartet und wird keinen Fix erhalten. Organisationen, die Barrier weiterhin betreiben, sollten auf einen gepatchten Build von Deskflow (dem aktiv gewarteten Nachfolger) migrieren, der dieselbe Schwachstelle in CVE-2026-41477 / GHSA-6rx5-g478-775c behebt.
Offenlegungszeitplan
-
- April 2026 -- Entdeckt. Das Projekt wird nicht mehr gewartet und es gibt niemanden, an den man sich wenden kann.
-
- Juli 2026 -- Beschlossen, dass es sich lohnt, NoCVE zu kontaktieren, da dieses Projekt möglicherweise geforkt werden könnte.