Incidente de US$ 6,3 bilhões da Binance: o que aconteceu e como reduzir o risco

Crescimento de Produto no Semaphore UI
12 min de leitura

Um computador de funcionário comprometido pode colocar muito mais do que arquivos locais em risco. Examinamos o ataque à Binance e mostramos como a automação controlada com Semaphore UI pode limitar o que um invasor consegue alcançar, alterar e continuar usando.

Converse sobre este artigo com IA

Visão geral

Em 29 de outubro de 2026, os invasores alcançaram os sistemas de assinatura de carteiras da Binance. Em seu relatório preliminar de 3 de novembro, a Binance estimou os ativos afetados em aproximadamente US$ 6,34 bilhões, dos quais US$ 2,85 bilhões foram congelados ou interceptados. A invasão começou nos computadores de funcionários.

Esse ponto de partida é conhecido muito além das criptomoedas. Uma estação de trabalho comprometida pode expor credenciais de produção, direitos de implantação e ferramentas internas que abrem caminho até os dispositivos de outros funcionários. O desafio de engenharia é impedir que essas permissões transformem uma conta comprometida no controle de um serviço crítico.

Como o ataque se desenrolou

As conclusões preliminares da Binance descrevem o comprometimento de funcionários em junho e setembro, seguido por uma invasão mais ampla por meio de ferramentas internas de IA em 20 de outubro. Os invasores acessaram os computadores de dois colegas e encontraram um token para implantar contêineres. Em 29 de outubro, usaram esse token para implantar código malicioso que alcançou os sistemas de assinatura de carteiras e iniciou transferências não autorizadas.

  1. Instalador do Homebrew adulterado

    A Binance substituiu o dispositivo e rotacionou as credenciais. O invasor havia descoberto a função do engenheiro e seus colegas.

  2. Tarefa de entrevista maliciosa

    Um repositório malicioso deu aos invasores um ponto de entrada no computador de outro funcionário.

  3. Token de implantação obtido

    Ferramentas internas de IA ajudaram os invasores a alcançar colegas e encontrar o token.

  4. 17:15–19:56 UTC

    Contêiner malicioso implantado

    O token de implantação roubado permitiu que código malicioso alcançasse os sistemas de assinatura de carteiras.

  5. 20:05–20:09 UTC

    Início das transferências não autorizadas

  6. 23:56 UTC

    Última transferência não autorizada confirmada

  7. 00:10 UTC

    Delegação Ethereum revogada

    A permissão na blockchain exigiu uma revogação própria.

Cronologia do incidente da Binance, 2026. Todos os horários estão em UTC.

Os invasores também usaram o serviço de assinatura para criar uma delegação EIP-7702: uma permissão para que código sob seu controle agisse em nome de uma carteira Ethereum. Essa permissão existia na blockchain, independentemente dos sistemas de saque da Binance. Suspender os saques não a removia. A Binance precisou de uma revogação separada na própria blockchain.

A distinção importante é entre interromper uma atividade e remover a autoridade que a permite. Substituir um dispositivo, revogar uma credencial de implantação e cancelar uma permissão em outro sistema tratam de partes diferentes de uma invasão.

O que o incidente revela sobre a segurança de produção

Um notebook, um sistema de implantação e um serviço sensível têm funções diferentes. O risco aumenta quando o acesso a um abre automaticamente o seguinte. Um token roubado pode permitir que um invasor substitua software. Esse software pode então agir com permissões que o funcionário nunca teve diretamente.

Quatro perguntas ajudam a identificar onde interromper essa progressão:

  1. Exposição de credenciais. Que acesso à produção um invasor pode obter a partir do dispositivo de um funcionário?
  2. Privilégios de implantação. Quem pode alterar o código executado com esse acesso?
  3. Autorização do serviço. Quais ações um serviço sensível aceitará desse código?
  4. Acesso persistente. Quais novas permissões podem permanecer depois que a conta original for desativada?

O objetivo é limitar como a autoridade passa entre sistemas e identificar e revogar qualquer acesso adicional criado durante uma invasão. As próximas seções examinam quatro controles que apoiam esse objetivo.

Notebook comprometido

O invasor controla o dispositivo

1Limitar credenciais
Token de implantação
Sistema de implantação

Aceita uma alteração de software

2Proteger alterações
Código malicioso
Carga de trabalho em execução

O código herda suas permissões

Identidade de serviço
Serviço sensível

Atende a solicitações privilegiadas

3Autorizar solicitações
4
Contenção e revogação

