Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-8069 — Write-up técnico e prova de conceito para CVE-2026-8069, uma escalada local de privilégios nos serviços Acer NitroSense e PredatorSense, explorando um named pipe para executar código arbitrário como SYSTEM. | Kitploit
Ferramentas/GitHubGitHub/s1eezer/cve-2026-8069
Escalada de PrivilégiosFrameworks de ExploraçãoAnálise de VulnerabilidadesExploraçãoEngenharia ReversaAnálise de Binários
GitHubs1eezer/cve-2026-8069

CVE-2026-8069

Write-up técnico e prova de conceito para CVE-2026-8069, uma escalada local de privilégios nos serviços Acer NitroSense e PredatorSense, explorando um named pipe para executar código arbitrário como SYSTEM.

Ver Repositório
19há 1 mêsAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

De um Named Pipe da Acer a NT AUTHORITY\SYSTEM: CVE-2026-8069

O Acer NitroSense e o PredatorSense 3.x instalaram um serviço Windows chamado PSSvc que expunha um protocolo de named pipe personalizado a utilizadores locais. Um comando do protocolo aceitava um caminho de executável controlado pelo chamador, duplicava o token de winlogon.exe e iniciava esse executável como NT AUTHORITY\SYSTEM.

A restrição de caminho no serviço vulnerável era um teste de substring. Um caminho que começava dentro do diretório do serviço e depois usava componentes ..\ passava no teste, mas resolvia para outro local. Combinado com o controlo de acesso permissivo do pipe e a ausência de autorização do chamador, isto permitia que um utilizador local padrão obtivesse um processo SYSTEM.

A Acer atribuiu CVE-2026-8069, publicou correções e creditou Artem Domarev da Universidade de Hradec Králové no seu aviso de segurança.

Este artigo foca-se no caminho de criação de processo/LPE. O aviso da Acer também descreve a eliminação arbitrária de ficheiros, que estava fora do âmbito desta validação.

Porque escolhi esta direção de investigação

A escolha da direção de investigação também foi influenciada por uma análise pública de software OEM publicada por Leon Jacobs da SensePost. Esse trabalho documentou vulnerabilidades no ASUS DriverHub, MSI Center, Acer Control Centre e Razer Synapse 4 (Jacobs, 2025). Reforçou a ideia de que utilitários de hardware fornecidos pelos fornecedores podem expor uma superfície de ataque significativa e pouco explorada. Em vez de revisitar o Acer Control Centre, estendi a investigação a uma família de produtos diferente da Acer: NitroSense e PredatorSense.

Resumo executivo

ItemResultado
CVECVE-2026-8069
Componente vulnerável testadoPSSvc.exe 3.1.3052.0, assinado pela Acer Incorporated
Identidade do serviçoLocalSystem
Endpoint IPC\\.\pipe\predatorsense_service_namedpipe
Comando vulnerável0x0007
Acesso necessário do atacanteUtilizador local autenticado capaz de executar um programa
Interação do utilizadorNenhuma
ResultadoExecutável arbitrário iniciado como NT AUTHORITY\SYSTEM
CVSS v3.1 da NVD7.8 Alta — AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Versões corrigidasPredatorSense 3.00.3198; NitroSense 3.01.3056

A cadeia de exploração é curta:

utilizador local autenticado
        │
        ▼
named pipe permissivo do PSSvc
        │  comando personalizado 0x0007
        ▼
verificação de caminho apenas por substring
        │  service-dir\..\..\..\Windows\System32\cmd.exe
        ▼
duplicar token do winlogon.exe da sessão ativa
        │
        ▼
CreateProcessAsUserW → NT AUTHORITY\SYSTEM

Um aviso sobre o número de versão

Existe uma inconsistência na redação pública. A página da Acer afirma que as versões do NitroSense "anteriores a 3.01.3052" são afetadas, mas o PSSvc.exe versão 3.1.3052.0 assinado pelo fornecedor e testado para este artigo é demonstravelmente vulnerável. A mesma página identifica o NitroSense 3.01.3056 como a versão corrigida. O intervalo de aplicabilidade da NVD também se estende até, mas não incluindo, 3.01.3056.

