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.

Por qué existe

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.

ruta de código de confianzarecopilación de credenciales del entorno
Dependencia de confianzaMantenedor o ruta de publicación comprometidos
Ejecución del ciclo de vidaPaso de instalación, compilación o CI
Contexto de desarrollo o CIEl código se ejecuta con los permisos actuales del usuario
Variables de entorno
Archivos de credenciales
Memoria de procesos
Herramientas de IA instaladas
Destino del atacanteLas credenciales robadas siguen siendo reutilizables
Una dependencia de confianza comprometida ejecuta un script de ciclo de vida dentro de un proceso de desarrollo o CI. Recopila secretos de variables de entorno, archivos, memoria de procesos y herramientas de IA instaladas, y los envía a un destino controlado por el atacante.

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.

  1. 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 TanStack
  2. Finales 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 suministro
  3. Agosto 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
Documentación de GitHub: por qué un ejecutor comprometido puede recopilar y exfiltrar deliberadamente los secretos referenciados
Punto de control

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

Código comprometido
Lee un valor reutilizable
Lo envía o almacena
credencial copiada
Código comprometido
Operación estructurada
Límite de SallyportEstado, identidad, aprobación e intención duradera
Adjuntar autenticación / firmar SSH
Destino solicitado / configurado
Bóveda cifrada
denegar o preguntarla credencial solo recorre el ejecutor / destinatariopersisten el uso indebido y la salida sensible
En la ruta del entorno, el código comprometido lee una credencial reutilizable y la envía a cualquier lugar. En la ruta HTTP y SSH integrada de Sallyport, el código presenta una operación estructurada. Sallyport puede denegarla o pedir aprobación, adjunta una credencial HTTP o firma un desafío SSH dentro del ejecutor y envía la operación al destino solicitado o configurado. El resultado del destino se devuelve sin inspeccionar ni reescribir su contenido y puede incluir datos sensibles.

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.

Escalera de decisión

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.

  1. 01

    Bóveda lista

    Cualquier otro estado deniega las acciones de los agentes.

    deny | next

  2. 02

    Destino resuelto

    El destino requerido y los metadatos de la credencial deben existir.

    deny | next

  3. 03

    Comprobación por llamada

    Las claves o servidores upstream marcados preguntan cada vez.

    ask | next

  4. 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

  5. 05

    Intención de auditoría

    La intención cifrada debe quedar guardada de forma duradera antes de la ejecución.

    deny | run

  6. 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.

Cobertura

Controles y riesgo residual

El modelo tiene un límite explícito. El riesgo residual forma parte de él.

AmenazaQué cambia SallyportQué permanece
Una dependencia maliciosa lee archivos o el entornoPara 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 promptLas 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 hostLas 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 localLas 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 MCPSelecciona 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 SallyportSecure 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.
Límites estrictos

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.

01

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.

02

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.

03

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.

04

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.

05

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.

06

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.

07

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.

08

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.

09

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
Sallyport

Sallyport ejecuta llamadas de API y comandos SSH por tu agente de IA. Las claves se quedan en una bóveda local de tu Mac; tú apruebas cada ejecución y cada acción queda en un registro sellado.

© 2026 Sallyport · Código abierto bajo Apache-2.0 · Oleg Sotnikov