Modèle de menace

Gardez la valeur des identifiants hors de portée de l'agent

Les outils de développement exécutent du code tiers dans un contexte de confiance élevée. Pour HTTP et SSH intégrés, Sallyport garde les identifiants réutilisables stockés hors de ce contexte et encadre chaque invocation en local.

Valeur des identifiants

Sallyport n'ajoute pas intentionnellement les identifiants résolus aux résultats, approbations, événements d'audit, journaux ou erreurs. Il n'inspecte ni ne réécrit les réponses de l'exécuteur, qui peuvent contenir des données sensibles de la cible.

Autorisation

L'état du coffre-fort, les contrôles par appel et l'identité du processus actif déterminent si une invocation d'outil peut démarrer.

Éléments de preuve

Chaque appel d’outil admis exige d’abord une entrée d’intention chiffrée et durable. La découverte du catalogue, non.

Pourquoi Sallyport existe

Comment une dépendance compromise atteint les identifiants

Un paquet ou un flux de travail de confiance s'exécute déjà là où les développeurs et la CI conservent des identifiants réutilisables. Si ce code devient malveillant, il peut les lire et les exporter depuis un même chemin d'exécution.

chemin de code de confiancecollecte des identifiants accessibles dans l'environnement
Dépendance de confianceMainteneur ou chaîne de publication compromis
Exécution du cycle de vieÉtape d'installation, de build ou de CI
Contexte de développement ou de CILe code s'exécute avec les droits existants de l'utilisateur
Variables d'environnement
Fichiers d'identifiants
Mémoire des processus
Outils d'IA installés
Destination de l'attaquantLes identifiants volés restent réutilisables
Une dépendance de confiance compromise exécute un script de cycle de vie dans un processus de développement ou de CI. Elle recueille des secrets dans les variables d'environnement, les fichiers, la mémoire des processus et les outils d'IA installés, puis les envoie vers une destination contrôlée par l'attaquant.

Des incidents récents ont suivi ce chemin

Les détails varient selon les campagnes. Dans chaque cas, du code malveillant s'est exécuté à proximité d'identifiants que d'autres systèmes accepteraient ensuite.

  1. Mai 2026

    Paquets TanStack malveillants

    Quatre-vingt-quatre versions malveillantes réparties dans 42 paquets @tanstack ont exécuté une charge utile à l'installation. Elle collectait des identifiants cloud, des jetons GitHub et des clés SSH, puis tentait de se propager via les paquets maintenus par chaque victime.

    Avis de sécurité de TanStack
  2. Fin 2025

    Campagnes Shai-Hulud sur npm

    Des paquets compromis exécutaient du code à l'installation pour voler des secrets et se propager avec les identifiants dérobés. Les variantes ultérieures ont ajouté un comportement propre à la CI et l'exploitation d'agents d'exécution auto-hébergés.

    Analyse de GitHub sur la chaîne d'approvisionnement
  3. Août 2025

    Nx S1ngularity

    Des versions malveillantes de paquets Nx exécutaient un script après l'installation. Il recherchait des données sensibles sur les systèmes de développement, tentait d'utiliser les outils d'IA locaux et téléversait les résultats avec GitHub CLI.

    Post-mortem de l'incident Nx
Documentation GitHub : pourquoi un agent d'exécution compromis peut collecter et exfiltrer délibérément les secrets référencés
Point de contrôle

Retirez les identifiants réutilisables du processus

Un secret placé dans une variable d'environnement ou un fichier est une donnée que le processus peut copier. Un identifiant géré par Sallyport devient plutôt l'entrée d'une opération locale soumise à l'état du coffre-fort, à l'approbation, à la liaison à la cible et à l'audit.

Identifiant accessible au processus

HTTP / SSH intégré

