Modelo de ameaças

Mantenha os valores das credenciais fora do alcance do agente

Ferramentas de desenvolvimento executam código de terceiros em um contexto de alta confiança. Para HTTP e SSH integrados, o Sallyport mantém a credencial reutilizável armazenada fora desse contexto e intermedeia cada invocação localmente.

Valor da credencial

O Sallyport não adiciona intencionalmente credenciais resolvidas a resultados, aprovações, eventos de auditoria, registros nem erros. Ele não inspeciona nem reescreve as respostas do executor, que podem conter dados sensíveis do destino.

Autorização

O estado do cofre, os controles por chamada e a identidade do processo ativo decidem se uma invocação de ferramenta pode começar.

Evidência

Toda invocação de ferramenta admitida exige primeiro um registro de intenção cifrado e durável. A descoberta do catálogo não.

Por que existe

Como uma dependência comprometida chega às credenciais

Um pacote ou fluxo de trabalho confiável já é executado onde desenvolvedores e a CI guardam credenciais reutilizáveis. Quando esse código se torna malicioso, ele pode ler e exportar essas credenciais por um único caminho de execução.

caminho de código confiávelcoleta de credenciais disponíveis no ambiente
Dependência confiávelMantenedor ou caminho de publicação comprometido
Execução do ciclo de vidaEtapa de instalação, build ou CI
Contexto de desenvolvimento ou CIO código é executado com o acesso atual do usuário
Variáveis de ambiente
Arquivos de credenciais
Memória de processos
Ferramentas de IA instaladas
Destino do invasorAs credenciais roubadas continuam reutilizáveis
Uma dependência confiável comprometida executa um script de ciclo de vida dentro de um processo de desenvolvimento ou CI. Ela coleta segredos de variáveis de ambiente, arquivos, memória de processos e ferramentas de IA instaladas e os envia a um destino controlado pelo invasor.

Incidentes recentes seguiram esse caminho

Os detalhes variam entre as campanhas. Em todos os casos, o código malicioso foi executado perto de credenciais que outros sistemas aceitariam mais tarde.

  1. Maio de 2026

    Pacotes maliciosos do TanStack

    Oitenta e quatro versões maliciosas em 42 pacotes @tanstack executaram uma carga maliciosa durante a instalação. Ela coletava credenciais de nuvem, tokens do GitHub e chaves SSH e depois tentava se espalhar pelos pacotes mantidos por cada vítima.

    Aviso de segurança do TanStack
  2. Fim de 2025

    Campanhas Shai-Hulud no npm

    Pacotes comprometidos executavam código durante a instalação para roubar segredos e se espalhar com as credenciais obtidas. Variantes posteriores adicionaram comportamento específico para CI e abuso de executores auto-hospedados.

    Análise do GitHub sobre a cadeia de suprimentos
  3. Agosto de 2025

    Nx S1ngularity

    Versões maliciosas de pacotes Nx executaram um script após a instalação que procurava dados confidenciais nos sistemas de desenvolvimento, tentava usar ferramentas locais de IA e enviava os resultados pelo GitHub CLI.

    Relatório pós-incidente do Nx
Documentação do GitHub: por que um executor comprometido pode coletar e exfiltrar deliberadamente os segredos referenciados
Ponto de controle

Retire as credenciais reutilizáveis do processo

Um segredo em uma variável de ambiente ou arquivo é um dado que o processo pode copiar. Uma credencial gerenciada pelo Sallyport passa a ser a entrada de uma operação local, sujeita ao estado do cofre, aprovação, vínculo ao destino e auditoria.

Credencial disponível no ambiente

HTTP / SSH integrado