Identifique e revogue novas credenciais e permissões em todos os sistemas afetados.

Um token roubado pode autorizar novo código, que então usa as permissões da carga de trabalho. Os controles 1–3 limitam esse caminho. O controle 4 trata do acesso criado em qualquer ponto durante a invasão.

Controle 1. Reduza as credenciais que um notebook pode expor

Uma credencial é útil para um invasor porque outro sistema a aceita como prova de autoridade. Manter menos credenciais de produção nos dispositivos dos funcionários reduz o que pode ser roubado quando uma ferramenta, um repositório ou uma sessão do navegador é comprometido.

No trabalho de rotina, um funcionário muitas vezes precisa de permissão para solicitar uma operação, como reiniciar um serviço. A credencial que a executa pode ficar com uma identidade de execução separada. Reduzir a exposição envolve remover cópias desnecessárias e gerenciar as credenciais que permanecem:

  • Substitua o acesso direto de rotina por operações bem delimitadas sempre que possível.
  • Use identidades separadas para responsabilidades diferentes e limite seu escopo e sua duração.
  • Mantenha um inventário de credenciais, de seus responsáveis e de como revogá-las.

Isso aplica o princípio das orientações da OWASP para gerenciamento de segredos: reduza o manuseio humano de segredos e conceda apenas o acesso necessário a cada identidade. Assim, uma estação de trabalho roubada expõe menos credenciais reutilizáveis, e a equipe de resposta sabe quem é responsável pelas que ainda precisam ser revogadas.

Controle 2. Trate os direitos de implantação como privilégios de produção

Um segredo pode estar oculto para uma pessoa, mas disponível para o código que ela implanta. Quem pode alterar esse código talvez consiga ler o segredo, chamar uma API interna ou agir como a conta de serviço da aplicação. Por isso, o acesso de implantação deve ser avaliado de acordo com as permissões da carga de trabalho resultante.

As orientações da OWASP para segurança de CI/CD tratam alterações de repositório, configuração de pipelines e hosts de execução como partes do mesmo problema de segurança. A proteção precisa abranger o código antes da implantação e suas permissões depois dela:

  • Exija revisão do código de produção e proteja a branch do repositório executada pela automação.
  • Controle alterações nas definições de tarefas, nas dependências e nas entradas fornecidas na execução, além do script principal.
  • Conceda às cargas de trabalho apenas as credenciais e o acesso à rede necessários à sua função.

Dois conjuntos de controles precisam funcionar juntos. As permissões de repositório e de implantação determinam quem pode alterar o código. Políticas separadas de identidade, host e rede limitam o que esse código pode fazer ao ser executado. O armazenamento central de segredos reduz a exposição, enquanto essas políticas restringem o programa que usa o segredo.

Controle 3. Autorize a operação, não apenas o chamador

Um serviço de assinatura pode manter sua chave privada oculta e ainda aceitar uma solicitação de assinatura prejudicial. A mesma distinção vale para um banco de dados ou uma API de nuvem: autenticar uma carga de trabalho identifica o chamador, enquanto a autorização decide o que ele pode fazer.

A OWASP recomenda verificar a autorização em cada solicitação e negar o acesso quando ele não for explicitamente permitido. No serviço que recebe a solicitação, isso significa verificar a ação e seu destino: destinatários e valores de pagamento permitidos, operações de banco de dados ou alterações de infraestrutura.

O resultado deve ser um serviço que avalia a ação solicitada mesmo quando o chamador já é confiável. A automação controla como o trabalho é solicitado. O serviço de destino controla quais operações aceitará.

Controle 4. Revogue o acesso criado durante a invasão

Um invasor pode usar uma identidade legítima para adicionar outra credencial ou conceder novas permissões. O MITRE ATT&CK documenta a manipulação de contas como forma de manter ou ampliar o acesso, inclusive adicionando credenciais de nuvem e chaves SSH. Desativar a sessão original não remove necessariamente essas alterações.

A delegação na blockchain da Binance mostra por que a equipe de resposta precisa inspecionar as permissões no próprio sistema afetado. A contenção deve abranger o ponto de entrada inicial e a autoridade criada por meio dele:

  • Limite quais identidades de automação podem criar outras credenciais ou conceder permissões.
  • Inclua contas, sessões e delegações recém-criadas no plano de resposta.
  • Verifique a revogação no sistema que aplica a permissão, em vez de considerar uma tarefa interrompida como prova de contenção.

