ProdutoCLISegurançaDocsPreços
Entrar

Um mapa da sua plataforma. Os poucos caminhos que importam.

O Basalt lê seu código, sua infraestrutura e sua conta AWS, junta tudo em um único grafo e reporta apenas as cadeias que levam a algo sensível. Cada uma vem com evidência e correção.

Como funciona

Quatro etapas, todas somente leitura. O primeiro scan de uma plataforma típica de startup não exige instalar agente nem mudar código.

Conectar

Uma role de leitura na AWS, assumida com ExternalId, e a CLI nos seus repositórios. Ou rode tudo na sua própria máquina. Um GitHub App está sendo liberado.

Mapear

O código é analisado, nunca executado. Agentes, tools, servidores MCP, credenciais, roles, policies, compute e data stores viram nós; o que cada um alcança vira uma aresta.

Encontrar caminhos

O motor percorre o grafo dos pontos de entrada até os dados sensíveis e pontua cada cadeia por exposição, explorabilidade, privilégio e sensibilidade do dado. Achados com a mesma causa raiz são agrupados.

Corrigir e comprovar

Cada caminho indica a menor mudança que o quebra. A CLI pode aplicá-la em um branch e abrir o pull request depois da sua aprovação; o scan seguinte mostra o caminho fechado.

Um mapa, três jeitos de usar

Escaneie a plataforma, cheque cada pull request antes do merge e teste se um caminho pode mesmo ser explorado. Cada um mostra em que pé está hoje.

Disponível

Scan

Junta código e cloud em um único grafo e percorre esse grafo de cada ponto de entrada até os dados sensíveis. Você recebe as poucas cadeias que se sustentam, não uma lista de problemas soltos.

  • Agentes e tools em LangChain, LangGraph, LlamaIndex, CrewAI, AutoGen, SDKs da OpenAI e da Anthropic, PydanticAI, Vercel AI SDK e Mastra, além das configs de MCP do Claude, Cursor, VS Code e Windsurf.
  • Roles, policies e trust do IAM, Lambda, ECS e EC2, S3, DynamoDB e Secrets Manager, a partir do Terraform ou da conta ao vivo, por uma role somente leitura com ExternalId.
  • Cinco regras de caminho hoje, cada achado sustentado por arquivo, linha ou ARN, com a menor correção que quebra a cadeia. Ver as regras
  • basalt scan e basalt scan-aws em texto ou JSON, basalt check para barrar o build que abre um caminho novo, e a aplicação web com um relatório de segurança para os seus clientes.

Analisa Python, TypeScript e JavaScript, Java, Rust e C++. O código é lido, nunca executado.

terminalsomente leitura
$ basalt scan ./platform  code    3 agents · 11 tools · 2 MCP servers  infra   7 roles · 9 data stores  paths   2 critical · 1 high · 1 medium CRITICAL  SupportBot can read customer data  Function URL → support-api → SupportBot  → read_file → support-bot  → s3://customer-exports  fix  scope s3:GetObject to tickets/*  at   infra/iam.tf:22, support_bot/tools.py:8
Em liberação

Bug watch

Roda o mesmo motor em cada pull request e reporta só os caminhos de ataque que passam pelos arquivos alterados, antes que eles cheguem ao branch principal.

  • Disparado pelos webhooks do GitHub App quando um pull request é aberto, reaberto, marcado como pronto para revisão ou recebe commits novos.
  • Publica um check no GitHub (aprovado ou com problemas) e, se você quiser, um comentário com cada caminho, a severidade, os arquivos envolvidos e o nível de confiança.
  • Você define a severidade mínima que vale um comentário, ou usa só o check. Um commit já checado não é checado de novo.
  • Determinístico: nenhum modelo de IA no processo, por isso roda em todo pull request, em todos os planos.

Sendo liberado junto com o GitHub App. Uma revisão com IA por cima do check determinístico está em desenvolvimento e ainda não está no ar.

pull request #482infra: add ci role
■ Basalt bug watch — issues  1 path touches files in this pull request basalt commentedBasalt bug watch — 1 highThese attack paths touch fileschanged in this PR: ■ HIGH · Any AWS account can  assume ci-deploy  Trust allows "AWS": "*" with no  ExternalId; the role can read  prod/database.  Where: infra/iam/ci.tf  confidence: high
Acesso antecipado

Red team