Código comprometido
Lê um valor reutilizável
Envia ou armazena o valor
credencial copiada
Código comprometido
Operação estruturada
Limite do SallyportEstado, identidade, aprovação e intenção durável
Anexar autenticação / assinar SSH
Destino solicitado / configurado
Cofre cifrado
negar ou perguntara credencial só percorre executor / destinatáriopersistem uso indevido e uma saída sensível
No caminho direto, o código comprometido lê uma credencial reutilizável e a envia para qualquer lugar. No caminho HTTP e SSH integrado do Sallyport, o código envia uma operação estruturada. O Sallyport pode negar ou pedir aprovação, anexar uma credencial HTTP ou assinar um desafio SSH dentro do executor e enviar a operação ao destino solicitado ou configurado. O resultado do destino é devolvido sem inspeção ou reescrita do conteúdo e pode conter dados sensíveis.

Para HTTP e SSH integrados, um pacote não consegue ler a credencial armazenada no ambiente do agente. Ele precisa solicitar uma operação que pode ser negada, exigir aprovação por chamada, ficar limitada ao destino solicitado ou configurado e ser registrada. A resposta do destino é devolvida sem inspeção ou reescrita do conteúdo.

Isso não impede a execução de código malicioso nem prova que uma solicitação aprovada é inofensiva. Destinos HTTP e SSH podem devolver dados sensíveis. Servidores MCP remotos recebem a autenticação configurada; servidores stdio locais recebem credenciais vinculadas no ambiente. Cada destino e upstream deve ser tratado como destinatário confiável das credenciais.

Escada de decisão

As mesmas verificações são executadas em cada invocação admitida

A escada compilada se aplica às invocações de ferramentas. O tráfego initialize e tools/list gerencia o catálogo fora desse caminho e não recebe uma linha de intenção.

  1. 01

    Cofre pronto

    Qualquer outro estado nega as ações dos agentes.

    deny | next

  2. 02

    Destino resolvido

    O destino necessário e os metadados da credencial precisam existir.

    deny | next

  3. 03

    Verificação por chamada

    As chaves ou os servidores upstream marcados pedem aprovação todas as vezes.

    ask | next

  4. 04

    Admissão do processo

    Admitir o processo ativo por sessão, lista de permissões, cartão da sessão ou modo de observação. Isso não identifica qual pacote carregado ou origem de bytes gerou a solicitação.

    ask | next

  5. 05

    Intenção de auditoria

    A intenção cifrada precisa estar armazenada de forma durável antes da execução.

    deny | run

  6. 06

    Executar e devolver o resultado

    Executar o canal, adicionar o resultado e devolver o resultado limitado do executor sem inspeção ou reescrita do conteúdo. Os resultados podem conter dados sensíveis.

    result

Uma entrada com cdhash exato deixa de corresponder após a atualização do binário. Uma entrada de publicador pode continuar aceitando atualizações da mesma identidade, portanto um publicador ou caminho de assinatura comprometido continua confiável. Ambas ignoram apenas o cartão da sessão.

Cobertura

Controles e risco residual

O modelo tem um limite explícito. O risco residual faz parte dele.

