Modelo de Seguridad
Arquitectura técnica de la protección de la Trifecta Letal.
Edison Watch previene la exfiltración de datos al detectar y bloquear la combinación de capacidades requeridas para un ataque.
La Amenaza: Inyección de Prompt
Los agentes de IA son vulnerables a la inyección de prompt - instrucciones maliciosas ocultas en contenido externo (como una página web o archivo) que manipulan a la IA para exfiltrar datos sensibles.
La Trifecta Letal
La exfiltración requiere tres capacidades. Edison Watch las rastrea mediante banderas monótonas por sesión:
| Capacidad | Bandera de Seguridad | Acción |
|---|---|---|
| Acceso a Datos Privados | read_private_data | IA lee archivos internos, BDs o documentos. |
| Contenido No Confiable | read_untrusted_public_data | IA obtiene datos de internet. |
| Comunicación Externa | write_operation | IA envía datos al exterior (Slack, Correo, APIs). |
Lógica de Aplicación: Si una sesión ha accedido tanto a Datos Privados COMO a Contenido No Confiable, cualquier Comunicación Externa posterior se pausa para aprobación humana.
Estado de la Sesión
El estado se rastrea en el servidor Edison y es monótono: una vez que se establece una bandera (ej., Datos Privados accedidos), no se puede desactivar para esa sesión. Esto previene ataques de "reinicio".
Niveles de Control de Acceso (ACL)
Las ACLs previenen que datos sensibles fluyan a destinos de menor sensibilidad independientemente del estado de la Trifecta.
| Nivel | Regla |
|---|---|
| PÚBLICO | Puede fluir a cualquier lugar. |
| PRIVADO | No puede fluir a PÚBLICO. |
| SECRETO | No puede fluir a PRIVADO o PÚBLICO. |
Ejemplo: Si un agente lee una base de datos marcada como SECRETA, se bloquea inmediatamente el envío a un canal de Slack PÚBLICO.
Rastreo de Datos
| Tipo de Dato | Registrado | Retención (Predeterminada) |
|---|---|---|
| Llamadas a Herramientas | Metadatos y Parámetros | 90 Días |
| Resultados | Salida Truncada | 90 Días |
| Eventos de Seguridad | Cambios de bandera y Bloqueos | 1 Año |
| Aprobaciones | Decisiones de usuario | 1 Año |
Privacidad: El contenido crudo de archivos y los historiales completos de conversación no se rastrean ni almacenan en los servidores de Edison.
Encriptación de Credenciales
Edison utiliza encriptación de conocimiento cero para las credenciales almacenadas. No se almacenan claves de encriptación en el servidor.
| Tipo de credencial | Encriptada con | ¿Clave almacenada? |
|---|---|---|
| Credenciales de usuario | Clave personal del usuario | Nunca -- solo hash |
| Credenciales de administrador | Clave de dominio (opcional) | Nunca -- solo hash |
La clave del usuario es un compuesto de segmentos tipados: user:{personal_key}.admin:{domain_key}. Cada segmento deriva claves de encriptación vía HKDF con prefijos distintos, asegurando la separación criptográfica. Consulta la Guía de Administración: Encriptación de Credenciales para instrucciones de configuración.
Transporte y Autenticación
- Auth: Claves API firmadas con HMAC o SAML 2.0/OIDC.
- Transporte: TLS 1.2+ obligatorio.
- Aislamiento: Los clientes se comunican solo con el servidor Edison; sin acceso directo de clientes a backends MCP.
Fijación de Dependencias
Edison Watch previene ataques a la cadena de suministro fijando automáticamente las dependencias del servidor MCP en la primera ejecución.
Propósito
Los servidores MCP instalados mediante ejecutores de paquetes (npx, uvx) pueden ser vulnerables a ataques a la cadena de suministro si las dependencias se actualizan maliciosamente. La fijación asegura:
- Ejecución reproducible: El mismo código exacto se ejecuta cada vez
- Resistencia a la manipulación: Los archivos de bloqueo se almacenan de forma segura y no pueden modificarse sin acción del administrador
- Control de versiones: Las versiones exactas de los paquetes están bloqueadas, previniendo actualizaciones inesperadas
Cómo Funciona
-
Resolución de Primera Ejecución: Cuando se monta por primera vez un servidor usando
npxouvx, Edison Watch:- Resuelve el gráfico completo de dependencias transitivas
- Genera un archivo de bloqueo (npm:
package-lock.json, Python:uv.lock) - Almacena el archivo de bloqueo de forma segura en la base de datos local
-
Tiempo de Ejecución Efímero: En cada montaje:
- Crea un directorio de tiempo de ejecución temporal
- Instala dependencias desde el archivo de bloqueo almacenado (no desde registros de paquetes)
- Ejecuta el servidor desde el entorno de tiempo de ejecución aislado
-
Fallo Cerrado: Si la fijación falla (problemas de red, archivo de bloqueo corrupto), el servidor no se iniciará. Esto asegura que no se ejecute código no fijado.
Controles de Administrador
Toda la gestión de fijación se realiza a través del panel de administración:
- Ver Estado: Ver versiones de paquetes fijadas y fechas en la descripción general del servidor
- Limpiar Fijación: Eliminar archivo de bloqueo en caché para forzar la re-fijación (útil después de actualizaciones de paquetes)
- Limpiar Todas las Fijaciones: Operación masiva para limpiar todas las fijaciones del servidor
No se requiere configuración por línea de comandos o variables de entorno - todos los controles son impulsados por UI para seguridad y auditabilidad.

