84 pacotes npm ficaram maliciosos em um único ataque em maio

Deixe seu agente mexer na produção.Guarde as chaves.

O Sallyport guarda suas credenciais em um cofre local e executa chamadas de API e comandos SSH pelo agente. Você aprova cada execução com um clique ou o Touch ID. Não existe comando que revele uma chave guardada, nem botão de exportar.

$brew install --cask olegsotnikov/tap/sallyport

macOS 14+ · Apple Silicon · Apache-2.0 · Grátis · sem conta · sem nuvem

Feito para engenheiros que deixam o Claude Code, o Cursor ou o Codex mexer em infraestrutura real

Claude CodeCodexCursorWindsurfClineLangChainCrewAIOpenHandsGooseZed
Experimente

Aprove de onde você já está

Esta chave exige aprovação em cada uso. A chamada aguarda sua decisão.

claude · ~/infra

sallyport · http.request

PATCH api.cloudflare.com/client/v4/zones/…/dns_records

key cloudflare · flagged approval per call

aguardando aprovação...

Aprovação necessária

http.request → api.cloudflare.com

Developer ID Application: Anthropic PBC

claude node zsh

Chave:cloudflarepor chamada
Clique em Aprovar para permitir a chamada.ou pressione A/D
O problema

Seu agente pode ler suas chaves

Tokens de API no .env, chaves SSH no disco, concessões OAuth em arquivos de configuração. O agente e cada pacote que ele instala podem ler tudo isso, e um único README envenenado pode levar tudo embora.

Segredos expostos

Tokens no .env e em variáveis do shell, chaves SSH no disco, tokens OAuth em arquivos de configuração. Legíveis pelo agente, por seus processos filhos e por tudo o que o npm instalou hoje.

Injeção de prompt vira roubo

Uma página ou um README malicioso manda o agente enviar um token para um novo destino, e o agente obedece. Ele foi feito para seguir instruções.

Você descobre pela fatura

Sem um gateway, não há registro de quais chamadas o agente fez, para onde as enviou ou o que elas carregavam. Chaves roubadas aparecem semanas depois, no tempo de outra pessoa.

Isto não é hipotético

Maio de 2026

Ataque npm ao TanStack

84 versões maliciosas em 42 pacotes coletaram credenciais de nuvem, tokens do GitHub e chaves SSH na instalação e depois se espalharam pelos próprios pacotes das vítimas.

Fim de 2025

Worm Shai-Hulud

Pacotes npm comprometidos roubaram segredos na instalação e usaram as credenciais roubadas para infectar a rodada seguinte de pacotes.

Agosto de 2025

Nx S1ngularity

Uma ferramenta de build envenenada vasculhou máquinas de desenvolvedores em busca de segredos, testou ferramentas de IA locais e mandou o roubo para fora pela CLI do GitHub.

Os três coletaram chaves de variáveis de ambiente e de arquivos no disco. O Sallyport mantém chaves utilizáveis fora dos dois.

Seu agente não precisa das chaves

O agente envia uma solicitação: chame esta API, rode este comando naquele host. O Sallyport anexa a credencial dentro do aplicativo, executa a chamada e retorna o resultado. A chave nunca aparece no ambiente do agente, e um registro selado mostra o que rodou e quem aprovou.

O modelo de confiança

Escada de decisão fixa

Cada ação sobe a mesma escada compilada. Não há linguagem de políticas para configurar errado nem motor de regras para apodrecer; uma lista de permissões opcional pode dispensar a solicitação de sessão para identidades de código em que você confia.

O modelo de confiança

1

portão do cofre

O cofre é absoluto

O cofre inicia bloqueado. A Secure Enclave e o Touch ID protegem o acesso aos dados. Até o desbloqueio, o Sallyport nega todas as ações.

2

chaves por chamada

Chaves marcadas sempre pedem aprovação

Uma chave marcada como "Aprovação por chamada" exige um clique ou Touch ID em cada uso, mesmo dentro de uma sessão aprovada.

3

portão de sessão

Uma aprovação por execução do agente

Um novo processo de agente mostra um cartão com sua autoridade de assinatura de código. A aprovação dura até o processo terminar, você revogá-la ou bloquear o cofre.

4

observação

Execute e registre

Com a aprovação por sessão desligada, as ações rodam sem cartões de sessão e permanecem no registro.

Portão do cofre, chave por chamada, portão de sessão, observação.

Incluído

Tudo vem em um único app assinado

Um único app assinado para Mac contém o cofre, as aprovações e o registro. Não há conta para criar nem serviço na nuvem por trás dele.

Portão de cofre absoluto

Enquanto está bloqueado, o Sallyport nega todas as ações do agente e operações de gerenciamento, exceto status.

Cifrado em repouso