Code compromis
Lit une valeur réutilisable
L'envoie ou la stocke
identifiant copié
Code compromis
Opération structurée
Limite SallyportÉtat, identité, approbation, intention durable
Joindre l'authentification / signer SSH
Cible demandée / configurée
Coffre-fort chiffré
refuser ou demanderl'identifiant reste sur le parcours exécuteur / destinatairel'abus ou une sortie sensible reste possible
Dans le chemin direct, le code compromis lit un identifiant réutilisable et l'envoie n'importe où. Dans le chemin HTTP et SSH intégré de Sallyport, le code soumet une opération structurée. Sallyport peut la refuser ou demander une approbation, joindre un identifiant HTTP ou signer une demande SSH dans l'exécuteur, puis envoyer l'opération à la cible demandée ou configurée. Le résultat de la cible est renvoyé sans inspection ni réécriture du contenu et peut contenir des données sensibles.

Pour HTTP et SSH intégrés, un paquet ne peut pas lire l'identifiant stocké dans l'environnement de l'agent. Il doit demander une opération qui peut être refusée, soumise à une approbation par appel, limitée à la cible demandée ou configurée et consignée. La réponse de la cible est renvoyée sans inspection ni réécriture du contenu.

Cela n'empêche pas le code malveillant de s'exécuter et ne prouve pas qu'une requête approuvée est sans danger. Les cibles HTTP et SSH peuvent renvoyer des données sensibles. Les serveurs MCP distants reçoivent l'authentification configurée ; les serveurs stdio locaux reçoivent les identifiants liés dans leur environnement. Chaque cible et serveur en amont doit être traité comme un destinataire de confiance des identifiants.

Chaîne de décision

Chaque invocation admise passe par les mêmes vérifications

La chaîne compilée s'applique aux invocations d'outils. Le trafic initialize et tools/list gère le catalogue hors de ce parcours et ne reçoit aucune ligne d'intention.

  1. 01

    Coffre-fort prêt

    Tout autre état refuse les actions des agents.

    deny | next

  2. 02

    Cible résolue

    La cible requise et les métadonnées des identifiants doivent exister.

    deny | next

  3. 03

    Vérification par appel

    Les clés ou serveurs en amont marqués demandent une approbation à chaque fois.

    ask | next

  4. 04

    Admission du processus

    Admettre le processus actif par session, liste d'autorisation, carte de session ou mode observation. Cela n'identifie ni le paquet chargé ni la source d'octets à l'origine de la requête.

    ask | next

  5. 05

    Intention d'audit

    L'intention chiffrée doit être enregistrée durablement avant l'exécution.

    deny | run

  6. 06

    Exécuter et renvoyer le résultat

    Exécuter le canal, ajouter le résultat et renvoyer le résultat borné de l'exécuteur sans inspection ni réécriture du contenu. Les résultats peuvent contenir des données sensibles.

    result

Une entrée avec cdhash exact ne correspond plus après une mise à jour du binaire. Une entrée d'éditeur peut continuer à accepter les mises à jour de même identité ; un éditeur ou circuit de signature compromis reste donc fiable. Les deux entrées ignorent seulement la carte de session.

Couverture

Contrôles et risque résiduel

Le modèle a une limite explicite. Le risque résiduel en fait partie.

