Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-8069 — Technical write-up e proof-of-concept per CVE-2026-8069, una escalation locale dei privilegi nei servizi Acer NitroSense e PredatorSense, che sfrutta una named pipe per eseguire codice arbitrario come SYSTEM. | Kitploit
Strumenti/GitHubGitHub/s1eezer/cve-2026-8069
Escalation di PrivilegiFramework di ExploitAnalisi delle VulnerabilitàExploitReverse EngineeringAnalisi di Binari
GitHubs1eezer/cve-2026-8069

CVE-2026-8069

Technical write-up e proof-of-concept per CVE-2026-8069, una escalation locale dei privilegi nei servizi Acer NitroSense e PredatorSense, che sfrutta una named pipe per eseguire codice arbitrario come SYSTEM.

Vedi Repository
191 mese faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Da una Named Pipe Acer a NT AUTHORITY\SYSTEM: CVE-2026-8069

Acer NitroSense e PredatorSense 3.x installavano un servizio Windows chiamato PSSvc che esponeva un protocollo personalizzato su named pipe agli utenti locali. Un comando del protocollo accettava un percorso eseguibile controllato dal chiamante, duplicava il token di winlogon.exe e avviava quell'eseguibile come NT AUTHORITY\SYSTEM.

La restrizione sul percorso nel servizio vulnerabile era un test di sottostringa. Un percorso che iniziava all'interno della directory del servizio e poi utilizzava componenti ..\ superava il test ma veniva risolto altrove. Combinato con il controllo di accesso permissivo della pipe e l'assenza di autorizzazione del chiamante, ciò consentiva a un utente locale standard di ottenere un processo SYSTEM.

Acer ha assegnato CVE-2026-8069, ha pubblicato versioni corrette e ha accreditato Artem Domarev dell'Università di Hradec Králové nel suo bollettino di sicurezza.

Questo articolo si concentra sul percorso di creazione processo/LPE. Il bollettino di Acer descrive anche l'eliminazione arbitraria di file, che era fuori dall'ambito di questa validazione.

Perché ho scelto questa direzione di ricerca

La scelta della direzione di ricerca è stata influenzata anche da un'analisi pubblica del software OEM pubblicata da Leon Jacobs di SensePost. Quel lavoro documentava vulnerabilità in ASUS DriverHub, MSI Center, Acer Control Centre e Razer Synapse 4 (Jacobs, 2025). Ha rafforzato l'idea che le utility hardware fornite dai vendor possano esporre una superficie d'attacco significativa e poco esplorata. Piuttosto che rivisitare Acer Control Centre, ho esteso l'indagine a una diversa famiglia di prodotti Acer: NitroSense e PredatorSense.

Riepilogo esecutivo

ElementoRisultato
CVECVE-2026-8069
Componente vulnerabile testatoPSSvc.exe 3.1.3052.0, firmato da Acer Incorporated
Identità del servizioLocalSystem
Endpoint IPC\\.\pipe\predatorsense_service_namedpipe
Comando vulnerabile0x0007
Accesso richiesto all'attaccanteUtente locale autenticato in grado di eseguire un programma
Interazione con l'utenteNessuna
RisultatoEseguibile arbitrario avviato come NT AUTHORITY\SYSTEM
CVSS v3.1 NVD7.8 Alto — AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Versioni correttePredatorSense 3.00.3198; NitroSense 3.01.3056

La catena di sfruttamento è breve:

utente locale autenticato
        │
        ▼
named pipe PSSvc permissiva
        │  comando personalizzato 0x0007
        ▼
controllo del percorso solo per sottostringa
        │  service-dir\..\..\..\Windows\System32\cmd.exe
        ▼
duplicazione del token di winlogon.exe della sessione attiva
        │
        ▼
CreateProcessAsUserW → NT AUTHORITY\SYSTEM

Un avvertimento sul numero di versione

C'è un'incoerenza nella formulazione pubblica. La pagina di Acer afferma che le versioni di NitroSense "precedenti alla 3.01.3052" sono vulnerabili, ma la versione 3.1.3052.0 di PSSvc.exe firmata dal vendor e testata per questo articolo è dimostrabilmente vulnerabile. La stessa pagina identifica NitroSense 3.01.3056 come versione corretta. Anche l'intervallo di applicabilità NVD si estende fino a, ma non includendo, 3.01.3056.

