Bedrohungsmodell
Werte von Zugangsdaten außerhalb der Reichweite des Agenten halten
Entwicklerwerkzeuge führen Code Dritter in einem stark vertrauenswürdigen Kontext aus. Bei integriertem HTTP und SSH hält Sallyport die gespeicherten, wiederverwendbaren Zugangsdaten aus diesem allgemeinen Kontext heraus und vermittelt jeden Aufruf lokal.
Wert der Zugangsdaten
Sallyport fügt aufgelöste Zugangsdaten nicht absichtlich Agentenergebnissen, Freigaben, Audit-Ereignissen, Protokollen oder Fehlern hinzu. Executor-Antworten werden nicht geprüft oder verändert und können vertrauliche Zieldaten enthalten.
Autorisierung
Tresorstatus, Freigaben pro Aufruf und die Identität des laufenden Prozesses entscheiden, ob ein Werkzeugaufruf starten darf.
Nachweis
Jeder zugelassene Tool-Aufruf benötigt zuerst einen dauerhaft gespeicherten, verschlüsselten Intent-Eintrag. Die Katalogabfrage nicht.
Wie eine kompromittierte Abhängigkeit Zugangsdaten erreicht
Ein vertrauenswürdiges Paket oder ein Workflow läuft bereits dort, wo Entwickler und CI wiederverwendbare Zugangsdaten ablegen. Wird dieser Code bösartig, können Lesen und Ausschleusen dieser Daten Teil desselben Ausführungspfads sein.
Aktuelle Vorfälle nutzten diesen Pfad
Die Kampagnen unterschieden sich im Detail. In jedem Fall lief Schadcode in der Nähe von Zugangsdaten, die andere Systeme später weiterhin akzeptierten.
Mai 2026
Bösartige TanStack-Pakete
84 bösartige Versionen in 42 @tanstack-Paketen führten während der Installation eine Payload aus. Sie sammelte Cloud-Zugangsdaten, GitHub-Tokens und SSH-Schlüssel und versuchte anschließend, sich über Pakete zu verbreiten, die das jeweilige Opfer betreute.
TanStack-SicherheitshinweisEnde 2025
Shai-Hulud-Kampagnen auf npm
Kompromittierte Pakete nutzten Codeausführung während der Installation, um Geheimnisse zu stehlen und sich mit gestohlenen Zugangsdaten weiterzuverbreiten. Spätere Varianten griffen gezielt CI-Umgebungen und selbst gehostete Runner an.
GitHub-Analyse der LieferketteAugust 2025
Nx S1ngularity
Bösartige Versionen von Nx führten nach der Installation ein Skript aus, das Entwicklersysteme nach vertraulichen Daten durchsuchte, lokale KI-Werkzeuge zu verwenden versuchte und die Ergebnisse über GitHub CLI hochlud.
Postmortem zum Nx-Vorfall
Wiederverwendbare Zugangsdaten aus dem Prozess entfernen
Ein Geheimnis in einer Umgebungsvariablen oder Datei sind Daten, die der Prozess kopieren kann. Von Sallyport verwaltete Zugangsdaten sind stattdessen Eingabe für einen lokalen Vorgang, der Tresorstatus, Freigabe, Zielbindung und Audit unterliegt.
Allgemein zugängliche Zugangsdaten
Integriertes HTTP / SSH
Bei integriertem HTTP und SSH kann ein Paket die gespeicherten Zugangsdaten nicht aus der Agentenumgebung lesen. Es muss einen Vorgang anfordern, der verweigert, pro Aufruf freigegeben, auf das angeforderte oder konfigurierte Ziel begrenzt und protokolliert werden kann. Die Zielantwort wird ohne Inhaltsprüfung oder Umschreibung zurückgegeben.
Das stoppt bösartigen Code nicht und beweist nicht, dass eine freigegebene Anfrage harmlos ist. HTTP- und SSH-Ziele können vertrauliche Daten zurückgeben. Entfernte MCP-Server erhalten konfigurierte Authentifizierung, lokale stdio-Server gebundene Zugangsdaten in ihrer Umgebung. Jedes Ziel und jeder Upstream ist als vertrauenswürdiger Empfänger der Zugangsdaten zu behandeln.
Dieselben Prüfungen laufen bei jedem zugelassenen Aufruf
Die einkompilierte Kette gilt für Werkzeugaufrufe. Initialize- und tools/list-Verkehr verwaltet den Katalog außerhalb dieses Pfads und erhält keine Intent-Zeile.
- 01
Tresor ist bereit
Jeder andere Status verweigert Agentenaktionen.
deny | next
- 02
Ziel kann aufgelöst werden
Das erforderliche Ziel und die Metadaten der Zugangsdaten müssen vorhanden sein.
deny | next
- 03
Prüfung pro Aufruf
Markierte Schlüssel oder Upstream-Server fragen jedes Mal nach.
ask | next
- 04
Prozesszulassung
Den laufenden Prozess per Sitzung, Allowlist, Sitzungskarte oder Beobachtungsmodus zulassen. Das identifiziert weder das geladene Paket noch die Quelle einzelner Bytes.
ask | next
- 05
Audit-Intent
Der verschlüsselte Intent muss vor der Ausführung dauerhaft gespeichert sein.
deny | run
- 06
Ausführen und Ergebnis zurückgeben
Kanal ausführen, Ergebnis anhängen und das begrenzte Executor-Ergebnis ohne Inhaltsprüfung oder Umschreibung zurückgeben. Ergebnisse können vertrauliche Daten enthalten.
result
Eine Allowlist mit exaktem cdhash passt nach einem Binärupdate nicht mehr. Ein Publisher-Eintrag kann Updates derselben Identität weiter zulassen; ein kompromittierter Publisher oder Signierpfad bleibt daher vertrauenswürdig. Beide überspringen nur die Sitzungskarte.
Kontrollen und Restrisiko
Das Modell hat eine klare Grenze. Restrisiken gehören dazu.
| Bedrohung | Was Sallyport ändert | Was verbleibt |
|---|---|---|
| Bösartige Abhängigkeit liest Dateien oder Umgebung | Bei integriertem HTTP und SSH legt Sallyport die gespeicherten Zugangsdaten nicht in die Agentenumgebung und fügt sie nicht absichtlich Ergebnissen, Protokollen, Freigaben oder Audit-Ereignissen hinzu. Executor-Ergebnisse werden ohne Inhaltsprüfung oder Umschreibung zurückgegeben. | Zugangsdaten außerhalb von Sallyport bleiben offen. Lokale stdio-MCP-Server erhalten gebundene Zugangsdaten und erben Sallyports Umgebung. |
| Durch Prompt-Injection beeinflusster oder kompromittierter freigegebener Agent | Schlüssel mit Freigabe pro Aufruf erfordern weiterhin einen Klick oder Touch ID. Sallyport prüft bei späteren Aufrufen erneut die Identität des laufenden Prozesses. | Die Zulassung gilt für den Prozess, nicht für jedes Paket oder Byte. Geladener Code und Schreiber an einem geerbten Socket oder einer Pipe erben diese Zulassung. |
| Zugangsdaten werden an einen anderen Host umgeleitet | HTTP-Zugangsdaten werden nur bei passendem Host und Pfad angehängt. Anfragen mit Zugangsdaten folgen keinen Weiterleitungen; andere bleiben auf demselben Host und Port und dürfen HTTPS nicht herabstufen. | Die aktuelle DNS-Prüfung pinnt die geprüfte Adresse nicht bis zum Verbindungsaufbau. Daher bleibt eine Lücke für DNS-Rebinding. |
| Lokaler Audit-Verlauf wird bearbeitet | Verschlüsselte Zeilen und die signierte Chiffretextkette erkennen Änderungen, Umsortierungen, interne Lücken und Signiereraustausch. Ein separater signierter lokaler Prüfpunkt erkennt Rollbacks hinter ihm. | Ein Kettenausläufer nach dem Prüfpunkt kann nach einem unsauberen Abbruch verloren gehen. Ein vollständiger lokaler Rollback braucht einen externen Zeugen, um ihn von einer Wiederherstellung zu unterscheiden. |
| Ein Upstream legt Geheimnisse in MCP-Katalogmetadaten ab | Wählen und prüfen Sie Upstream-Servercode als Teil der Vertrauensgrenze. Sallyport gibt Werkzeugergebnisse, Fehler und authentifizierte Katalogmetadaten ohne Filterung nach Zugangsdaten und unter den dokumentierten Größen- und Beschreibungslimits zurück. | Initialize und tools/list liegen außerhalb des Aufruf-Audits. Namen, Beschreibungen und Schemas sind beliebige, vom Upstream kontrollierte Inhalte und können Zugangsdaten oder andere vertrauliche Daten enthalten. |
| Root oder Codeausführung innerhalb von Sallyport | Secure Enclave schützt die Verwendung privater Schlüssel und der Tresor bleibt im Ruhezustand verschlüsselt. | Root, deaktiviertes SIP oder Codeausführung im Prozess können einen entsperrten Tresor steuern. Sallyport ist weder Host-Sandbox noch Virenschutz. |
Was dieses Modell nicht behauptet
Sallyport reduziert die Offenlegung von Zugangsdaten und kontrolliert ihre Verwendung. Es macht feindseligen lokalen Code nicht vertrauenswürdig.
Freigabe ist keine Absichtsanalyse
Eine Sitzungskarte identifiziert den Prozess und seine Herkunft. Sie entscheidet nicht, ob jede Anfrage in dieser Sitzung sicher ist.
Prozesszulassung ist keine Komponentenisolation
Eine Sitzung identifiziert den laufenden Prozess. Geladener Code oder eine Komponente, die über einen geerbten Socket oder eine Pipe schreibt, erhält dieselbe Zulassung.
Der Bediener kann Schaden freigeben
Ein Klick oder Touch ID bestätigt lediglich, dass die Freigabe erfolgt ist. Dadurch wird ein schlecht geprüfter Vorgang nicht harmlos.
MCP-Upstreams sind vertrauenswürdige Empfänger
Ein entfernter Server erhält seinen konfigurierten API-Schlüssel oder OAuth-Token. Ein lokaler stdio-Kindprozess erhält gebundene Zugangsdaten und die App-Umgebung. Sallyport isoliert keinen der beiden Server.
Katalogmetadaten sind nicht vertrauenswürdige Inhalte
Initialisierung und tools/list umgehen Aufrufkette und Intent-Audit. Werkzeugnamen, Beschreibungen und Schemas bleiben ohne Filterung nach Zugangsdaten beliebige, vom Upstream kontrollierte Inhalte; dokumentierte Größen- und Beschreibungslimits gelten.
Datenverkehr außerhalb von Sallyport liegt außerhalb des Geltungsbereichs
Die App kann direkte Netzwerkaufrufe, Shell-Befehle, andere Speicher für Zugangsdaten oder Werkzeuge, die ihre MCP-Schnittstelle umgehen, nicht kontrollieren.
Executor-Ergebnisse können vertrauliche Daten enthalten
HTTP-, MCP- und SSH-Ergebnisse und Fehler werden nicht geprüft oder verändert. Ein Ziel kann Zugangsdaten oder andere vertrauliche Daten zurückgeben, und SSH-Aufzeichnungen bewahren die Zielausgabe.
Audit-Vorschauen können Aufruferdaten enthalten
Sallyport fügt Freigaben oder Audit-Zeilen keine aufgelösten Zugangsdaten hinzu. Vom Aufrufer gelieferte Befehle und Argumente erscheinen aber in Zusammenfassungen und begrenzten Vorschauen. Behandeln Sie entschlüsselte Audit-Daten als vertraulich.
Dies ist ein interaktives Mac-Produkt
Unterstützt wird eine signierte App auf Apple-Silicon-macOS mit lokaler Oberfläche und Touch ID. Es gibt keinen Linux-, Container-, Server-, Cloud-Runner- oder Headless-CI-Modus.
Implementierung prüfen
Der Kern ist Open Source unter Apache-2.0. Lesen Sie die Implementierung und das Vertrauensmodell oder bauen Sie ihn lokal.
Quellcode auf GitHub ansehen