Essas etapas dão à equipe de resposta um conjunto definido de identidades e permissões para investigar e revogar. Também tornam a contenção verificável: a equipe pode conferir se cada caminho conhecido até o serviço afetado foi realmente fechado.

Esses controles atuam em camadas diferentes: o dispositivo do funcionário, o sistema de implantação, o serviço de destino e o processo de resposta. Cada camada precisa de um responsável e de uma forma de verificar se suas restrições continuam válidas quando outra camada é comprometida.

Como a automação controlada ajuda

As plataformas de gerenciamento de automação tratam da parte desse problema entre a solicitação de um funcionário e a execução em produção. No Semaphore UI, a equipe pode preparar uma tarefa definida, controlar quem pode executá-la ou alterá-la e executá-la com uma identidade separada. A autorização dentro do serviço de destino e a revogação de permissões criadas em outros locais continuam sendo responsabilidade desses sistemas e da equipe de resposta.

Considere um engenheiro de plantão que precisa reiniciar um serviço de API. Um mantenedor prepara um playbook e um Task Template que fixam os hosts de destino e como o reinício será feito. O engenheiro inicia a tarefa e lê o resultado, sem abrir uma sessão SSH em produção. Os dois caminhos abaixo fazem o mesmo reinício, mas deixam a credencial de execução em mãos diferentes.

Acesso direto

Notebook do funcionário Armazena a chave de produção
Acesso SSH direto
Host de produção

O serviço reinicia

Um notebook comprometido pode expor a credencial reutilizável de produção.

Pelo Semaphore UI

Notebook do funcionário

Permissão para executar a tarefa salva

Solicitar tarefa
Limite de execução Servidor ou runner do Semaphore Usa uma chave com escopo limitadoKey Store ou armazenamento externo de segredos
Executar operação
Host de produção

O serviço reinicia

Nesta configuração, a chave de execução fica fora do dispositivo do funcionário. Uma sessão roubada ainda pode executar as tarefas permitidas.

Um reinício, dois modelos de acesso: credenciais diretas de produção ou permissão para executar uma tarefa controlada.

Construir o fluxo de reinício exige quatro etapas conectadas: criar uma identidade de execução restrita, definir o que os usuários podem executar ou alterar, escolher o ambiente de execução e tornar o resultado visível. Depois dessas etapas, a mesma abordagem pode ser estendida às implantações.

Etapa 1. Crie uma identidade de execução restrita

Comece pelos hosts de destino. Crie uma conta de automação cujo acesso privilegiado se limite a reiniciar o serviço de API. Ela não deve poder editar a definição do serviço nem executar comandos privilegiados sem relação com essa operação. Use uma credencial separada e somente de leitura para obter o repositório do playbook. Essas restrições determinam o que a automação pode fazer mesmo se sua credencial for usada indevidamente.

No Key Store do projeto, cadastre a credencial SSH e selecione-a no inventário de produção que lista os hosts de destino. Escolha o armazenamento no banco de dados local ou uma referência a um arquivo protegido no servidor ou a uma variável de ambiente. Para o armazenamento local, configure chaves de criptografia e proteja esse material separadamente dos backups do banco de dados.

Se a equipe já usa um armazenamento de segredos compatível, como OpenBao no Pro ou AWS Secrets Manager no Enterprise, cadastre-o em Key Store → Storages e referencie o segredo existente ao criar a chave. Restrinja a integração aos segredos necessários a esse fluxo. O operador poderá então solicitar o reinício sem obter sua credencial de execução.

Etapa 2. Defina o que o operador pode executar ou alterar

Em seguida, salve um template “Restart API” com o playbook revisado, o inventário de produção e as variáveis necessárias. Deixe as alterações nesses recursos sob o controle dos mantenedores. Para os operadores, selecione uma função de projeto que permita executar sem editar: a função integrada Task Runner pode executar todos os templates desse projeto, portanto todos eles devem ser adequados ao grupo.

Para dar acesso a templates específicos, use funções personalizadas e permissões de templates do Enterprise com uma função base que ainda não conceda execução em todo o projeto. Essas concessões são cumulativas, portanto atribuir uma função personalizada restrita não cancela permissões mais amplas que o usuário já possui.

Isso torna a distinção aplicável: os operadores podem solicitar um reinício preparado, enquanto os mantenedores controlam o código, os destinos e as credenciais por trás dele. Teste as permissões combinadas com uma conta de operador antes de conceder acesso à produção.

Etapa 3. Execute em um runner restrito

