Local no significa seguro: cómo proteger el canal entre un asistente de IA y una app de escritorio
Por qué proteger un canal MCP local: canalización por usuario, primera instancia, token de 128 bits, comparación en tiempo constante y cierre ante fallos.
Lo esencial
- Una conexión local entre un asistente de IA y una app de escritorio sigue estando al alcance de otros usuarios del mismo PC, de clientes remotos y de un programa que se adelante a quedarse con el nombre del canal.
- En Windows, el canal de KwaFlux es una canalización con nombre que solo su cuenta puede abrir, que KwaFlux reclama antes que nadie y que rechaza a los clientes remotos. En Mac es un socket con permisos solo para su cuenta.
- Cada conexión empieza con un token aleatorio de 128 bits, que se comprueba en tiempo constante y no aparece en los registros. Puede restablecerlo en Ajustes.
- El archivo que entrega el token al servidor MCP se escribe de forma atómica y con permisos solo para el propietario. Si esos permisos no se pueden aplicar, KwaFlux no lo publica.
Un asistente de IA se comunica con KwaFlux por un canal dentro de su propio ordenador. Eso invita a suponer que nadie más puede llegar a ese canal, pero no es así por defecto. En Windows, una canalización con nombre creada con la configuración predeterminada la puede leer cualquier usuario, es accesible desde la red y se la puede quedar el primer proceso que la cree.
KwaFlux cierra cada una de esas puertas, y este artículo explica cómo.
En esta guía verá las tres formas de llegar a un canal local, las defensas que usa KwaFlux contra cada una, cómo llega el token al servidor MCP de forma segura y de qué no puede protegerle un canal local.
Contenido
- ¿Qué es un canal IPC local?
- Tres formas en que «local» sale mal
- Capa 1: quién puede abrir la canalización
- Capa 2: un token en cada conexión
- Capa 3: publicar el token sin filtrarlo
- Capa 4: límites que mantienen a raya a un cliente
- De qué no protege el canal
- Cómo lo probamos
- Preguntas frecuentes
¿Qué es un canal IPC local?
Un canal IPC (comunicación entre procesos) local es una conexión que permite a dos programas del mismo ordenador intercambiar mensajes sin pasar por la pila de red. Las canalizaciones con nombre en Windows y los sockets de dominio Unix en macOS son ejemplos habituales.
En la configuración MCP de KwaFlux, su asistente de IA arranca el servidor MCP de KwaFlux, para trabajos como la reparación de archivos o la conversión, y ese servidor se conecta a la app de KwaFlux en ejecución a través de un canal de este tipo. El artículo sobre el plano de control muestra dónde se sitúa respecto a las demás capas.
Tres formas en que «local» sale mal
| Riesgo | Cómo se presenta | Por qué importa |
|---|---|---|
| Otras cuentas del PC | Un ordenador familiar, un puesto de trabajo compartido o un servidor de escritorio remoto con varios usuarios | Microsoft documenta que el descriptor de seguridad predeterminado de una canalización con nombre concede «acceso de lectura a los miembros del grupo Everyone y a la cuenta anónima» |
| Clientes remotos | Las canalizaciones con nombre se pueden abrir por la red indicando su nombre | Microsoft advierte de que una canalización que acepta clientes remotos solo los comprueba con su descriptor de seguridad |
| Suplantación del nombre (squatting) | Otro programa crea una canalización con el nombre esperado antes de que arranque KwaFlux | El servidor MCP le entregaría sus peticiones, y su token, al impostor |
Ninguno de estos casos necesita un ataque rebuscado. Vienen de los valores predeterminados.
Capa 1: quién puede abrir la canalización
KwaFlux crea su canalización de Windows con tres ajustes que responden a los tres riesgos:
- Un descriptor de seguridad solo para su cuenta. En lugar del predeterminado, que da control total al sistema y a los administradores y acceso de lectura a Everyone, la lista de acceso de la canalización nombra al usuario actual.
- Solo la primera instancia. KwaFlux crea la canalización con
FILE_FLAG_FIRST_PIPE_INSTANCE. La documentación de Microsoft dice que, con este indicador, «la creación de la primera instancia se realiza correctamente, pero la creación de la siguiente instancia falla con ERROR_ACCESS_DENIED». Si algo ya es dueño del nombre, KwaFlux se entera y no da servicio en una canalización que no le pertenece. - Sin clientes remotos. La canalización usa
PIPE_REJECT_REMOTE_CLIENTS, que Microsoft describe sin rodeos: «Las conexiones de clientes remotos se rechazan automáticamente».
En macOS, la app escucha en un socket de dominio Unix cuyos permisos de archivo son 0600, de modo que solo su cuenta puede abrirlo.
Nota: Las indicaciones de seguridad de la especificación de MCP dan el mismo consejo para los servidores locales: usar el transporte stdio para limitar el acceso al cliente MCP y, si un servidor usa otros transportes, exigir un token de autorización o usar IPC «con acceso restringido». KwaFlux hace ambas cosas. El host llega al servidor MCP por stdio, y el servidor MCP llega a la app por un canal restringido y con token.
Capa 2: un token en cada conexión
Los permisos deciden quién puede abrir el canal. Un token demuestra que el programa del otro extremo es el que configuró KwaFlux.
- Generación. Al arrancar, KwaFlux crea un token de 128 bits con el generador de números aleatorios criptográfico del sistema operativo.
- Intercambio inicial. Cada conexión tiene que empezar con un mensaje de saludo que lleva el token. Hasta que ese paso sale bien, la app no acepta nada más por esa conexión.
- Comparación en tiempo constante. KwaFlux compara el token byte a byte de una forma que tarda lo mismo tanto si falla el primer byte como el último, para que el tiempo de respuesta no revele cuánto se acercaba un intento.
- Fuera de los registros. El token no aparece en los registros de KwaFlux ni en la lista de actividad de Ajustes.
- Restablecimiento. Restablecer el token de acceso de agentes, en Ajustes, lo sustituye por otro aleatorio nuevo. Se cortan las conexiones de agentes actuales, y los hosts configurados se reconectan con el nuevo token en su siguiente llamada. Úselo si cree que algo ha leído el anterior.
Capa 3: publicar el token sin filtrarlo
El servidor MCP necesita el token y lo obtiene de un pequeño archivo de control que KwaFlux escribe al arrancar. Ese archivo es el punto más débil si se trata con descuido, así que es el que recibe más cuidado.

