Pular para o conteúdo
Outubro de 2026: incidentes da Railway e OpenCode, o que fazer

Segurança de chaves de API de IA

Pare uma chave de IA vazada antes que ela gaste.

Mantenha suas chaves de provedor fora das suas aplicações. Dê a cada aplicação, agente e ferramenta uma chave do gateway do INFRO, com botão de desligar, lista de permissões de IP, limites de modelos e limite de gastos, cada um verificado antes de o seu provedor ser chamado.

Um log de requisições de exemplo para uma chave do gateway do INFRO que vazou. A chave está limitada à rede dos seus servidores, 203.0.113.0/24, e a um limite diário de gastos de $50.00. Requisições de outras redes são recusadas com 403 ip_not_allowed, e um modelo fora da lista de permissões da chave com 403 model_not_allowed; nenhuma delas chega a um provedor. As requisições dos servidores rodam nas próprias contas da OpenAI e da Anthropic da organização, cada uma com um custo estimado do provedor.
  • 4 verificações

    Em cada requisição, antes de o seu provedor ser chamado.

  • 32 redes

    Por chave na lista de IPs permitidos, IPv4 ou IPv6, em todos os planos.

  • Sem deploy

    Para desativar uma chave vazada. Toda requisição com ela é recusada.

  • AES-256-GCM

    Em cada chave do provedor que você conecta. Ela nunca é mostrada de novo.

Onde ficam as chaves de provedor

A mesma chave de provedor costuma estar em cinco lugares, e qualquer cópia pode gastar de toda a conta. Com o INFRO, a chave de provedor fica selada em um só lugar e cada aplicação, agente e ferramenta tem a própria chave do gateway. Escolha onde o vazamento acontece.

Escolha onde a chave vaza
Uma chave do provedor, copiada em todo lugar5 de 5 lugares expostos
Sua chave do provedor sk-proj-••••7Hc2Copiada em 5 lugares
  1. Variáveis de ambiente de produçãosk-proj-••••7Hc2Vazou aqui
  2. Segredos de CI e de deploysk-proj-••••7Hc2Mesma chave
  3. Notebooks de desenvolvedores e arquivos .envsk-proj-••••7Hc2Mesma chave
  4. Shells de agentes de códigosk-proj-••••7Hc2Mesma chave
  5. Ferramentas de IA de terceirossk-proj-••••7Hc2Mesma chave
Exposta
Toda a sua conta no provedor, até os limites definidos no provedor, até a chave ser excluída lá.
Para recuperar
Exclua a chave no provedor e depois faça o deploy de novo nos 5 lugares.
Com o INFRO, uma chave do gateway por lugar1 de 5 chaves expostas
Sua chave do provedor sk-proj-••••7Hc2Protegida no INFRO
  1. checkout-apisk_infro_••••a91f$50 por dia203.0.113.0/24Vazou, contida
  2. ci-deploysk_infro_••••3c7e$10 por dia203.0.113.64/27Não afetada
  3. maya-laptopsk_infro_••••5d20$5 por diaExpira em 30 diasNão afetada
  4. claude-codesk_infro_••••8b14$20 por diaSomente AnthropicNão afetada
  5. support-toolsk_infro_••••e602$15 por mês1 modeloNão afetada
Exposta
checkout-api: uma chave, recusada fora da rede dos seus servidores e limitada a $50 por dia dentro dela.
Para recuperar
Desative-a no console, sem deploy, e depois rotacione-a nesse único lugar. As outras 4 continuam funcionando.

Quatro verificações