MenaceCe que change SallyportCe qui subsiste
Une dépendance malveillante lit des fichiers ou l'environnementPour HTTP et SSH intégrés, Sallyport ne place pas l'identifiant stocké dans l'environnement de l'agent et ne l'ajoute pas intentionnellement aux résultats, journaux, approbations ou événements d'audit. Les résultats de l'exécuteur sont renvoyés sans inspection ni réécriture du contenu.Les identifiants hors de Sallyport restent exposés. Les serveurs MCP locaux en stdio reçoivent les identifiants liés et héritent de l'environnement de Sallyport.
Agent approuvé, compromis ou victime d'une injection de promptLes clés par appel exigent toujours un clic ou Touch ID. Sallyport revérifie l'identité du processus actif lors des invocations suivantes.L'admission couvre le processus, pas chaque paquet ou octet. Le code chargé et les émetteurs sur un socket ou tube hérité partagent cette admission.
Identifiant redirigé vers un autre hôteLes identifiants HTTP ne sont joints que si l'hôte et le chemin correspondent. Les requêtes authentifiées ne suivent aucune redirection ; les autres restent sur les mêmes hôte et port sans rétrograder HTTPS.La validation DNS actuelle ne maintient pas l'adresse vérifiée jusqu'à la connexion. Une faille de réassociation DNS subsiste donc.
Historique d'audit local modifiéLes lignes chiffrées et la chaîne signée de textes chiffrés détectent les modifications, changements d'ordre, lacunes internes et substitutions du signataire. Un point de contrôle local signé détecte les retours antérieurs.Une fin de chaîne postérieure au point de contrôle peut disparaître après un arrêt brutal. Un retour local complet exige un témoin externe pour être distingué d'une restauration.
Un serveur en amont place des secrets dans le catalogue MCPSélectionnez et examinez le code du serveur en amont comme partie de la limite de confiance. Sallyport renvoie les résultats, erreurs et métadonnées authentifiées du catalogue sans filtrage selon les identifiants et sous réserve des limites documentées de taille et de description.Initialize et tools/list restent hors de l'audit d'invocation. Leurs noms, descriptions et schémas sont du contenu arbitraire contrôlé par le serveur en amont et peuvent contenir des identifiants ou d'autres données sensibles.
Root ou exécution de code dans SallyportLa Secure Enclave contrôle l'utilisation des clés privées et le coffre-fort reste chiffré au repos.Un accès root, la désactivation de SIP ou l'exécution de code dans le processus peuvent contrôler un coffre-fort déverrouillé. Sallyport n'est ni un bac à sable de l'hôte ni un antivirus.
Limites strictes

Ce que ce modèle ne prétend pas

Sallyport réduit l'exposition des identifiants et contrôle mieux leur utilisation. Il ne rend pas fiable du code local hostile.

01

L'approbation n'analyse pas l'intention

Une carte de session identifie le processus et sa provenance. Elle ne détermine pas si chaque requête de cette session est sûre.

02

L'admission du processus n'isole pas ses composants

Une session identifie le processus actif. Le code chargé ou un composant qui écrit via un socket ou tube hérité reçoit la même admission.

03

L'opérateur peut approuver une action nuisible

Un clic ou Touch ID prouve que la procédure d'approbation a eu lieu. Il ne peut pas rendre inoffensive une opération mal examinée.

04

Les serveurs MCP en amont sont des destinataires fiables

Un serveur distant reçoit sa clé d'API ou son jeton OAuth configuré. Un enfant stdio local reçoit les identifiants liés et l'environnement de l'app. Sallyport n'isole aucun des deux serveurs.

05

Les métadonnées du catalogue sont du contenu non fiable

L'initialisation et tools/list contournent la chaîne et l'intention d'audit. Les noms, descriptions et schémas restent du contenu arbitraire contrôlé par le serveur en amont, sans filtrage selon les identifiants ; les limites documentées de taille et de description s'appliquent.

06

Le trafic hors de Sallyport est hors périmètre

L'application ne peut pas contrôler les appels réseau directs, les commandes shell, les autres coffres d'identifiants ou les outils qui contournent son interface MCP.

07

Les résultats de l'exécuteur peuvent contenir des données sensibles

Les résultats et erreurs HTTP, MCP et SSH ne sont ni inspectés ni réécrits. Une cible peut renvoyer des identifiants ou d'autres données sensibles, et les enregistrements SSH préservent sa sortie.

08

Les aperçus d'audit peuvent contenir des données de l'appelant

Sallyport n'ajoute pas les identifiants résolus aux approbations ou lignes d'audit, mais les commandes et arguments de l'appelant figurent dans les résumés et aperçus limités. Traitez l'audit déchiffré comme sensible.

09

C'est un produit Mac interactif

Le déploiement pris en charge est une app signée sur macOS Apple Silicon avec interface locale et Touch ID. Aucun mode Linux, conteneur, serveur, agent cloud ou CI sans interface n'existe.

Inspectez l'implémentation

Le cœur est open source sous Apache-2.0. Lisez l'implémentation et le modèle de confiance, ou compilez-le en local.

Voir le code source sur GitHub
Sallyport

Sallyport exécute les appels d'API et les commandes SSH à la place de votre agent IA. Les clés restent dans un coffre-fort local sur votre Mac ; vous approuvez chaque exécution et chaque action est consignée dans un journal scellé.

© 2026 Sallyport · Open source sous Apache-2.0 · Oleg Sotnikov