
Technischer Bericht und Proof-of-Concept für CVE-2026-8069, eine lokale Privilegieneskalation in den Diensten Acer NitroSense und PredatorSense, die eine benannte Pipe ausnutzt, um beliebigen Code als SYSTEM auszuführen.
Acer NitroSense und PredatorSense 3.x installierten einen Windows-Dienst namens PSSvc, der ein benutzerdefiniertes Named-Pipe-Protokoll für lokale Benutzer bereitstellte. Ein Protokollbefehl akzeptierte einen vom Aufrufer kontrollierten ausführbaren Pfad, duplizierte das Token von winlogon.exe und startete diese ausführbare Datei als NT AUTHORITY\SYSTEM.
Die Pfadeinschränkung im verwundbaren Dienst war ein Substring-Test. Ein Pfad, der innerhalb des Dienstverzeichnisses begann und dann ..\-Komponenten verwendete, bestand den Test, löste aber an anderer Stelle auf. In Kombination mit der permissiven Zugriffskontrolle der Pipe und dem Fehlen einer Aufrufer-Autorisierung ermöglichte dies einem normalen lokalen Benutzer, einen SYSTEM-Prozess zu erhalten.
Acer vergab CVE-2026-8069, veröffentlichte korrigierte Versionen und würdigte Artem Domarev von der Universität Hradec Králové in seiner Sicherheitsempfehlung.
Dieser Artikel konzentriert sich auf den Prozesserstellungs-/LPE-Pfad. Acers Empfehlung beschreibt auch das Löschen beliebiger Dateien, das außerhalb des Rahmens dieser Validierung lag.
Die Wahl der Forschungsrichtung wurde auch durch eine öffentliche Analyse von OEM-Software beeinflusst, die von Leon Jacobs von SensePost veröffentlicht wurde. Diese Arbeit dokumentierte Schwachstellen in ASUS DriverHub, MSI Center, Acer Control Centre und Razer Synapse 4 (Jacobs, 2025). Sie untermauerte die Idee, dass vom Hersteller gelieferte Hardware-Dienstprogramme eine bedeutende und wenig erforschte Angriffsfläche darstellen können. Anstatt Acer Control Centre erneut zu untersuchen, erweiterte ich die Untersuchung auf eine andere Acer-Produktfamilie: NitroSense und PredatorSense.
| Element | Ergebnis |
|---|---|
| CVE | CVE-2026-8069 |
| Getestete verwundbare Komponente | PSSvc.exe 3.1.3052.0, signiert von Acer Incorporated |
| Dienstidentität | LocalSystem |
| IPC-Endpunkt | \\.\pipe\predatorsense_service_namedpipe |
| Verwundbarer Befehl | 0x0007 |
| Erforderlicher Angreiferzugriff | Authentifizierter lokaler Benutzer, der ein Programm ausführen kann |
| Benutzerinteraktion | Keine |
| Ergebnis | Beliebige ausführbare Datei gestartet als NT AUTHORITY\SYSTEM |
| NVD CVSS v3.1 | 7.8 Hoch — AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| Korrigierte Versionen | PredatorSense 3.00.3198; NitroSense 3.01.3056 |
Die Ausbeutungskette ist kurz:
authentifizierter lokaler Benutzer
│
▼
permissive PSSvc Named Pipe
│ benutzerdefinierter Befehl 0x0007
▼
nur-Substring-Pfadprüfung
│ service-dir\..\..\..\Windows\System32\cmd.exe
▼
Duplizieren des winlogon.exe-Tokens der aktiven Sitzung
│
▼
CreateProcessAsUserW → NT AUTHORITY\SYSTEM
Es gibt eine Inkonsistenz in der öffentlichen Formulierung. Acers Seite besagt, dass NitroSense-Versionen „vor 3.01.3052" betroffen sind, doch die vom Hersteller signierte PSSvc.exe-Version 3.1.3052.0, die für diesen Artikel getestet wurde, ist nachweislich verwundbar. Dieselbe Seite identifiziert NitroSense 3.01.3056 als korrigierte Version. Der NVD-Anwendbarkeitsbereich erstreckt sich ebenfalls bis einschließlich, aber nicht einschließlich 3.01.3056.
Für PredatorSense endet Acers Satz zu betroffenen Versionen vor 3.00.3196, während die aufgeführte korrigierte Version 3.00.3198 ist und NVD letztere als obere Grenze verwendet.
Die konservative operative Regel ist daher einfach: Verwenden Sie den mehrdeutigen Satz zu „betroffenen" Versionen nicht als Patch-Prüfung. Aktualisieren Sie mindestens auf die von Acer genannten korrigierten Versionen — PredatorSense 3.00.3198 oder NitroSense 3.01.3056 — oder ein neueres modellkompatibles Paket.
Das Problem wurde mit dem ursprünglichen NitroSense-Paket reproduziert.
| Artefakt | SHA-256 |
|---|---|
NitroSense_V3.01.3052_MSFT_SIGNED_20230420.zip | 947FB7C62665875450AFA9C9E7919D2B061ED8197C11B28D64781F121B30C157 |
NitroSense.msi | 6F9D405B6D2ADF2992C4E071453AD2C919A6DD38A89A31EF96EAFE81C50A745C |
Installierte PSSvc.exe 3.1.3052.0 | 3BA836B6A5D95B55708E771B74F49098F58B096EF1F63C5CCAE355811E193A40 |
| Für die Validierung verwendeter PoC | 31BC81140BAB64A8B0CB70ACC1C2CF3CA84A7B00015E5610AC075DC50DCB0163 |
Die Authenticode-Signatur der PSSvc.exe wurde erfolgreich validiert und führte zu Acer Incorporated. Das MSI installierte PSSvc als bedarfsgestarteten Dienst mit eigenem Prozess, der als LocalSystem läuft.
Das NitroSense-Paket installiert:
SERVICE_NAME: PSSvc
DISPLAY_NAME: Predator Service
TYPE: WIN32_OWN_PROCESS
START_TYPE: DEMAND_START
ACCOUNT: LocalSystem
Ein SYSTEM-Dienst ist nicht automatisch verwundbar. Die wichtige Frage ist, ob ein Prozess mit geringeren Rechten Funktionen erreichen kann, die unter der Annahme entworfen wurden, dass ihr Aufrufer vertrauenswürdig ist.
Die String-Analyse legte sofort den IPC-Endpunkt offen:
\\.\pipe\predatorsense_service_namedpipe
Bei 0x140014AD0 erstellt der Dienst die Pipe und übergibt eine explizite Sicherheitsbeschreibung an CreateNamedPipeW:
D:(A;OICI;GA;;;BG)(D;OICI;GA;;;AN)(A;OICI;GRGWGX;;;AU)(A;OICI;GA;;;BA)
Dies ist eine wichtige explizite Korrektur: Der verwundbare Build übergibt keine NULL-Beschreibung. Er erstellt eine permissive DACL.
| SID-Abkürzung | Prinzipal | Effektive Berechtigung in der SDDL |
|---|---|---|
BG | Integrierte Gäste | Generische Alle |
AN | Anonym | Generische Alle verweigert |
AU | Authentifizierte Benutzer | Generisches Lesen, Schreiben und Ausführen |
BA | Integrierte Administratoren | Generische Alle |
Die AU-ACE reicht aus, damit ein normaler authentifizierter Benutzer die Pipe zum Lesen und Schreiben öffnen kann. Der Server führt dann keine Client-Impersonalisierung durch und trifft keine Autorisierungsentscheidung, bevor er privilegierte Befehle verteilt.
Der Client-Thread bei 0x14000ABB0 liest Nachrichten in einen 512-Byte-Puffer. Er parst die ersten drei Bytes als 16-Bit-Befehlsnummer und 8-Bit-Argumentanzahl. Jedes Argument ist längenpräfixiert:
Offset Größe Bedeutung
0x00 2 Befehls-ID, Little-Endian
0x02 1 Anzahl der Argumente
0x03 4 Länge von Argument 0
0x07 n Bytes von Argument 0
... wiederholte DWORD-Länge + Wert
String-Argumente sind UTF-16LE. Integer-Argumente sind Little-Endian-DWORDs. Der Dispatcher akzeptiert Befehls-IDs unterhalb von 0x23 und verwendet sie als Indizes in eine 35 Einträge umfassende Funktionstabelle bei 0x140052C90.
Der Eintrag für Befehl 0x0007 zeigt auf 0x14000BFD0.
Auf sein sicherheitsrelevantes Verhalten reduziert, sieht der Handler wie folgt aus:
int command_07(parsed_arguments *args)
{
wchar_t service_directory[MAX_PATH];
wchar_t *requested_path = args->wide_string[0];
uint32_t mode = args->dword[1];
GetModuleFileNameW(NULL, service_directory, MAX_PATH);
PathRemoveFileSpecW(service_directory);
if (wcsstr(requested_path, service_directory) != NULL)
return launch_with_selected_token(requested_path, mode);
return 0;
}