Cada verificação recusa com seu próprio código documentado, para que seus logs digam exatamente o motivo, e cada uma é ajustada pelo console ou pela API sem deploy. As quatro estão em todos os planos.

  1. 01

    Interruptor de desligamento

    Esta chave está ativa?

    Desligue uma chave pelo console ou pela API e toda requisição com ela é recusada. O segredo, os limites e o histórico dela são mantidos; ligá-la de novo restaura a mesma chave.

    403 key_disabledDocumentação

  2. 02

    Redes permitidas

    A chamada vem dos seus servidores?

    Até 32 endereços IPv4 ou IPv6 ou faixas CIDR por chave, comparados com o endereço de cliente que a borda da Cloudflare informa, nunca com X-Forwarded-For. Sem um endereço confiável, a requisição é recusada.

    403 ip_not_allowedDocumentação

  3. 03

    Modelos e provedores

    Este modelo é permitido?

    Aprove os modelos que uma organização, projeto ou chave pode chamar e os provedores que uma chave pode alcançar. Cada chave pertence a um ambiente e nunca alcança uma conexão fora dele.

    403 model_not_allowedDocumentação

  4. 04

    Limite de gastos

    O limite dela cobre esta requisição?

    Um limite diário, semanal, mensal ou vitalício por chave, ao lado de orçamentos por organização, projeto e membro. Uma requisição que o limite não consegue cobrir é recusada antes de o provedor ser chamado.

    402 key_budgetDocumentação

  • Rotação com sobreposiçãoRotacione em uma etapa: a nova chave herda todas as configurações da antiga, e a antiga continua funcionando por até sete dias enquanto você faz o deploy, ou para na hora. O limite de gastos é compartilhado, então rotacionar nunca dá folga nova.
  • ExpiraçãoDê a uma chave um prazo após o qual ela deixa de funcionar, para um prestador, uma demonstração ou uma migração.
  • Exibida uma vez, armazenada como hashUma chave de gateway tem 32 bytes aleatórios, é exibida uma vez e armazenada apenas como digest SHA-256. Um vazamento do banco de dados não expõe uma chave utilizável.
  • Tentativas de adivinhação são limitadasUm endereço que falha na autenticação 30 vezes em um minuto é recusado com um 429 até o minuto passar, antes de qualquer chave ser consultada.

Tetos de gastos

Uma chave vazada, um agente preso em loop, um cliente automatizando o uso do seu plano gratuito: cada um para em um teto do seu próprio tamanho em vez de atingir todo o seu orçamento. Cada teto aplicável é verificado antes de o seu provedor ser chamado, contando o pior caso das requisições já em andamento.

Os tetos se somam

Uma requisição precisa caber em todos os tetos que se aplicam a ela. O mais apertado decide, então um teto pequeno no lugar certo detém um problema muito antes do teto da organização.

  1. Organização
  2. Projeto
  3. Membro
  4. Chave do gateway
  5. Cliente final
Orçamentos de exemplo para uma organização: um teto rígido da organização, um orçamento de projeto, o limite diário de uma chave do gateway, o limite vitalício de uma chave e um teto por cliente final. Na crise escolhida, “Uma chave de gateway vaza”, o teto correspondente atinge o limite e a requisição seguinte é recusada com 402 key_budget antes de qualquer provedor ser chamado. A chave para em $50 no dia. Todas as outras chaves continuam atendendo.

A chave para em $50 no dia. Todas as outras chaves continuam atendendo.

Tetos de gastos por escopo: períodos, comportamento, código de recusa e plano
TetoPeríodoComo funcionaRecusada comPlano
OrganizaçãoMeta mensal e teto rígidoA meta alerta; o teto rígido alerta ou bloqueia. Somente o proprietário o define.402 organization_budgetTodos os planos
ProjetoMensalAlertar ou bloquear, com alertas nos seus próprios limiares.402 project_budgetTodos os planos
MembroMensalAlertar ou bloquear, para a atividade de uma pessoa.402 member_budgetTodos os planos
Chave do gatewayDiário, semanal, mensal ou vitalícioSempre bloqueia. Um limite vitalício nunca é reiniciado.402 key_budgetTodos os planos
Cliente finalDiário, semanal ou mensalUma regra para todo cliente, por organização ou projeto, com exceções que o seu backend define.402 end_user_budgetTeam e superiores

Testado sob cargaEm um teste em sandbox, um teto bloqueante de $1 se manteve em 12 de 12 execuções com até 500 requisições simultâneas (o teste e seu método). Os tetos contam a estimativa do INFRO do custo do provedor, não a fatura do seu provedor, e um modelo sem preço conhecido é recusado sob um teto bloqueante, a menos que você o permita; por isso, mantenha também um limite de gastos no provedor. Documentação de controles de gastos

Uma chave vazou

Para uma chave do gateway do INFRO. Se vazou uma chave de provedor, exclua-a primeiro no provedor: é a única coisa que a interrompe.

  1. 1Contenha sem fazer deployDesligue a chave de gateway ou mantenha a sua aplicação rodando restringindo a chave às redes dos seus servidores e baixando o limite de gastos dela. Nada disso exige deploy, e toda verificação roda antes de qualquer chamada ao provedor.
  2. 2Substitua-aRotacione sem sobreposição quando a chave tiver vazado. A substituta mantém o rótulo, o projeto, os limites, as listas de permissões, o ambiente e o acesso ao histórico, e é exibida uma vez.
  3. 3Leia o que ela fezCada registro de requisição nomeia a chave de gateway que a fez, com o modelo, o status e o custo estimado do provedor; filtre o log de requisições e o uso por essa chave. O console mostra quantas requisições a lista de permissões de cada chave recusou hoje.
  4. 4Verifique o uso fora do INFRONo plano Business, a reconciliação de custos com acesso ao uso ativado informa o uso de uma chave de provedor conectada que nunca passou pelo INFRO. Sem esse acesso, ela diz “não verificado”, nunca “sem bypass”: leia a página de uso do próprio provedor.
  5. 5Guarde o registroMudanças de chaves, rotações e edições de política ficam no log de auditoria com quem as fez e quando, em linhas que o banco de dados se recusa a atualizar ou excluir.