Per PredatorSense, la frase di Acer sulle versioni vulnerabili si ferma prima della 3.00.3196, mentre la versione corretta elencata è la 3.00.3198 e NVD usa quest'ultima come limite superiore.

La regola operativa prudente è quindi semplice: non usare l'ambigua frase "vulnerabili" come controllo per le patch. Aggiornare almeno alle versioni corrette indicate da Acer—PredatorSense 3.00.3198 o NitroSense 3.01.3056—o a un pacchetto più recente compatibile con il modello.

Artefatti testati

Il problema è stato riprodotto con il pacchetto NitroSense originale.

ArtefattoSHA-256
NitroSense_V3.01.3052_MSFT_SIGNED_20230420.zip947FB7C62665875450AFA9C9E7919D2B061ED8197C11B28D64781F121B30C157
NitroSense.msi6F9D405B6D2ADF2992C4E071453AD2C919A6DD38A89A31EF96EAFE81C50A745C
PSSvc.exe 3.1.3052.0 installato3BA836B6A5D95B55708E771B74F49098F58B096EF1F63C5CCAE355811E193A40
PoC usato per la validazione31BC81140BAB64A8B0CB70ACC1C2CF3CA84A7B00015E5610AC075DC50DCB0163

La firma Authenticode di PSSvc.exe è stata validata con successo e la catena di certificazione risaliva a Acer Incorporated. L'MSI installava PSSvc come servizio a processo singolo ad avvio su richiesta, in esecuzione come LocalSystem.

Come ho trovato il percorso vulnerabile

1. Iniziare dal servizio privilegiato

Il pacchetto NitroSense installa:

SERVICE_NAME: PSSvc
DISPLAY_NAME: Predator Service
TYPE:         WIN32_OWN_PROCESS
START_TYPE:   DEMAND_START
ACCOUNT:      LocalSystem

Un servizio SYSTEM non è automaticamente vulnerabile. La domanda importante è se un processo con privilegi inferiori possa raggiungere funzionalità progettate presupponendo che il chiamante sia attendibile.

L'analisi delle stringhe ha subito rivelato l'endpoint IPC:

\\.\pipe\predatorsense_service_namedpipe

2. Ispezionare il descrittore di sicurezza della named pipe

All'indirizzo 0x140014AD0, il servizio crea la pipe e passa un descrittore di sicurezza esplicito a CreateNamedPipeW:

D:(A;OICI;GA;;;BG)(D;OICI;GA;;;AN)(A;OICI;GRGWGX;;;AU)(A;OICI;GA;;;BA)

Vale la pena di chiarirlo esplicitamente: la build vulnerabile non passa un descrittore NULL. Crea una DACL permissiva.

Abbreviazione SIDEntitàPermesso effettivo nella SDDL
BGGuest predefinitiAccesso generico completo
ANAnonimoAccesso generico completo negato
AUUtenti autenticatiLettura, scrittura ed esecuzione generiche
BAAmministratori predefinitiAccesso generico completo

L'ACE AU è sufficiente perché un normale utente autenticato apra la pipe in lettura e scrittura. Il server non impersona quindi il client né esegue una decisione di autorizzazione prima di smistare i comandi privilegiati.

3. Recuperare il formato del protocollo

Il thread client all'indirizzo 0x14000ABB0 legge i messaggi in un buffer di 512 byte. Analizza i primi tre byte come un numero di comando a 16 bit e un conteggio di argomenti a 8 bit. Ogni argomento è preceduto dalla sua lunghezza:

Offset  Dimensione  Significato
0x00    2           ID comando, little-endian
0x02    1           numero di argomenti
0x03    4           lunghezza dell'argomento 0
0x07    n           byte dell'argomento 0
...                 DWORD di lunghezza ripetuta + valore

Gli argomenti stringa sono in UTF-16LE. Gli argomenti interi sono DWORD little-endian. Lo smistatore accetta ID di comando inferiori a 0x23 e li usa come indici in una tabella di funzioni a 35 voci all'indirizzo 0x140052C90.

La voce per il comando 0x0007 punta a 0x14000BFD0.

4. Seguire il comando 0x0007

Ridotto al suo comportamento rilevante per la sicurezza, il gestore si presenta così:

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;
}

wcsstr risponde solo se una stringa compare all'interno di un'altra. Non canonizza un percorso, non risolve i segmenti punto, non apre un file e non dimostra che l'oggetto finale rimanga sotto una directory attendibile.

Supponiamo che il servizio sia installato in:

Scarica lo strumento