Administradores en pánico: la vulnerabilidad CVE-2025-67813 desata el caos en sus dominios.

En el producto empresarial Quest KACE Desktop Authority, que se utiliza para la gestión centralizada de estaciones de trabajo Windows, se descubrió una vulnerabilidad con posibilidad de ejecución remota de código. La solución instala en cada equipo gestionado un servicio de agente. Este se ejecuta en nombre de la cuenta SYSTEM y realiza operaciones privilegiadas por instrucciones del servidor. Fue en ese componente donde el investigador encontró un mecanismo inseguro de comunicación entre procesos.
Durante el análisis del software de gestión de endpoints, el especialista se fijó en un canal con nombre de Windows llamado ScriptLogic_Server_NamedPipe_9300. La marca ScriptLogic se usaba por el desarrollador antes de la adquisición por Quest. El canal es atendido por un servicio con los máximos privilegios SYSTEM y, al mismo tiempo, permite la conexión de usuarios remotos autenticados del dominio. Esta combinación de permisos crea un riesgo inmediato, ya que los canales con nombre en Windows pueden ser accesibles por red a través de SMB.
La parte servidor de Desktop Authority crea el canal en la ruta \\.\pipe\ScriptLogic_Server_NamedPipe_9300. El agente cliente en las estaciones usa el canal emparejado \\.\pipe\ScriptLogic_Client_NamedPipe_9300. A través de ese canal el servidor se comunica con los agentes y envía tareas. Si los permisos están configurados de forma demasiado amplia, a ese canal puede conectarse cualquier usuario del dominio con una cuenta válida.
El intercambio de datos dentro del canal se basa en un protocolo IPC propio sobre la serialización Microsoft Foundation Classes CArchive. El formato es un flujo binario con prefijos de longitud y soporte para tipos COM VARIANT. Tras el análisis inverso, el investigador reconstruyó la estructura de los mensajes. Incluye campos con el ProgID COM para crear el objeto, el nombre del método que se invoca, el selector de operación RpcName, el comando a ejecutar, el identificador de proceso para inyección de DLL y parámetros adicionales. El valor de RpcName determina qué acción ejecutará el servicio.
El análisis mostró que el protocolo soporta varias operaciones peligrosas. El comando AdminExec permite iniciar un proceso arbitrario con privilegios de administrador local. Los parámetros Command y CommandArgument se envían directamente al mecanismo de creación del proceso. Para conseguir la ejecución de código basta con conectarse al canal y enviar un mensaje con el comando adecuado.
La operación DllInjection inyecta la DLL indicada en un proceso seleccionado. La ruta a la biblioteca puede especificarse en formato UNC, por lo que el archivo malicioso puede colocarse en un recurso SMB en red y forzar que el servicio, bajo la cuenta SYSTEM, lo cargue en el espacio de direcciones de cualquier proceso en la máquina objetivo. Si el identificador de proceso no se conoce, puede obtenerse por prueba y error en un rango de PID.
El método Credentials revela las credenciales de la cuenta de servicio de Desktop Authority en texto claro. El producto utiliza un esquema de elevación temporal de privilegios: para acciones administrativas se toma un usuario normal del dominio, se le añade por un tiempo breve al grupo local Administrators, se crea un token de acceso y luego se le elimina del grupo. Ese token conserva los privilegios elevados. La invocación de Credentials devuelve el nombre y la contraseña de esa cuenta sin cifrar. El riesgo aumenta porque la misma cuenta de servicio suele utilizarse en muchos nodos, lo que facilita el movimiento lateral por la red y la reutilización de la contraseña contra otros recursos del dominio.
La función ImpersonateAdmin trabaja con la suplantación de token. Si se pasa un descriptor del hilo actual, el servicio realizará la suplantación del token administrativo y lo aplicará al lado que realiza la llamada. La operación InvokeCOM ofrece un método universal para crear objetos COM y llamar a sus métodos en el contexto de privilegios elevados. El servicio proporciona un conjunto de clases internas, entre ellas CProcess para gestionar procesos, CRegistry para trabajar con el registro, CFileSystem para operaciones de archivos, CUserTool para la gestión de usuarios, CNet para tareas de red, CSecurityEditor para modificar descriptores de seguridad, CPowerManagement para gestionar estados de energía y CEventLog para el acceso a los registros de eventos. Todos los métodos se ejecutan con privilegios administrativos.
El formato de serialización reproduce completamente el comportamiento de MFC CArchive. Las cadenas se codifican igual que CString, con longitud variable y soporte para ANSI y Unicode. El marcador 0xfffe cambia el flujo al modo Unicode. El tamaño de la cadena se indica con un prefijo de longitud variable: un byte para valores cortos y un formato ampliado para los largos. Los tipos VARIANT se registran con un identificador de tipo de 16 bits, por ejemplo VT_BSTR, VT_I4 o VT_BOOL, seguido del valor correspondiente. Este formato es típico en aplicaciones MFC con objetos COM.
La explotación práctica no requiere condiciones complejas. Desde cualquier equipo integrado en el dominio se puede conectar al canal con nombre del host remoto mediante SMB y enviar un mensaje especialmente formado. Para facilitar la verificación se creó la herramienta SLAgentTool. Soporta las operaciones AdminExec, Credentials, InvokeCOM y COMExec, que actúa como forma abreviada de CProcess.Exec. Un ejemplo de ejecución de comando consiste en conectarse al nodo remoto y ejecutar cmd.exe con los argumentos necesarios. La segunda variante emplea el modo de inyección de DLL indicando la ruta en red a la biblioteca y el PID del proceso.
Al problema se le asignó el identificador CVE-2025-67813. Quest publicó un boletín de seguridad y un artículo en la base de conocimientos sobre los permisos inseguros del canal con nombre. El proveedor recomienda instalar las correcciones. Si la actualización no es posible de inmediato, se propone bloquear las conexiones entrantes SMB al puerto TCP 445 hacia los nodos con el agente mediante reglas de cortafuegos, aislar la infraestructura de gestión de los segmentos de usuarios, desactivar el servicio del agente donde no sea necesario y supervisar las conexiones sospechosas a los canales ScriptLogic.
El autor del exploit decidió no publicar la herramienta de inmediato para dar a las organizaciones tiempo para instalar las actualizaciones.