Para o PredatorSense, a frase de versões afetadas da Acer termina antes de 3.00.3196, enquanto a versão corrigida listada é 3.00.3198 e a NVD usa esta última como limite superior.

A regra operacional conservadora é, portanto, simples: não use a frase ambígua "afetado" como verificação de patch. Atualize para pelo menos as versões corrigidas que a Acer nomeia — PredatorSense 3.00.3198 ou NitroSense 3.01.3056 — ou um pacote mais recente compatível com o modelo.

Artefactos testados

O problema foi reproduzido com o pacote original do NitroSense.

ArtefactoSHA-256
NitroSense_V3.01.3052_MSFT_SIGNED_20230420.zip947FB7C62665875450AFA9C9E7919D2B061ED8197C11B28D64781F121B30C157
NitroSense.msi6F9D405B6D2ADF2992C4E071453AD2C919A6DD38A89A31EF96EAFE81C50A745C
PSSvc.exe 3.1.3052.0 instalado3BA836B6A5D95B55708E771B74F49098F58B096EF1F63C5CCAE355811E193A40
PoC usado para validação31BC81140BAB64A8B0CB70ACC1C2CF3CA84A7B00015E5610AC075DC50DCB0163

A assinatura Authenticode do PSSvc.exe foi validada com sucesso e encadeada até à Acer Incorporated. O MSI instalou o PSSvc como um serviço de processo próprio com início sob demanda, a executar como LocalSystem.

Como encontrei o caminho vulnerável

1. Começar pelo serviço privilegiado

O pacote NitroSense instala:

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

Um serviço SYSTEM não é automaticamente vulnerável. A questão importante é se um processo com privilégios inferiores consegue alcançar funcionalidade que foi concebida sob o pressuposto de que o seu chamador é confiável.

A análise de strings expôs imediatamente o endpoint IPC:

\\.\pipe\predatorsense_service_namedpipe

2. Inspecionar o descritor de segurança do named pipe

Em 0x140014AD0, o serviço constrói o pipe e passa um descritor de segurança explícito a CreateNamedPipeW:

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

Isto merece uma correção explícita: a versão vulnerável não passa um descritor NULL. Ela cria uma DACL permissiva.

Abreviatura SIDPrincipalPermissão efetiva no SDDL
BGConvidados incorporadosGeneric All
ANAnónimoGeneric All negado
AUUtilizadores autenticadosGeneric Read, Write e Execute
BAAdministradores incorporadosGeneric All

A ACE AU é suficiente para que um utilizador autenticado normal abra o pipe para leitura e escrita. O servidor não faz depois impersonação do cliente nem toma uma decisão de autorização antes de despachar comandos privilegiados.

3. Recuperar o formato do protocolo

O thread cliente em 0x14000ABB0 lê mensagens para um buffer de 512 bytes. Ele analisa os primeiros três bytes como um número de comando de 16 bits e uma contagem de argumentos de 8 bits. Cada argumento tem prefixo de comprimento:

Offset  Tamanho  Significado
0x00    2        ID do comando, little-endian
0x02    1        número de argumentos
0x03    4        comprimento do argumento 0
0x07    n        bytes do argumento 0
...           DWORD de comprimento repetido + valor

Os argumentos de string são UTF-16LE. Os argumentos inteiros são DWORDs little-endian. O dispatcher aceita IDs de comando abaixo de 0x23 e usa-os como índices numa tabela de funções com 35 entradas em 0x140052C90.

A entrada para o comando 0x0007 aponta para 0x14000BFD0.

4. Seguir o comando 0x0007

Reduzido ao seu comportamento relevante para a segurança, o handler tem esta aparência:

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 responde apenas se uma string ocorre dentro de outra. Não canonicaliza um caminho, não resolve segmentos de ponto, não abre um ficheiro, nem prova que o objeto final permanece sob um diretório confiável.

Assuma que o serviço está instalado em:

C:\Program Files\Acer\NitroSense_Service

O seguinte caminho contém esse diretório no offset zero, portanto wcsstr tem sucesso:

C:\Program Files\Acer\NitroSense_Service\..\..\..\WINDOWS\System32\cmd.exe
Baixar ferramenta