curl -X PATCH https://api.infro.io/manage/v1/gateway_keys/$KEY_ID \
  -H "Authorization: Bearer $INFRO_MANAGEMENT_TOKEN" \
  -H 'If-Match: "7"' \
  -H "Content-Type: application/json" \
  -d '{"disabled": true}'

# Every request with the key: 403 key_disabled
# Its secret, limits and history are kept.

As mesmas três mudanças estão na página da chave no console. Com a API de gerenciamento, uma mudança exige a versão que você leu por último (If-Match), para que duas pessoas contendo o mesmo incidente não sobrescrevam uma à outra.

Segredos em prompts

As pessoas colam arquivos .env em chats e agentes os leem a partir de shells. No plano Business, os guardrails verificam prompts, chamadas de ferramentas e respostas em busca de formatos de segredos e, então, bloqueiam a requisição, substituem a ocorrência por [SECRET] ou a sinalizam, antes de o seu provedor ser chamado.

  • OpenAI
  • Anthropic
  • Chave de API do Google
  • ID de chave de acesso da AWS
  • Token do GitHub
  • Token do Slack
  • Chave live do Stripe
  • Chave do INFRO
  • JWT
  • Chave privada PEM

A detecção é baseada em padrões: ela reconhece estes formatos e nada mais, então não detecta chaves de acesso secretas da AWS, senhas e formatos que não conhece. Cada ocorrência é contada no registro da requisição. Documentação de guardrails

Exemplo: um desenvolvedor cola um arquivo de ambiente em um chat completion. Antes de a requisição chegar ao provedor, o detector de segredos do guardrail substitui a chave da OpenAI por [SECRET], e a resposta traz o header X-INFRO-Guardrails: redacted.

Agentes, ferramentas e pessoas

Agentes de código ganham as próprias chaves

Claude Code, Codex e os SDKs de agentes chamam /v1/messages e /v1/responses do INFRO com uma chave do gateway em vez da sua chave da Anthropic ou da OpenAI. Dê uma a cada desenvolvedor ou agente, com limite de gastos, validade e uma lista de permissões de rede; revogá-la não afeta mais ninguém.

Claude Code & Codex

Credenciais de ferramentas ficam fora dos agentesBusiness

Registre cada servidor MCP uma única vez com seu token. O INFRO o adiciona em cada chamada, então nenhum agente, prompt ou arquivo de configuração o guarda, e cada chave do gateway recebe apenas as ferramentas que lhe foram concedidas.

Modelo de segurança do gateway MCP

O login no console é a outra porta

Dois fatores com app autenticador, passkeys e chaves de hardware, uma lista de sessões que você pode encerrar e uma configuração da organização que exige dois fatores de todos os membros. Login único SAML ou OIDC e SCIM a partir do plano Business.

Dois fatores e sessões

As chaves que guardamos

Uma plataforma que armazena chaves de provedor é exatamente o que os ataques de outubro visaram, então as mesmas perguntas valem para nós. Estes controles são as declarações do próprio Trust Center, palavra por palavra.

As credenciais de provedor são seladas e vinculadas a um único tenant
As chaves de provedor que você conecta são criptografadas com AES-256-GCM sob uma chave mantida como segredo do Worker, nunca no banco de dados. Os identificadores da organização e da conexão são vinculados como dados autenticados adicionais, de modo que uma credencial selada copiada para a linha de outro tenant — ou para outra linha do mesmo tenant — falha de forma fechada em vez de ser decifrada. As credenciais conectadas para a reconciliação de custos são seladas separadamente, sob o próprio vínculo.
Não há revelação, em lugar nenhum
Depois que uma credencial de provedor é salva, nenhuma interface a devolve — nem o console, nem a API, nem o console interno do operador. O que qualquer um dos lados consegue ver são os últimos quatro caracteres e os timestamps. Se você perder a chave, rotacione-a no provedor; não podemos mostrá-la a você.
As chaves de API do INFRO têm hash em repouso
Uma chave de gateway tem 32 bytes de uma fonte aleatória criptográfica. O que armazenamos é o digest SHA-256 dela, um prefixo de exibição e os últimos quatro caracteres, de modo que um vazamento do banco de dados não expõe uma credencial utilizável. A revogação grava um tombstone em vez de excluir a linha, para que não seja encoberta por uma entrada de cache obsoleta ainda se propagando entre localidades.
A chave de criptografia pode ser rotacionada sem o seu envolvimento
Rotacionar a chave que sela as credenciais dos clientes re-sela cada credencial armazenada no lugar. Não pede aos clientes que reinsiram nada, e o algoritmo armazenado carrega uma string de versão para que um esquema futuro possa coexistir com o atual, sem exigir um dia de virada.