Instale um runner remoto em um host dedicado que alcance os servidores da API. Quando o operador inicia “Restart API”, o runner executa o playbook e devolve a saída ao Semaphore. Os funcionários precisam de acesso ao Semaphore, enquanto as regras de firewall podem restringir a conexão de gerenciamento de produção ao runner.

Conceda a esse host de execução apenas o acesso necessário às tarefas atribuídas:

  • Separe a execução de produção de cargas de trabalho menos confiáveis e de ambientes de desenvolvimento.
  • Limite os privilégios do runner no sistema operacional, as conexões de saída e as credenciais montadas. Proteja seu token de autenticação e use HTTPS com verificação de certificado para conectar ao Semaphore.
  • Use tags de runners no Pro, como production, para direcionar o template aos runners pretendidos. Aplique as restrições de rede nesses hosts.

Isso restringe onde as credenciais de produção podem ser usadas e quais sistemas a tarefa pode alcançar. Um runner não é uma sandbox automática: suas tarefas podem usar os arquivos, as credenciais e a rede disponíveis ao processo. Separe a execução de produção de tarefas não confiáveis e reforce a segurança e aplique atualizações no runner e no servidor Semaphore.

Etapa 4. Revise a execução e torne o uso indevido visível

Depois do reinício, o operador abre o resultado da tarefa para inspecionar seu status, a saída e a revisão do repositório. Inclua uma verificação de integridade do serviço no playbook para que o resultado mostre se a API se recuperou, e não apenas se o comando de reinício terminou com sucesso. Mantenha segredos fora dessa saída.

Configure notificações de resultados de tarefas para um canal acompanhado pela equipe de plantão e defina quem investiga execuções inesperadas. Uma tarefa bem-sucedida ainda pode ser uma atividade não autorizada. Durante uma investigação, correlacione o registro de execução com os logs do host, do provedor de identidade e do armazenamento de segredos para entender como o acesso foi obtido e usado.

A equipe agora tem um registro compartilhado da operação solicitada e de seu resultado. Isso facilita a investigação de atividades incomuns, desde que alguém acompanhe esse registro e tenha um procedimento claro de resposta.

Aplicando os mesmos controles às implantações

Uma implantação usa o mesmo modelo de acesso, mas também instala software. Crie um template separado “Deploy API” com uma identidade de implantação cujas permissões se limitem a essa aplicação. Sua configuração precisa restringir tanto o código que executa a implantação quanto a versão que ele instala:

  • Fixe o código de implantação e o destino. Use deploy_api.yml de uma branch main protegida e o inventário production-api. Desative as opções de branch, inventário e argumentos de CLI fornecidas na execução.
  • Mantenha as alterações com os mantenedores. Os operadores podem iniciar o template, enquanto os mantenedores controlam seu código, suas credenciais e sua configuração.
  • Valide a seleção da versão no playbook. Verifique cada variável fornecida na execução que possa influenciar a versão. Resolva um identificador de versão permitido para um artefato imutável do processo de build confiável e verifique sua origem e integridade antes da implantação. Rejeite referências arbitrárias de imagens ou entradas não reconhecidas.

Esses controles limitam o que uma sessão de operador roubada pode implantar. O Semaphore aplica o controle de acesso às tarefas. A revisão no Git e o playbook restringem o código e os artefatos. A permissão para alterar esse playbook continua sendo um privilégio de produção.

Quer a tarefa reinicie um serviço ou implante uma versão, o operador recebe o resultado sem receber a credencial de execução. A equipe pode então testar a distinção que importa: quais ações de produção continuam possíveis pela sessão desse operador?

O que uma sessão roubada ainda pode fazer

Uma sessão de operador roubada ainda pode solicitar as operações permitidas àquela conta. Até um reinício autorizado pode interromper um serviço se for acionado repetidamente. Teste o fluxo configurado com uma conta de operador realista em homologação, cobrindo tanto o que ela pode fazer quanto como a equipe responderia ao uso indevido:

  • Permissões de tarefas e entradas. Teste as funções e opções de execução reais, incluindo branches, inventários e argumentos alternativos.
  • Acesso além da operação pretendida. Verifique o acesso a outros templates, credenciais e sistemas de produção, incluindo o que o processo do runner pode alcançar.
  • Detecção e impacto operacional. Confirme quem recebe os resultados, quem investiga atividades inesperadas e se execuções repetidas podem causar interrupções inaceitáveis.
  • Revogação. Teste a revogação de sessões e tokens e identifique quaisquer permissões que a identidade de execução possa criar em outros locais.