O cofre cifra nomes de chaves, provedores, hosts vinculados, inventário SSH, configurações e valores secretos.

Procedência do processo

Cada cartão mostra a autoridade de assinatura de código e a cadeia de processos do solicitante, incluindo processos não assinados.

Touch ID para alterações

Alterações de configuração podem exigir Touch ID. Um clique sintético não satisfaz a solicitação biométrica.

Registro cifrado na escrita

O Sallyport cifra as execuções do agente e a atividade de cada chamada no momento da escrita, e liga o texto cifrado por uma cadeia de hashes.

SSH que enxerga o comando

O Sallyport vê o comando SSH completo, verifica a chave do host e sela uma gravação da sessão. A chave privada permanece no aplicativo.

Modo de observação

O modo de observação remove os cartões de sessão, mas mantém o portão do cofre, a aprovação por chamada e o registro.

Sem recuperação

O cofre não permite exportar nem revelar dados e não tem chave de recuperação. Se você perdê-lo, reemita as credenciais nos provedores.

Canais

HTTP, SSH e MCP

O agente se conecta ao Sallyport como um servidor MCP comum. Todas as ações seguem a mesma escada e chegam ao mesmo registro.

APIs HTTP

http.request → api.github.com

O app faz a chamada HTTPS e injeta a credencial apenas durante a execução. Redirecionamentos para outro host não a incluem.

SSH

ssh.exec → deploy@prod-03

Um helper sem estado abre a conexão. O app faz as assinaturas SSH, fixa as chaves de host e sela uma gravação da sessão; a chave privada não entra no helper.

Servidores MCP

github.create_issue

Execute servidores MCP locais por stdio ou remotos pelo mesmo portão. O Sallyport sela e renova os tokens OAuth 2.1.

Em números

O que está em jogo

84

versões maliciosas de pacotes em um único ataque npm que caçava credenciais

0

contas, serviços na nuvem ou telemetria: o Sallyport roda inteiramente no seu Mac

1 toque

o Touch ID aprova uma chamada marcada; um clique sintético não consegue falsificá-lo

~2 min

do brew install à sua primeira chamada com portão

Limites

O que o Sallyport não promete

Ferramentas de segurança adoram prometer demais, então aqui está nosso limite por escrito.

Limites

Uma sessão aprovada pode agir mal

A aprovação de sessão autoriza o processo, não o significado de cada solicitação. Use a aprovação por chamada para chaves que exigem análise individual.

Não impede código nativo com seus direitos

O Sallyport não é um antivírus. Código executado com seus direitos pode atacar o app ou o sistema operacional.

Não revisa por você

Os cartões mostram a autoridade de assinatura de código e a cadeia de processos do solicitante. Você ainda precisa analisar a solicitação.

Perguntas frequentes

Perguntas frequentes

Qual é a licença do Sallyport?
O Sallyport é gratuito para baixar e usar. O núcleo é de código aberto sob Apache-2.0. Os componentes empresariais planejados usarão uma licença comercial.
Onde meus segredos ficam?
Em um cofre local no seu Mac. A Secure Enclave e o Touch ID protegem o acesso à chave de criptografia do cofre. O Sallyport cifra os valores secretos e seus metadados em repouso e não envia os dados do cofre.
Ele envia dados para o Sallyport?
Não. Não há serviço na nuvem, conta nem telemetria. O Sallyport funciona offline, exceto pelos serviços para os quais você o aponta e pelo feed de atualizações.
Quais são os requisitos de sistema?
Um Mac com Apple Silicon e macOS 14 ou mais recente. Macs com Intel não são compatíveis.
O que acontece enquanto o cofre está bloqueado?
As ações do agente param. As solicitações de gerenciamento retornam apenas o status; todas as outras operações são negadas. O Touch ID desbloqueia o cofre. Bloquear apaga as sessões e aprovações pendentes.
Funciona com o Claude Code e outros agentes?
Qualquer cliente MCP pode usar o shim sp mcp incluído para acessar http.request, ssh.exec e os servidores MCP upstream configurados.
O agente pode ver minhas chaves?
Não. Não existe comando que revele uma credencial armazenada, nem rota de exportação ou recuperação. Uma ressalva honesta: o Sallyport retorna as respostas do servidor como elas chegam; portanto, se um serviço de destino devolver um segredo na resposta, o agente verá essa resposta.
O que acontece se eu perder acesso ao Mac?
Não há chave de recuperação. Reinicialize o cofre e reemita as credenciais nos provedores.

Seu agente está a uma injeção de prompt de distância das suas chaves.

Download grátis. Apple Silicon, macOS 14 ou mais recente. Sem conta, nunca.

$brew install --cask olegsotnikov/tap/sallyport

macOS 14+ · Apple Silicon

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