- Crear la carpeta de control en su perfil de usuario.
- Restringirla a su cuenta. La lista de acceso de la carpeta nombra solo al usuario actual, sin heredar permisos más amplios de la carpeta superior.
- Comprobar el propietario. KwaFlux confirma que la carpeta pertenece al usuario actual, para no fiarse de una carpeta que otra persona haya dejado preparada de antemano.
- Escribir en un archivo temporal con la misma restricción.
- Sustituir el archivo de control de forma atómica, para que quien lo lea vea el archivo anterior o el nuevo, y no uno a medio escribir.
La regla importante es qué pasa cuando algo falla. Una versión anterior escribía primero el archivo y después ajustaba sus permisos, y si eso fallaba solo dejaba un aviso en el registro. Ahora, si KwaFlux no puede aplicar los permisos, no publica el archivo en absoluto. MCP deja de funcionar hasta que se resuelve el problema, y es el equilibrio adecuado: una conexión rota se ve; un token legible, no.
Capa 4: límites que mantienen a raya a un cliente
Incluso un cliente bien autenticado tiene límites, porque a la IA que hay detrás se la puede dirigir con lo que lee:
| Límite | Valor |
|---|---|
| Conexiones simultáneas | 8 |
| Tamaño de un mensaje | 64 KiB |
| Conexión inactiva | Se cierra a los 5 minutos |
| Trabajos nuevos | 10 por minuto en total, 6 por conexión |
| Control de tareas | Solo las tareas que envió el agente de esa conexión |
| Interruptor general | Un solo ajuste de KwaFlux desactiva todo el acceso de agentes |
Se trata de contener a un asistente confundido o manipulado, algo que el artículo sobre rutas y privacidad y el artículo sobre SSRF analizan desde otros ángulos.
De qué no protege el canal
Queremos ser precisos con el límite, porque exagerar la seguridad hace más daño que no decir nada.
Las defensas del canal frenan a otras cuentas de usuario, otros ordenadores y programas que intentan hacerse pasar por KwaFlux quedándose con el nombre de la canalización. No frenan al malware que ya se está ejecutando con su propia cuenta. Un programa que se ejecuta como usted ya puede leer sus archivos, los datos de su navegador y todo lo demás a lo que usted tiene acceso; ninguna app local puede aislarse de eso. Mantener ese software fuera de su ordenador es tarea del sistema operativo y de su software de seguridad.
Nota: El refuerzo de la capa 3 y el restablecimiento del token llegan primero a Windows. La versión para Mac ya usa el socket solo para el propietario y el intercambio de token; actualizaremos este artículo cuando el resto llegue también a Mac.
Tenemos un cambio pendiente para más adelante: un intercambio inicial en el que ambos lados se identifiquen sin que el propio secreto cruce el canal. Lo hemos aplazado por ahora porque cambia el protocolo en los dos extremos a la vez, un fallo en el intercambio dejaría MCP sin servicio para todo el mundo, y la mayor parte de lo que aportaría ya lo cubren la propiedad de la primera instancia y la comprobación, por parte del servidor, de que la app sigue activa.
Cómo lo probamos
La gestión de peticiones del plano de control está cubierta por 341 aserciones. Un conjunto de pruebas de extremo a extremo aparte arranca el plano de control real y un proceso MCP real, y ejecuta 12 grupos de casos de seguridad, entre ellos las comprobaciones del canal y de las rutas que se describen aquí. Ambos forman parte de las pruebas automáticas de KwaFlux, así que un cambio que debilite una de estas reglas aparece como una prueba fallida.
Conclusión
«Solo escucha en local» es donde empieza la seguridad de un canal local, no donde termina. Restrinja quién puede abrirlo, asegúrese de ser el dueño del nombre, autentique cada conexión, publique el secreto con cuidado o no lo publique, y diga con claridad qué queda fuera del alcance. Así gestiona KwaFlux el enlace entre su asistente de IA y la app.
Un servidor MCP local hecho con cuidado
KwaFlux se conecta a Codex, Claude, Cursor y otras apps MCP por un canal que solo su cuenta puede abrir. El procesamiento de IA corre en su propia GPU y sus archivos multimedia no se suben para procesarlos. Funciona en Windows 10 (64 bits, versión 1809 o posterior), Windows 11 y macOS 12 o posterior en Apple Silicon. Importar archivos y explorar la app no requieren cuenta. Iniciar sesión con un plan de pago solo hace falta para exportar, convertir, reparar un archivo o descargar un archivo desde un enlace.
Prueba con tu propio material
Descarga KwaFlux y previsualiza gratis los efectos con tu propio material antes de pagar: sin cuenta, procesado en tu GPU y sin subir tus archivos para procesarlos. Las vistas previas de vídeo duran 1, 3 o 5 segundos; las de estabilización, 5, 15 o 30 segundos.
Preguntas frecuentes
¿Son seguras las canalizaciones con nombre en Windows?
Depende de cómo se creen. Una canalización creada con el descriptor de seguridad predeterminado da acceso de lectura a Everyone y acepta clientes remotos. Con una lista de acceso explícita, PIPE_REJECT_REMOTE_CLIENTS y FILE_FLAG_FIRST_PIPE_INSTANCE, queda limitada a su cuenta en ese ordenador.
¿Se puede acceder a una canalización con nombre por la red?
Sí, por defecto. Windows permite que los clientes abran por su nombre una canalización de otra máquina, y una canalización que acepta clientes remotos solo los comprueba con su descriptor de seguridad. Pasar PIPE_REJECT_REMOTE_CLIENTS al crear la canalización los rechaza.
¿Qué es la suplantación de canalizaciones con nombre (pipe squatting)?
Es cuando un programa crea una canalización con el nombre que espera otra aplicación, antes de que esa aplicación arranque, de modo que los clientes se conectan al impostor. Crear la canalización con FILE_FLAG_FIRST_PIPE_INSTANCE hace que el servidor legítimo se dé cuenta de que el nombre ya está ocupado.
¿Por qué comparar tokens en tiempo constante?
Porque una comparación normal se detiene en el primer byte incorrecto, así que un intento con más bytes acertados tarda un poco más. Medir esa diferencia puede filtrar el secreto byte a byte. Una comparación en tiempo constante tarda lo mismo en cualquier caso.
¿Un servidor MCP local protege mis datos de otros programas?
En parte. Un servidor local bien construido deja fuera a otras cuentas, otros ordenadores y programas impostores. No puede frenar al malware que ya se ejecuta como usted, que puede leer todo lo que usted puede leer. Consulte qué puede proteger una app local y qué no.
Fuentes
- Microsoft Learn, "CreateNamedPipeA function" (FILE_FLAG_FIRST_PIPE_INSTANCE, PIPE_REJECT_REMOTE_CLIENTS, default security descriptor) (consultado el 2026-10-25)
- Microsoft Learn, "Named Pipe Security and Access Rights" (consultado el 2026-10-25)
- Model Context Protocol, security guidance for implementers (2026-07-28; Local MCP Server Compromise) (consultado el 2026-07-28)