Pega os caminhos que o scan encontrou e os testa contra um alvo que você indica, para separar o que pode mesmo ser explorado do que não pode. É validação automatizada de caminhos de ataque, não um pentest.

  • Só roda depois que um owner assina uma autorização por escrito com o alvo, o ambiente e a janela de horário. Staging por padrão.
  • A prova é um canary que você planta, como um objeto, uma linha no banco ou um arquivo. Sem o canary, o veredito é inconclusivo, nunca explorado.
  • Só métodos HTTP seguros, salvo opt-in, rate limit por alvo, limite de turnos e de tentativas, e um kill switch.
  • Famílias de técnica mapeadas ao OWASP Top 10 para aplicações com LLM: prompt injection, agência excessiva de tools, vazamento de dados, trust aberto e roles com privilégio demais.

Aberto para design partners. As campanhas ao vivo são liberadas por conta.

campaignsupport-api · staging
auth     signed by an ownerscope    staging · 09:00–18:00target   GET only · 2 req/s · kill switchcanary   s3://customer-exports/canary.txt path     SupportBot → read_file         → s3://customer-exports  01  direct injection      blocked  02  indirect injection    inconclusive  03  excessive agency      canary hit verdict  exploited · proof: canary

Tipos de caminho

As regras que o motor roda hoje e as próximas da fila. Uma regra só reporta uma cadeia que consegue sustentar com evidência.

Crítico

Agente exposto chega aos dados

Uma function URL pública da Lambda executa um agente cuja tool usa uma role capaz de ler ou escrever em um store sensível. Uma entrada não confiável pode induzir o agente a usar essa tool.

Function URL→support-api→SupportBot→read_file→support-bot→s3://customer-exports
Crítico

Role aberta a qualquer conta

Uma trust policy permite que qualquer principal da AWS assuma a role. Crítico quando a role é admin ou alcança dados sensíveis; alto nos demais casos.

Qualquer conta AWS→ci-deploy→prod/database
Alto

Store sensível aberto à internet

Um bucket que parece sensível pelo nome ou pela tag permite leitura anônima pela sua policy.

Internet→s3://invoices-prod
Alto

Credencial em texto puro

Uma chave ou token escrito em uma config de MCP, em uma connection string ou no ambiente de uma função, e os componentes que o usam. O valor nunca é armazenado.

billing-worker→DATABASE_URL→infra/ecs.tf:44
Médio

Assistente de código com shell

Um servidor MCP no repositório dá ao Claude, Cursor ou VS Code acesso a shell ou ao sistema de arquivos inteiro. O conteúdo que o assistente lê pode direcionar o que ele faz.

Conteúdo não confiável→Assistente do Cursor→mcp: shell

Em breve

  • Workload público chega aos dados sem agente (API Gateway, Lambda URL ou rota pública até uma role com privilégio demais)
  • Credencial vazada seguida até tudo o que ela alcança
  • Escalada de privilégio dentro da conta

Um achado que dá para resolver

Severidade, a cadeia completa, o que um atacante alcançaria, a causa, a correção e a evidência. Quando uma condição de policy ou um limite de permissão pode mudar a resposta, o passo é marcado como incerto.

Crítico

O SupportBot pode ser induzido a ler dados de clientes

Impacto

Leitura de s3://customer-exports (com as tags pii e customer-data) a partir de uma function URL pública.

Causa

A role support-bot permite s3:GetObject em *; a tool read_file aceita qualquer caminho de arquivo.

Correção

Restringir a policy a tickets/* e limitar a tool a um diretório.

Evidência

infra/lambda.tf:31support_bot/tools.py:8infra/iam.tf:22

O que não fazemos

O Basalt se concentra em caminhos com evidência. Para o resto, mantenha as ferramentas que você já tem.

  • CVEs de dependências e scan de imagens de container: use Dependabot, Trivy ou o scanner que você já usa.
  • Centenas de regras de checklist: uma configuração errada só aparece quando faz parte de um caminho real.
  • Escrita na sua conta de cloud: as correções chegam como mudanças de código que você revisa.
  • Testes sem permissão: scan e bug watch são estáticos e não enviam tráfego para suas aplicações ou agentes. O red team só roda contra um alvo que um owner autorizou por escrito.

Veja os seus próprios caminhos.

Entre na lista de espera, comece pela Auditoria Essencial ou fale com a gente se já há uma revisão de segurança marcada.