Documente o acesso que a conta de teste mantém e feche qualquer caminho que exceda a finalidade da operação. Ao concluir o exercício, a equipe deve saber tanto o que uma sessão roubada poderia fazer quanto como detectar e conter esse uso indevido.

Segurança no trabalho diário

Os controles de acesso funcionam junto com a proteção de endpoints e uma equipe que sabe como responder. Torne o fluxo preparado conveniente o bastante para que as pessoas possam usá-lo sem recorrer a chaves compartilhadas e atalhos não documentados. Apoie-o com algumas práticas diárias:

  • Execute instaladores desconhecidos e tarefas de entrevistas em ambientes descartáveis e isolados, sem credenciais corporativas, diretórios do host montados ou acesso às redes internas.
  • Facilite a comunicação precoce de atividades suspeitas, sem culpabilização. Ofereça um contato claro e um caminho de resposta a incidentes.
  • Revise os acessos quando as responsabilidades mudarem, mantenha um procedimento controlado de acesso emergencial e ensaie a revogação antes de um incidente.

Essas práticas conectam prevenção, detecção e recuperação ao trabalho diário. Ajudam a manter o modelo de acesso correto conforme as responsabilidades mudam e dão à equipe uma resposta conhecida quando ocorre um evento suspeito.

Limite o alcance do próximo comprometimento

A principal lição é limitar quanta autoridade uma identidade comprometida pode acumular. Menos credenciais em notebooks, automação revisada, hosts de execução restritos e autorização dentro dos serviços de produção reduzem os caminhos que um invasor pode seguir.

O Semaphore incorpora vários desses controles em um fluxo repetível: tarefas preparadas, permissões separadas para executar e editar, credenciais fornecidas centralmente e registros de execução visíveis. Os operadores recebem as ações necessárias ao seu trabalho, enquanto os mantenedores mantêm o controle do código e das credenciais por trás delas.

Comece por uma operação de produção usada com frequência: prepare seu template de tarefa, atribua as permissões de operador necessárias e teste o acesso resultante antes de desativar a conexão direta que ele substitui. Uma medida útil de progresso é o pouco que um invasor consegue fazer com a próxima conta que comprometer.

Fontes

  1. Binance, “29 October 2026 Binance Security Incident: Initial Findings and Response Update”. URL: https://www.binance.com/en/blog/community/3229153443759566763 (acesso em: ).
  2. OWASP Foundation, “Secrets Management Cheat Sheet”. URL: https://cheatsheetseries.owasp.org/cheatsheets/Secrets_Management_Cheat_Sheet.html (acesso em: ).
  3. OWASP Foundation, “CI/CD Security Cheat Sheet”. URL: https://cheatsheetseries.owasp.org/cheatsheets/CI_CD_Security_Cheat_Sheet.html (acesso em: ).
  4. OWASP Foundation, “Authorization Cheat Sheet”. URL: https://cheatsheetseries.owasp.org/cheatsheets/Authorization_Cheat_Sheet.html (acesso em: ).
  5. MITRE ATT&CK, “Account Manipulation (T1098)”. URL: https://attack.mitre.org/techniques/T1098/ (acesso em: ).
  6. Semaphore UI, “Task Templates”. URL: https://semaphoreui.com/docs/user-guide/task-templates (acesso em: ).
  7. Semaphore UI, “Key Store”. URL: https://semaphoreui.com/docs/user-guide/key-store (acesso em: ).
  8. Semaphore UI, “Inventory”. URL: https://semaphoreui.com/docs/user-guide/inventory (acesso em: ).
  9. Semaphore UI, “Encryption Keys”. URL: https://semaphoreui.com/docs/admin-guide/security/encryption (acesso em: ).
  10. Semaphore UI, “AWS Secrets Manager secret storage”. URL: https://semaphoreui.com/docs/user-guide/key-store/aws-secrets-manager (acesso em: ).
  11. Semaphore UI, “Teams”. URL: https://semaphoreui.com/docs/user-guide/team (acesso em: ).
  12. Semaphore UI, “Runners”. URL: https://semaphoreui.com/docs/admin-guide/runners (acesso em: ).
  13. Semaphore UI, “Tasks”. URL: https://semaphoreui.com/docs/user-guide/tasks (acesso em: ).
  14. Semaphore UI, “Alerts”. URL: https://semaphoreui.com/docs/user-guide/alerts (acesso em: ).