Sommario
Vulnerabilità: Escalation dei privilegi locali non autenticata via IPC fino a SYSTEM tramite la porta TCP 24801 del daemon Barrier
Vendor: debauchee (progetto Barrier)
Prodotto: Barrier 2.4.0 (versione finale, 2021-11-01)
CWE: CWE-306: Mancanza di autenticazione per funzioni critiche
Descrizione
Il servizio Windows di Barrier (barrierd.exe), che viene installato ed eseguito come LocalSystem, vincola un server di controllo IPC TCP su 127.0.0.1:24801 senza autenticazione, senza verifica dell'identità del client e senza controllo degli accessi. Qualsiasi processo locale, indipendentemente dal livello di privilegio, può connettersi a questa porta e inviare un messaggio kIpcCommand ("ICMD") contenente una riga di comando arbitraria e un flag "elevate" di 1 byte. Questo duplica il token primario SYSTEM di winlogon.exe e bang, hai eseguito codice come NT AUTHORITY\SYSTEM. Come mostra il POC, potresti anche causare la comparsa di un nuovo cmd.exe che viene eseguito come SYSTEM.
Passaggi per la riproduzione
- Ottenere l'esecuzione di codice locale a bassi privilegi su un host Windows con il servizio Barrier (barrierd.exe, LocalSystem) installato e in esecuzione.
- Aprire una connessione TCP a 127.0.0.1:24801.
- Inviare l'hello IPC: b"IHEL" + b"\x00" (si identifica come kIpcClientGui).
- Inviare il messaggio di comando: b"ICMD" + struct.pack(">I", len(cmd)) + cmd.encode("utf-8") + b"\x01" (elevate=1), dove cmd = " -d x /c <comando_attaccante>" (per un comando one-shot) oppure " -d x /k <comando_attaccante>" (per evitare il ciclo di rilancio del watchdog del daemon se il payload stesso non mantiene vivo un processo, ad esempio quando si usa
start per far apparire una finestra visibile). Il prefisso "-d x" è RICHIESTO per evitare di far crashare il daemon tramite il bug companion di dereferenziazione NULL.
- Il thread watchdog di barrierd.exe enumera la sessione console attiva, apre winlogon.exe e duplica il suo token primario SYSTEM.
- CreateProcessAsUser(systemToken, NULL, cmd, ...) genera il comando dell'attaccante come NT AUTHORITY\SYSTEM -- il parser di commutazione permissivo di cmd.exe ignora il rumore iniziale "-d x" e onora correttamente "/c"/"/k" come "esegui il resto come comando".
- PERSISTENZA: il comando eseguito viene salvato automaticamente e verrà rieseguito come SYSTEM a ogni riavvio/riaccensione del servizio senza ulteriori azioni da parte dell'attaccante, finché non viene esplicitamente cancellato inviando un comando vuoto o modificando direttamente HKLM\SOFTWARE\Barrier.
Codice interessato
- src/lib/ipc/IpcClientProxy.cpp - Comando + byte elevate
- src/lib/ipc/IpcServer.cpp -- Nessuna autenticazione sul percorso di accettazione IPC
- src/lib/barrier/win32/DaemonApp.cpp -- Scarta i risultati e persiste il comando nel registro HKLM\SOFTWARE\Barrier
- src/lib/platform/MSWindowsWatchdog.cpp -- Token SYSTEM acquisito
Codice: https://github.com/debauchee/barrier/releases/tag/v2.4.0
Proof-of-Concept (POC) o niente
Una Proof-of-Concept (POC) è stata inclusa per dimostrare che è reale.
POC -- Debauchee_Barrier_Privesc.py

Impatto
Un attaccante può sfruttare questa vulnerabilità per ottenere privilegi a livello SYSTEM. Peggio ancora, il comando eseguito verrà automaticamente attivato al riavvio/avvio.
Mitigazione suggerita
Barrier non è più mantenuto e non riceverà una correzione. Per le organizzazioni che eseguono ancora Barrier, migrare a una build corretta di Deskflow (il successore attivamente mantenuto) che affronta la stessa vulnerabilità in CVE-2026-41477 / GHSA-6rx5-g478-775c.
Cronologia della divulgazione
- 20 aprile 2026 -- Scoperta. Il progetto non è mantenuto e non c'è nessuno a cui segnalarla.
- 25 luglio 2026 -- Deciso che valeva la pena contattare NoCVE poiché questo progetto potrebbe potenzialmente essere biforcato.