O que o INFRO não pode fazer

Uma chave de provedor obtida do INFRO, ou de qualquer outro lugar, pode ser usada diretamente no provedor, fora de todos os limites do INFRO. Conecte chaves com escopo restrito ao próprio projeto ou workspace, com um limite de gastos definido no provedor: é o controle que se mantém mesmo se nós falharmos. O que ainda não está implementado está listado no Trust Center.

Outubro de 2026

Nos dois casos, a orientação foi a mesma: substituir a chave, excluir a antiga no provedor e ver o que ela fez. Quanto menos lugares uma chave de provedor ocupa, menos rotações um vazamento custa; as chaves que você distribui devem ter limites que você ajusta sem deploy.

RailwayDivulgado em 21 de outubro de 2026

O que a Railway disse

An unauthorized party may have accessed encrypted customer environment variables and, for some of them, obtained the decrypted contents, in a series of attacks aimed at compromising AI inference providers.

O que fazer

Troque toda variável que a Railway guardava, começando pelas chaves de provedores de IA: substitua, exclua a chave antiga no provedor, faça o deploy e revise o uso da chave antiga.

Railway breach: what happened and what to doRevisado em 22 de outubro de 2026

OpenCodeDivulgado em 17 de outubro de 2026

O que a OpenCode disse

A breach related to a large-scale distillation attack affected 1.4% of OpenCode Console users, those with external AI providers linked, and provider keys saved in a workspace may have been exposed.

O que fazer

Crie uma substituta com escopo, revogue a chave antiga no provedor e revise o uso no provedor a partir de 16 de outubro.

OpenCode Console breach: what happened and what to doRevisado em 21 de outubro de 2026

Cada resumo vem da divulgação da própria empresa, conforme citada em nossa análise. Os dois incidentes estavam em aberto quando foram escritos; as análises são revisadas semanalmente e registram cada mudança em suas notas de revisão.

Guias práticos

Perguntas frequentes

O que devo fazer se a minha chave de API da OpenAI ou da Anthropic vazou?

Crie uma chave substituta no provedor, exclua lá a chave vazada, faça o deploy da substituta e depois revise o uso da chave antiga no provedor durante todo o tempo em que ela poderia ter sido usada. Excluir a chave no provedor é o que a interrompe; nada que uma aplicação ou um gateway faça consegue recolher uma chave roubada. Depois, dê à substituta um limite de gastos no provedor e mantenha-a fora de código, de apps cliente e de ambientes compartilhados.

Como o INFRO limita o dano de uma chave de API vazada?

Suas aplicações guardam chaves de gateway do INFRO em vez das suas chaves de provedor. Cada chave de gateway pode ser desligada (403 key_disabled), limitada a até 32 redes (403 ip_not_allowed), restrita a modelos e provedores aprovados e ter um limite de gastos diário, semanal, mensal ou vitalício (402 key_budget). Toda verificação roda antes de o seu provedor ser chamado, em todos os planos, e nenhuma exige deploy. Uma chave de gateway vazada é um problema delimitado que você pode desligar; uma chave de provedor vazada alcança toda a conta do provedor.

Posso limitar o gasto com IA por cliente, por projeto ou por período?

Sim. Os orçamentos se aplicam por organização (uma meta mensal que alerta e um teto rígido que alerta ou bloqueia), por projeto e por membro (mensal) e por chave de gateway (diário, semanal, mensal ou um limite vitalício que nunca reinicia). A partir do plano Team, os limites de clientes finais restringem cada um dos seus próprios clientes por dia, semana ou mês, com exceções para clientes específicos. Cada teto aplicável é verificado antes de o seu provedor ser chamado, contando o pior caso das requisições já em andamento, e uma requisição recusada é um 402 que nomeia o teto. Os tetos contam a estimativa do INFRO para o custo do provedor, não a fatura do seu provedor, então mantenha também um limite de gastos no provedor.