AmeaçaO que o Sallyport mudaO que permanece
Dependência maliciosa lê arquivos ou o ambientePara HTTP e SSH integrados, o Sallyport não coloca a credencial armazenada no ambiente do agente nem a adiciona intencionalmente a resultados, registros, aprovações ou eventos de auditoria. Os resultados do executor são devolvidos sem inspeção ou reescrita do conteúdo.Credenciais fora do Sallyport continuam expostas. Servidores MCP locais por stdio recebem credenciais vinculadas e herdam o ambiente do Sallyport.
Agente aprovado, comprometido ou afetado por injeção de promptAs chaves por chamada ainda exigem um clique ou Touch ID. O Sallyport verifica novamente a identidade do processo ativo nas invocações posteriores.A admissão cobre o processo, não cada pacote ou byte. O código carregado e quem grava em um socket ou pipe herdado compartilham essa admissão.
Credencial redirecionada para outro hostCredenciais HTTP só são anexadas quando host e caminho correspondem. Solicitações com credenciais não seguem redirecionamentos; as demais permanecem no mesmo host e porta e não podem rebaixar HTTPS.A validação DNS atual não fixa o endereço verificado durante a conexão, portanto ainda existe uma lacuna de reassociação de DNS.
Histórico local de auditoria editadoLinhas cifradas e a cadeia assinada de textos cifrados detectam edições, mudanças de ordem, lacunas internas e substituição do signatário. Um ponto de controle local assinado detecta reversões anteriores.Uma cauda posterior ao ponto de controle pode ser perdida após um encerramento abrupto. Uma reversão local completa exige uma testemunha externa para ser distinguida de uma restauração.
Um upstream coloca segredos nos metadados do catálogo MCPSelecione e revise o código do servidor upstream como parte do limite de confiança. O Sallyport devolve resultados, erros e metadados autenticados do catálogo sem filtragem com base em credenciais e sujeito aos limites documentados de tamanho e descrição.Initialize e tools/list ficam fora da auditoria de invocação. Seus nomes, descrições e esquemas são conteúdo arbitrário controlado pelo upstream e podem conter credenciais ou outros dados sensíveis.
Acesso root ou execução de código dentro do SallyportA Secure Enclave controla o uso das chaves privadas e o cofre permanece cifrado em repouso.Acesso root, SIP desativado ou execução de código dentro do processo podem controlar um cofre desbloqueado. O Sallyport não é um ambiente isolado do sistema nem um antivírus.
Limites rígidos

O que este modelo não afirma

O Sallyport reduz a exposição de credenciais e adiciona controle ao uso. Ele não transforma código local hostil em código confiável.

01

A aprovação não analisa a intenção

Um cartão de sessão identifica o processo e sua procedência. Ele não determina se todas as solicitações dessa sessão são seguras.

02

A admissão do processo não isola componentes

Uma sessão identifica o processo ativo. O código carregado ou um componente que grava por um socket ou pipe herdado recebe a mesma admissão.

03

O operador pode aprovar uma ação nociva

Um clique ou Touch ID prova que o procedimento de aprovação ocorreu. Isso não torna inofensiva uma operação mal revisada.

04

Upstreams MCP são destinatários confiáveis

Um servidor remoto recebe a chave de API ou o token OAuth configurado. Um processo filho stdio local recebe credenciais vinculadas e o ambiente do app. O Sallyport não isola nenhum dos servidores.

05

Os metadados do catálogo são conteúdo não confiável

A inicialização e tools/list ignoram a escada e a intenção de auditoria. Nomes, descrições e esquemas continuam sendo conteúdo arbitrário controlado pelo upstream, sem filtragem com base em credenciais; os limites documentados de tamanho e descrição se aplicam.

06

Tráfego fora do Sallyport está fora do escopo

O app não consegue controlar chamadas de rede diretas, comandos do shell, outros cofres de credenciais nem ferramentas que ignorem sua interface MCP.

07

Os resultados do executor podem conter dados sensíveis

Resultados e erros de HTTP, MCP e SSH não são inspecionados nem reescritos. Um destino pode devolver credenciais ou outros dados sensíveis, e as gravações SSH preservam sua saída.

08

As prévias de auditoria podem conter dados do chamador

O Sallyport não adiciona credenciais resolvidas a aprovações nem linhas de auditoria, mas comandos e argumentos do chamador aparecem em resumos e prévias limitadas. Trate a auditoria decifrada como confidencial.

09

Este é um produto interativo para Mac

A implantação compatível é um app assinado para macOS em Apple Silicon com interface local e Touch ID. Não existe modo para Linux, contêineres, servidores, executores em nuvem nem CI sem interface.

Inspecione a implementação

O núcleo é de código aberto sob Apache-2.0. Leia a implementação e o modelo de confiança ou compile localmente.

Ver o código-fonte no GitHub
Sallyport

O Sallyport executa chamadas de API e comandos SSH pelo seu agente de IA. As chaves ficam em um cofre local no seu Mac; você aprova cada execução e toda ação vai para um registro selado.

© 2026 Sallyport · Código aberto sob Apache-2.0 · Oleg Sotnikov