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.
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.
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.
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 TanStackFin 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'approvisionnementAoû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
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é
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.
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.
- 01
Coffre-fort prêt
Tout autre état refuse les actions des agents.
deny | next
- 02
Cible résolue
La cible requise et les métadonnées des identifiants doivent exister.
deny | next
- 03
Vérification par appel
Les clés ou serveurs en amont marqués demandent une approbation à chaque fois.
ask | next
- 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
- 05
Intention d'audit
L'intention chiffrée doit être enregistrée durablement avant l'exécution.
deny | run
- 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.
Contrôles et risque résiduel
Le modèle a une limite explicite. Le risque résiduel en fait partie.
| Menace | Ce que change Sallyport | Ce qui subsiste |
|---|---|---|
| Une dépendance malveillante lit des fichiers ou l'environnement | Pour 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 prompt | Les 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ôte | Les 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 MCP | Sé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 Sallyport | La 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. |
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.
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.
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.
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.
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.
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.
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.
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.
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.
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