sistema: OPERATIVO
← volver a todos los hacks
AGENTS CRITICAL NEW

El panel Hub de Cline: la interfaz de bucle local confundida con autenticación, otra vez

Un aviso del 8 de julio de 2026 muestra que el panel Hub de Cline expone un WebSocket local sin verificar el Origin y con un secreto compartido desactivado por defecto — la segunda falla WebSocket cross-origin de Cline en dos meses.

2026-07-16 // 6 min affects: cline, ai-coding-agents, local-agent-servers, mcp

¿Qué es esto?

El 8 de julio de 2026, el proyecto Cline publicó un aviso de seguridad sobre su panel Hub — el servidor local que arranca el comando cline dashboard en las versiones anteriores a la 3.0.30. El panel expone un punto de acceso WebSocket en /browser sobre 127.0.0.1:8787 para que la interfaz web pueda comunicarse con el agente de escritorio. El fallo: el servidor nunca valida la cabecera HTTP Origin en el handshake WebSocket, y el secreto compartido que debería proteger ese canal no está definido por defecto en los enlaces locales. El resultado es la ejecución de comandos arbitrarios en la máquina de un desarrollador, desencadenada por la simple visita a una página web maliciosa.

Es la segunda falla WebSocket cross-origin divulgada en Cline en aproximadamente dos meses, tras la del servidor Kanban. La recurrencia es lo verdaderamente relevante: el enlace a la interfaz de bucle local sigue tomándose por una frontera de autenticación, y no lo es.

Cómo funciona

Los navegadores permiten libremente las conexiones WebSocket cross-origin. La política del mismo origen que bloquea las lecturas fetch entre sitios no impide que una página alojada en evil.example abra ws://127.0.0.1:8787/browser. Es un comportamiento intencionado de la plataforma web, y precisamente por eso un servicio local debe verificar por sí mismo la cabecera Origin.

El panel Hub delega esa decisión en una función llamada isAuthorizedBrowserRequest(). Cuando la variable de entorno ROOM_SECRET no está definida — el caso por defecto en un enlace local 127.0.0.1 — la función devuelve verdadero de forma incondicional. Cada conexión entrante se acepta como si procediera de la pestaña legítima del panel. El atacante envía entonces tramas desktopCommand que leen el estado del espacio de trabajo y de la sesión, reescriben la configuración de los servidores Model Context Protocol (MCP) y modifican los ajustes de proveedor y modelo de IA.

El salto a la ejecución de código proviene de un segundo ajuste por defecto: las sesiones del panel se ejecutan con autoApprove: true para todas las herramientas. En cuanto hay un proveedor o modelo configurado, un comando inyectado se ejecuta sin ningún paso de aprobación humana. Dos supuestos «seguros por defecto» — el bucle local es de confianza, las herramientas se aprueban automáticamente — se combinan en una ruta completa hacia la ejecución remota de código.

Por qué importa

Los servidores de agentes locales se están convirtiendo en un componente estándar de la pila de desarrollo asistido por IA, y cada uno que escucha en el bucle local hereda exactamente esta exposición. Basta con que un desarrollador tenga el panel en ejecución y luego navegue con normalidad; la página maliciosa no necesita credenciales ni acceso previo. Como el alcance pasa de un origen de navegador a la cuenta de escritorio del desarrollador, el radio de impacto incluye el código fuente, las credenciales de nube almacenadas como claves de proveedor y todo lo que las herramientas del agente puedan alcanzar.

La divulgación se enmarca en una serie de hallazgos similares contra agentes de codificación en julio de 2026, cuyo denominador común es un servicio enlazado localmente que asume que la interfaz de bucle local constituye una frontera de confianza. No lo es: cualquier origen que cargue el navegador puede enviarle tráfico.

Defensas

  • Actualice a Cline 3.0.30 o posterior. La corrección añade validación de host y de Origin mediante una nueva comprobación isAuthorizedBrowserToDesktopRequest y restringe los hosts aceptados usando isIP del módulo net de Node.
  • Defina un ROOM_SECRET robusto antes de arrancar el panel si debe ejecutar una versión antigua, para que la comprobación de autorización imponga un secreto compartido en lugar de confiar en cualquier conexión (export ROOM_SECRET="$(openssl rand -hex 32)").
  • No ejecute el panel mientras navega por sitios no confiables en el mismo host, y evite dejarlo en ejecución sin supervisión.
  • Valide el Origin en cada WebSocket local y trate el bucle local como no confiable. Rechace los handshakes cuyo origen no coincida con la interfaz local esperada; no confíe en el enlace 127.0.0.1 como autenticación.
  • Reconsidere la autoaprobación general. Las llamadas a herramientas capaces de ejecutar comandos no deberían ser autoApprove: true por defecto; mantenga un control humano para las acciones importantes.
  • Rote las claves de API de proveedor y las credenciales MCP configuradas mientras se ejecutaba una versión vulnerable, y vigile los procesos de agente que lanzan shells poco después de actividad del navegador.

Estado

ElementoValor
ReferenciaCVE-2026-59723 / GHSA-3cj3-hqcr-g934
AfectadoPanel Hub de Cline, CLI/SDK/extensión IDE anterior a v3.0.30
Causa raízFalta de validación de Origin + ROOM_SECRET sin definir por defecto (CWE-346)
SeveridadCVSS 8.8 (alta); EPSS ~0,14 %; no está en CISA KEV
Corregido enCline CLI v3.0.30
Publicado8 de julio de 2026 (NVD)

Fechas clave: 8 de julio de 2026 — publicación del aviso y del NVD. Corrección incluida en Cline CLI v3.0.30. Problema anterior relacionado: la falla WebSocket cross-origin del Kanban de Cline divulgada el mes anterior.

Sources