Modelo de amenazas
Mantén los valores de las credenciales fuera del alcance del agente
Las herramientas de desarrollo ejecutan código de terceros en un contexto de alta confianza. Para HTTP y SSH integrados, Sallyport mantiene la credencial reutilizable almacenada fuera de ese contexto y media cada invocación en local.
Valor de la credencial
Sallyport no añade intencionadamente las credenciales resueltas a resultados, aprobaciones, eventos de auditoría, registros ni errores. No inspecciona ni reescribe las respuestas del ejecutor, que pueden incluir datos sensibles del destino.
Autorización
El estado de la bóveda, los controles por llamada y la identidad del proceso activo deciden si una invocación de herramienta puede comenzar.
Prueba
Cada invocación de herramienta admitida necesita primero un registro de intención cifrado y duradero. El descubrimiento del catálogo no.
Cómo llega una dependencia comprometida a las credenciales
Un paquete o flujo de trabajo de confianza ya se ejecuta donde los desarrolladores y CI guardan credenciales reutilizables. Cuando ese código se vuelve malicioso, puede leerlas y exportarlas desde una sola ruta de ejecución.
Incidentes recientes siguieron esta ruta
Los detalles varían según la campaña. En todos los casos, el código malicioso se ejecutó cerca de credenciales que otros sistemas aceptarían después.
Mayo de 2026
Paquetes maliciosos de TanStack
Ochenta y cuatro versiones maliciosas de 42 paquetes @tanstack ejecutaron una carga maliciosa durante la instalación que recopilaba credenciales de nube, tokens de GitHub y claves SSH. Después intentaba propagarse mediante los paquetes mantenidos por cada víctima.
Aviso de seguridad de TanStackFinales de 2025
Campañas Shai-Hulud en npm
Los paquetes comprometidos ejecutaban código durante la instalación para robar secretos y propagarse con las credenciales sustraídas. Las variantes posteriores añadieron comportamiento específico para CI y abuso de ejecutores autohospedados.
Análisis de GitHub sobre la cadena de suministroAgosto de 2025
Nx S1ngularity
Versiones maliciosas de paquetes Nx ejecutaron un script posterior a la instalación que buscaba datos confidenciales en sistemas de desarrollo, intentaba usar herramientas de IA locales y subía los resultados mediante GitHub CLI.
Informe posterior al incidente de Nx
Elimina las credenciales reutilizables del proceso
Un secreto guardado en una variable de entorno o un archivo es un dato que el proceso puede copiar. En cambio, una credencial gestionada por Sallyport es la entrada de una operación local, sujeta al estado de la bóveda, aprobación, vinculación al destino y auditoría.
Credencial en el entorno
HTTP / SSH integrado
Para HTTP y SSH integrados, un paquete no puede leer la credencial almacenada desde el entorno del agente. Debe solicitar una operación que puede denegarse, exigir aprobación por llamada, limitarse al destino solicitado o configurado y quedar registrada. La respuesta del destino se devuelve sin inspeccionar ni reescribir su contenido.
Esto no impide que el código malicioso se ejecute ni demuestra que una solicitud aprobada sea inocua. Los destinos HTTP y SSH pueden devolver datos sensibles. Los servidores MCP remotos reciben la autenticación configurada; los servidores stdio locales reciben credenciales vinculadas en su entorno. Cada destino y upstream debe tratarse como destinatario de confianza de las credenciales.
Cada invocación admitida pasa por las mismas comprobaciones
La escalera compilada se aplica a las invocaciones de herramientas. El tráfico initialize y tools/list gestiona el catálogo fuera de esta ruta y no recibe una fila de intención.
- 01
Bóveda lista
Cualquier otro estado deniega las acciones de los agentes.
deny | next
- 02
Destino resuelto
El destino requerido y los metadatos de la credencial deben existir.
deny | next
- 03
Comprobación por llamada
Las claves o servidores upstream marcados preguntan cada vez.
ask | next
- 04
Admisión del proceso
Admitir el proceso activo por sesión, lista permitida, tarjeta de sesión o modo observación. Esto no identifica qué paquete cargado u origen de bytes generó la solicitud.
ask | next
- 05
Intención de auditoría
La intención cifrada debe quedar guardada de forma duradera antes de la ejecución.
deny | run
- 06
Ejecutar y devolver el resultado
Ejecutar el canal, añadir el resultado y devolver el resultado acotado del ejecutor sin inspeccionar ni reescribir su contenido. Los resultados pueden incluir datos sensibles.
result
Una entrada de lista permitida con cdhash exacto deja de coincidir tras actualizar el binario. Una entrada de editor puede seguir coincidiendo con actualizaciones de la misma identidad, por lo que un editor o proceso de firma comprometido sigue siendo de confianza. Ambas solo omiten la tarjeta de sesión.
Controles y riesgo residual
El modelo tiene un límite explícito. El riesgo residual forma parte de él.
| Amenaza | Qué cambia Sallyport | Qué permanece |
|---|---|---|
| Una dependencia maliciosa lee archivos o el entorno | Para HTTP y SSH integrados, Sallyport no coloca la credencial almacenada en el entorno del agente ni la añade intencionadamente a resultados, registros, aprobaciones o eventos de auditoría. Los resultados del ejecutor se devuelven sin inspeccionar ni reescribir su contenido. | Las credenciales fuera de Sallyport siguen expuestas. Los servidores MCP locales por stdio reciben credenciales vinculadas y heredan el entorno de Sallyport. |
| Agente aprobado, comprometido o afectado por una inyección de prompt | Las claves por llamada siguen exigiendo un clic o Touch ID. Sallyport vuelve a comprobar la identidad del proceso activo en invocaciones posteriores. | La admisión cubre el proceso, no cada paquete o byte. El código cargado y quien escriba en un socket o pipe heredado comparten esa admisión. |
| Credencial redirigida a otro host | Las credenciales HTTP solo se adjuntan si coinciden host y ruta. Las solicitudes con credenciales no siguen redirecciones; las demás permanecen en el mismo host y puerto y no pueden degradar HTTPS. | La validación DNS actual no fija la dirección comprobada durante la conexión, por lo que persiste una brecha de revinculación de DNS. |
| Edición del historial de auditoría local | Las filas cifradas y la cadena firmada de texto cifrado detectan ediciones, cambios de orden, huecos internos y sustitución del firmante. Un punto de control local firmado detecta reversiones anteriores. | Tras un cierre no limpio puede perderse una cola posterior al punto de control. Una reversión local completa necesita un testigo externo para distinguirla de una restauración. |
| Un upstream incluye secretos en los metadatos del catálogo MCP | Selecciona y revisa el código del servidor upstream como parte del límite de confianza. Sallyport devuelve resultados, errores y metadatos autenticados del catálogo sin filtrado según credenciales y sujetos a los límites documentados de tamaño y descripción. | Initialize y tools/list quedan fuera de la auditoría de invocación. Sus nombres, descripciones y esquemas son contenido arbitrario controlado por el upstream y pueden incluir credenciales u otros datos sensibles. |
| Root o ejecución de código dentro de Sallyport | Secure Enclave controla el uso de claves privadas y la bóveda permanece cifrada en reposo. | El acceso root, SIP desactivado o la ejecución de código dentro del proceso pueden controlar una bóveda desbloqueada. Sallyport no es un entorno aislado del sistema ni un antivirus. |
Lo que este modelo no afirma
Sallyport reduce la exposición de credenciales y añade control sobre su uso. No convierte el código local hostil en código de confianza.
La aprobación no analiza la intención
Una tarjeta de sesión identifica el proceso y su procedencia. No determina si todas las solicitudes de esa sesión son seguras.
La admisión del proceso no aísla componentes
Una sesión identifica el proceso activo. El código cargado o un componente que escriba por un socket o pipe heredado recibe la misma admisión.
El operador puede aprobar una acción dañina
Un clic o Touch ID demuestra que se realizó el proceso de aprobación. No puede hacer inofensiva una operación mal revisada.
Los upstreams MCP son destinatarios de confianza
Un servidor remoto recibe su clave de API o token OAuth configurado. Un proceso hijo stdio local recibe credenciales vinculadas y el entorno de la app. Sallyport no aísla ninguno de los dos servidores.
Los metadatos del catálogo son contenido no confiable
La inicialización y tools/list eluden la escalera y la intención de auditoría. Los nombres, descripciones y esquemas siguen siendo contenido arbitrario controlado por el upstream, sin filtrado según credenciales; se aplican los límites documentados de tamaño y descripción.
El tráfico fuera de Sallyport queda fuera del alcance
La app no puede controlar llamadas de red directas, comandos del intérprete, otros almacenes de credenciales ni herramientas que eviten su interfaz MCP.
Los resultados del ejecutor pueden incluir datos sensibles
Los resultados y errores de HTTP, MCP y SSH no se inspeccionan ni reescriben. Un destino puede devolver credenciales u otros datos sensibles, y las grabaciones SSH conservan su salida.
Las vistas previas de auditoría pueden contener datos del llamador
Sallyport no añade credenciales resueltas a aprobaciones ni filas de auditoría, pero los comandos y argumentos del llamador aparecen en resúmenes y vistas previas acotadas. Trata la auditoría descifrada como confidencial.
Es un producto interactivo para Mac
La implementación compatible es una app firmada para macOS en Apple Silicon con interfaz local y Touch ID. No hay modo para Linux, contenedores, servidores, ejecutores en la nube ni CI sin interfaz.
Inspecciona la implementación
El núcleo es de código abierto bajo Apache-2.0. Lee la implementación y el modelo de confianza, o compílalo en local.
Ver el código fuente en GitHub