O INFRO armazena as minhas chaves de API de provedor e como elas são protegidas?

Sim: você conecta as suas próprias chaves de provedor uma vez e o INFRO as usa para atender as suas requisições. Cada uma é criptografada com AES-256-GCM sob uma chave mantida como segredo do Worker fora do banco de dados, com a organização e a conexão vinculadas, de modo que uma cópia do banco de dados sozinha não abre nada. Nenhuma tela do console, endpoint ou exportação devolve uma credencial salva; o console mostra os últimos quatro caracteres. As chaves de gateway são armazenadas apenas como digest SHA-256.

Uma chave de provedor roubada pode contornar o INFRO?

Sim. O INFRO governa apenas o tráfego que passa por ele. Uma chave de provedor tirada de qualquer lugar, inclusive do INFRO, pode ser usada diretamente contra o provedor, fora de todos os limites do INFRO. Conecte chaves com escopo no próprio projeto ou workspace, com um limite de gastos definido no provedor: esse limite vale mesmo que nós falhemos. No plano Business, a reconciliação com acesso ao uso ativado informa o uso de uma chave conectada que não passou pelo INFRO.

O que aconteceu nas violações da OpenCode e da Railway?

A OpenCode disse em 17 de outubro de 2026 que uma violação relacionada a um ataque de destilação em larga escala afetou 1,4% dos usuários do Console dela, aqueles com provedores de IA externos vinculados, e que chaves de provedor salvas em um workspace podem ter sido expostas. A Railway disse em 21 de outubro de 2026 que uma parte não autorizada pode ter acessado variáveis de ambiente criptografadas de clientes e decifrado algumas delas, em ataques voltados a comprometer provedores de inferência de IA. Nos dois casos o conselho é o mesmo: substitua a chave, exclua a antiga no provedor e revise o uso dela. O INFRO tem uma análise de cada caso, escrita apenas a partir das declarações das próprias empresas.

O INFRO consegue impedir que chaves de API sejam coladas em prompts?

No plano Business, os guardrails verificam prompts e respostas em busca de formatos OpenAI, Anthropic, Chave de API do Google, ID de chave de acesso da AWS, Token do GitHub, Token do Slack, Chave live do Stripe e Chave do INFRO, JWTs e chaves privadas PEM e bloqueiam a requisição, substituem o trecho por [SECRET] ou a sinalizam antes que o seu provedor a veja. A detecção é por padrões: ela não percebe formatos que não conhece, como chaves secretas de acesso da AWS e senhas.

O Claude Code e o Codex precisam da minha chave da Anthropic ou da OpenAI?

Não pelo INFRO. Eles chamam /v1/messages e /v1/responses do INFRO com uma chave de gateway, de modo que cada desenvolvedor ou agente pode ter a própria chave com limite de gastos, expiração e, opcionalmente, uma lista de redes permitidas, e revogá-la não afeta o acesso de mais ninguém. Um agente ainda pode ler qualquer chave deixada no mesmo shell, então remova chaves de provedor brutas dos ambientes de desenvolvimento.

O que é LLMjacking?

LLMjacking é o uso de credenciais roubadas de nuvem ou de APIs de IA para chamar modelos de linguagem hospedados às custas da vítima, seja para uso do próprio atacante, seja para revender o acesso. A defesa é a de qualquer credencial que pode gastar dinheiro: manter chaves de provedor fora do código e de apps cliente, dar a cada chave um limite de gastos, acompanhar o uso por chave e poder desligar uma chave sem fazer deploy.

Quais planos do INFRO incluem estes controles?

Todos os planos incluem desligar uma chave, redes permitidas, limites de modelos e provedores, limites de gastos, rotação e expiração, login em dois fatores e passkeys e o log de auditoria. Os alertas de gastos vão por e-mail em todos os planos e, a partir do plano Startup, para o Slack e para webhooks assinados. Guardrails, SSO e SCIM, reconciliação de custos com detecção de bypass e o gateway MCP estão no plano Business.

Conformidade, a lista completa de controles e o que ainda não está implementado estão no Trust Center. Encontrou uma vulnerabilidade? Escreva para security@infro.io.

Começar

Faça da próxima chave vazada um problema delimitado.

Seus provedores, seus contratos, suas chaves, selados em um só lugar. Cada chave que você distribui, limitada e com botão de desligar. 0% de margem sobre os gastos com modelos.