Insights

Cripto e Hacking — Pesadelos Black Hat

Incidentes de black-hat em cripto — pontes, chaves, engenharia social e exploits de governança — e as defesas lentas e caras que equipes sérias adotam.

Publicado Equipe Netts 15 min de leitura

Também disponível em: EnglishРусскийEspañol中文ไทยFrançaisУкраїнськаTürkçeहिंदीفارسیالعربيةHausaTiếng Việt한국어日本語Bahasa IndonesiaDeutschTagalog

Cripto e Hacking — Pesadelos Black Hat
Conteúdo
  1. Onde se originam os exploits de contratos inteligentes
  2. Consequências e o Hard Fork
  3. A Era da Lógica Não Inicializada e dos Delegate Calls
  4. Congelamento de Carteiras Multi-Sig
  5. Miragem Criptográfica de Pontes Cross-Chain
  6. O Exploit da Bridge Nomad
  7. Bugs de Compilador e Manipulação de Mercado
  8. Uma Luta Contínua entre Código e Consequência

O setor de cripto é frequentemente retratado como um castelo de criptografia, consenso descentralizado e registros imutáveis. Mas a verdade sobre essa terra prometida digital é muito mais complicada e perigosa. A mídia convencional geralmente fala sobre ataques ao espaço cripto por meio de engenharia social ou campanhas de phishing, ou simplesmente golpes em que alguém faz um usuário desavisado digitar um endereço de exchange ou sua chave privada em um site malicioso.

Mas este artigo ignorará inteiramente essas falhas baseadas no fator humano. Neste artigo, falaremos sobre hacking puro. Este é o território da cibersegurança vulnerável e do código profundamente falho que resulta em violações terríveis. Estes são os sonhos dos "black hats", onde o código é transformado em arma contra seus próprios criadores, drenando centenas de milhões de dólares em minutos sem disparar um único tiro; forçando-nos aos extremos da falibilidade lógica, bugs de compilador e negligência arquitetural.

Onde se originam os exploits de contratos inteligentes

O hacking puro de contratos inteligentes exige uma explicação inicial — um dos casos mais notórios na história das DeFi na época, que mudou o rumo da Ethereum para sempre. Nos primórdios das blockchains programáveis, existia um projeto chamado The DAO. O fundo pretendia ser uma espécie de fundo de capital de risco descentralizado, gerenciado totalmente por contratos inteligentes — sem humanos.

O contrato atraiu milhões de dólares em Ether de investidores que esperavam votar em propostas e ganhar recompensas. No entanto, os desenvolvedores não implementaram o processo de saque de forma segura, resultando em um bug chamado reentrância (reentrancy).

Reentrância — Um contrato inteligente chama um contrato externo, mas não atualiza seu estado interno. Por exemplo — na The DAO, a função de saque primeiro transferia os fundos solicitados para o usuário e só então atualizava o estado do usuário com o valor sacado.

Um hacker black hat percebe que também pode implantar um contrato inteligente malicioso com uma função de fallback.

A função de fallback era invocada sempre que a DAO enviava dinheiro para esse contrato malicioso. A função de fallback não apenas aceitava os fundos, mas chamava a função de saque da DAO novamente de imediato. Isso acionava a função de fallback mais uma vez, a qual a DAO executava, pois o saldo do hacker não havia sido atualizado anteriormente no momento do primeiro saque.

Repetidamente, esse processo se repetiu, extraindo milhões de dólares da DAO antes que a rede pudesse responder.

Consequências e o Hard Fork

As consequências deste ataque foram diferentes de tudo o que já tínhamos visto. A rede estava em perigo de colapsar; e uma grande porcentagem de todo o Ether existente foi roubada. Isso criou uma crise existencial e técnica para a comunidade, o que acabou resultando na implementação de um hard fork para reverter o histórico da blockchain e devolver os fundos.

Essa decisão controversa causou um cisma permanente, levando à divisão entre Ethereum e Ethereum Classic. Esta vulnerabilidade específica é hoje bem conhecida e majoritariamente mitigada com o uso do padrão Checks-Effects-Interactions.

Este padrão estabelece que um contrato deve primeiro validar todas as condições, só então poderá atualizar seu estado interno, e deve chamar contratos externos apenas no estágio final.

No entanto, embora a reentrância básica seja agora facilmente detectada por ferramentas de auditoria automatizadas, ataques sutis de reentrância entre contratos (cross-contract) ainda podem ocorrer em ocasiões de nicho muito particulares, mostrando que mesmo conceitos consolidados podem se metamorfosear em novos ataques.

A Era da Lógica Não Inicializada e dos Delegate Calls

As lições aprendidas com o The DAO foram rapidamente absorvidas pela comunidade de desenvolvedores, que desde então desenvolveu sistemas com complexidade cada vez maior, vinculando-se a conceitos como contratos de biblioteca e padrões de proxy para economizar gás e fornecer um caminho mais fácil para a atualizabilidade. Dentro dessa complexidade surgiu um vetor adicional de hacking puro, sendo o exemplo mais notório as vulnerabilidades da Parity Multi-Sig Wallet.

O Parity é um cliente Ethereum amplamente utilizado e oferecia um contrato inteligente para uma carteira multiassinatura que tinha sua lógica central em um contrato de biblioteca central. Isso visava a eficiência de recursos, já que muitas carteiras poderiam apontar para a mesma biblioteca em vez de implantar o mesmo código várias vezes.

A classe da vulnerabilidade deveu-se à má compreensão da função delegatecall e de variáveis de estado não inicializadas. A função delegatecall permite que um contrato execute uma função de outro contrato, mas concede a essa função acesso ao armazenamento (storage) do contrato chamador. Dentro do contrato de biblioteca do Parity, havia uma função para inicializar os proprietários da carteira.

Mas o próprio contrato de biblioteca nunca foi, de fato, inicializado." Um hacker descobriu que poderia chamar a função de inicialização diretamente no contrato da biblioteca e reivindicar a propriedade da biblioteca. Após obter a propriedade da biblioteca, ele invocou uma função para autodestruí-la.

Congelamento de Carteiras Multi-Sig

As carteiras multi-sig que dependiam dessa biblioteca tornaram-se imediatamente disfuncionais quando a biblioteca foi destruída. Toda a lógica necessária para processar uma transação, permitir que alguém sacasse dinheiro ou até mesmo apenas consultar o saldo, foi simplesmente perdida. Ao longo desse processo, devido a um erro puramente arquitetural, centenas de milhões de dólares em Ether não foram roubados, mas sim fisicamente congelados.

Isso trouxe à tona o perigo extremo de contratos de lógica não inicializados e os riscos sutis associados às funções delegatecall — um conjunto de riscos que parece ser de conhecimento comum hoje, mas que não eram tão bem compreendidos na época. Para corrigir isso, os desenvolvedores agora dependem de modificadores de inicialização especiais que garantem que um contrato só possa ser inicializado uma vez, e frequentemente inserem valores fictícios (dummy values) no estado do contrato de lógica do implantador para que ninguém possa reivindicar o pagamento.

Embora a mesma situação exata seja improvável hoje, o risco geral de má gestão de um padrão de proxy ainda é algo que deve ser considerado cuidadosamente em qualquer arquitetura de finanças descentralizadas decente.

Miragem Criptográfica de Pontes Cross-Chain

Com a expansão do ecossistema cripto para mais de uma blockchain, houve uma demanda por interoperabilidade, que se manifestou nos diferentes tipos de pontes cross-chain. Esses protocolos permitem que ativos sejam bloqueados em uma rede e que sua representação seja cunhada na outra rede." Devido ao enorme volume de ativos mantidos por elas, eram honeypots dos sonhos para hackers black hat.

O exploit da ponte Wormhole é um lembrete verdadeiramente aterrador de como um pequeno detalhe omitido na implementação pode fazer com que uma verificação criptográfica complexa simplesmente falhe. A Wormhole permitia a transferência de ativos entre as redes Solana e Ethereum. Isso envolvia um grupo de guardiões monitorando um evento em uma rede e assinando uma mensagem para comprová-lo. Essas assinaturas seriam então verificadas pela rede de destino antes da emissão dos referidos tokens como novos.

A vulnerabilidade estava na verificação de assinatura no contrato inteligente da Solana. A verificação criptográfica era realizada por um programa nativo da Solana chamado pelo contrato. No entanto, os desenvolvedores da Wormhole não verificaram se o programa que estava sendo chamado era o programa real do sistema. O hacker também criou um programa que sempre retornava uma mensagem de sucesso, independentemente de qual fosse a entrada.

Em seguida, o contrato da Wormhole foi instruído a usar esse aplicativo falso para validação. Sob a falsa suposição de que as assinaturas eram de fato válidas, o contrato prosseguiu e emitiu centenas de milhões de dólares em wrapped Ethereum na rede Solana, sem que nenhum Ethereum estivesse realmente bloqueado do outro lado. O hacker então converteu esses tokens recém-emitidos e sem lastro de volta para a rede Ethereum, esvaziando o protocolo de seus ativos reais.

Foi uma execução limpa e altamente técnica contra o modelo de validação de contas da Solana. Isso foi corrigido com uma validação mais rigorosa para verificar se o shell de verificação é, de fato, o endereço oficial do sistema definido de forma fixa (hardcoded).

As repercussões foram enormes, exigindo um resgate financeiro por parte dos apoiadores do projeto para evitar um colapso sistêmico do ecossistema DeFi da Solana.

Tal vulnerabilidade poderia ocorrer novamente no futuro devido às características únicas do paradigma de desenvolvimento de contratos inteligentes, especialmente em ambientes fortemente baseados em modelos de conta como a Solana, caso os desenvolvedores não realizem uma validação e verificação rigorosas de contas e programas para cada entidade externa invocada em seus contratos inteligentes.

O Exploit da Bridge Nomad

Enquanto o Wormhole foi um ataque coordenado em uma direção específica, o exploit da bridge Nomad provou como é fácil para uma simples falha de lógica deixar um protocolo mergulhado no caos, como um vale-tudo generalizado. Para implementar essa comunicação cross-chain, a Nomad utilizou um modelo de optimistic rollup que dependia de uma árvore de Merkle para demonstrar que a mensagem era válida. Os desenvolvedores cometeram um erro crucial na inicialização da raiz de confiança (trusted root) ao implementar uma atualização no protocolo.

Isso aconteceu porque eles definiram a raiz de confiança como um hash zero — o valor padrão para uma variável não inicializada em Solidity. Isso fez com que qualquer mensagem que não fosse explicitamente validada retornasse a um hash zero, que passou a ser considerado uma raiz de confiança válida pelo contrato. Essencialmente, um hacker percebeu que poderia criar uma transação solicitando ao contrato o saque de fundos e, como a prova resultava no hash zero, o contrato sempre a aceitava.

Este ataque foi único devido à sua simplicidade e ao caos generalizado que se seguiu. Após o hacker inicial realizar o exploit, outros usuários entraram na onda. Nenhuma habilidade técnica de hacking foi necessária; tratava-se apenas de copiar e colar as informações da transação do hacker, alterar o endereço de destino para o seu próprio e enviá-la para a rede."

Centenas de atores diferentes drenaram quase duzentos milhões de dólares da ponte Nomad em questão de horas.

Foi uma falha de cibersegurança clássica: uma linha de código de inicialização mal configurada que contornou todo o sistema de segurança criptográfica. Isso foi mitigado corrigindo a lógica de inicialização da raiz zero e rejeitando-a explicitamente como uma raiz válida. Os usuários da ponte pagaram o preço, e isso serviu como um duro lembrete de que, ao desenvolver contratos inteligentes, um caractere ausente ou um valor padrão equivocado pode efetivamente comprometer um protocolo inteiro.

Este bug em particular é extremamente simples de evitar com testes diligentes, mas a classe mais ampla de erros de inicialização ainda assola ativamente os sistemas.

Bugs de Compilador e Manipulação de Mercado

Um dos tipos mais aterradores de hack puro é aquele em que a falha não está no código do desenvolvedor, mas nas ferramentas usadas para compilá-lo. Fomos lembrados disso durante o exploit da Curve Finance, que abalou as estruturas das DeFi. Uma DEX líder para stablecoins, grande parte dos contratos principais da Curve foi escrita em Vyper, uma linguagem de contratos inteligentes pythônica que enfatiza segurança e simplicidade.

Felizmente, os desenvolvedores da Curve haviam implementado proteções contra reentrada em seus contratos inteligentes, defendendo-os contra esse exato tipo de ataque que havia devastado a The DAO. Mas, em uma versão antiga específica do compilador Vyper, esse bug estava enterrado.

O compilador traduziu com sucesso o código Vyper legível por humanos em um bytecode legível por máquina a ser implementado na Ethereum Virtual Machine, mas não realizou um bom trabalho ao distribuir a trava de reentrada (reentrancy lock) por múltiplas funções.

O código era seguro, os desenvolvedores o escreveram exatamente como deveriam, mas o compilador acabou os "apunhalando pelas costas", produzindo um bytecode com vulnerabilidades. Isso significa que um hacker black hat percebeu e entendeu que algumas das pools de liquidez da Curve eram suscetíveis à reentrada entre funções (cross-function reentrancy). Eles se aproveitaram disso para retirar dezenas de milhões de dólares das pools.

Este ataque foi especialmente insidioso porque não haveria como detectá-lo por meio de uma auditoria tradicional de código-fonte; o código-fonte estava correto. A vulnerabilidade estava presente apenas no bytecode compilado. Esse evento forçou toda a indústria a reconsiderar sua confiança em compiladores e infraestrutura. O problema foi resolvido com a atualização do compilador Vyper e a migração das pools vulneráveis para novos contratos compilados de forma segura.

O resultado foi uma grande crise de confiança e o reconhecimento de que a segurança deve abranger toda a pilha tecnológica. Bugs de compilador são raros, é claro, mas também quase impossíveis de prever, portanto, um pesadelo desse tipo em nível de infraestrutura poderia facilmente ocorrer novamente.

Flash loans — uma nova categoria de instrumento financeiro que surgiu com o desenvolvimento das finanças descentralizadas — transformaram fundamentalmente a natureza do hacking puro. Os flash loans permitem que um usuário tome emprestada uma quantidade quase ilimitada de criptoativos sem colateral, desde que o empréstimo seja pago antes que a mesma transação seja concluída. Caso o dinheiro não seja liquidado, toda a transação é revertida — como se nem tivesse ocorrido.

Os flash loans, geralmente destinados a arbitragem ou liquidações, forneceram aos hackers black hat a liquidez necessária para explorar falhas lógicas profundas na mecânica do mercado. Usando o hack da Euler Finance como estudo de caso, a Euler era um protocolo de empréstimo para a realização de depósitos e lucros. Os usuários também podiam doar seus ativos depositados para as reservas do protocolo, uma função chamada donateToReserves no protocolo.

Mas os desenvolvedores deixaram passar uma verificação de integridade (health check) muito importante nessa função específica. Eles também não verificaram se a conta da qual o doador retirou o dinheiro permaneceria em equilíbrio após a doação. O invasor tomou uma grande quantidade de ativos via flash loan e os depositou na Euler. Em seguida, chamou a função donateToReserves para doar parte do seu depósito.

Sem a verificação de integridade, o protocolo aprovou a doação, levando a conta do hacker a um estado de insolvência altamente artificial. O hacker, subsequentemente, realizou uma liquidação de sua própria conta. No entanto, a matemática por trás dos bônus de liquidação da Euler é complexa e o flash loan era imensamente grande, de modo que o liquidador acabou capturando mais valor do protocolo do que estava depositando.

Eles devolveram o flash loan e fugiram com aproximadamente duzentos milhões de dólares. Não foi uma falha criptográfica ou um bug de compilador, mas sim uma falha pura de lógica financeira no código. Neste caso, os desenvolvedores simplesmente esqueceram de inserir uma única linha de código que verificasse a integridade da conta após determinada ação. A correção consistiu em implementar a verificação de integridade adequada e reformular completamente a lógica de gerenciamento de risco do protocolo.

Isso teve repercussões graves, interrompendo o protocolo e levando meses de negociação para recuperar parte do capital." Tais exploits lógicos, nos quais mecanismos financeiros complexos reagem entre si de formas imprevistas, representam a forma mais prevalente e perigosa de hacking puro na atualidade. A complexidade do protocolo aumentará, e é virtualmente certo que esse tipo de falha lógica voltará a se repetir.

Uma Luta Contínua entre Código e Consequência

Se você analisar os eventos históricos dessas violações gigantescas, verá facilmente um padrão. Essas vulnerabilidades raramente são o resultado de uma falha nos mecanismos de consenso subjacentes da blockchain. Não, elas são falhas da lógica humana codificada em um código imutável. Independentemente de ser uma atualização de estado que deu errado, um caminho de código não escrito para um proxy, uma verificação criptográfica ignorada, um erro de compilador ou uma verificação de invariância financeira inexistente, o problema subjacente é sempre, antes de tudo, um erro no design do contrato inteligente.

Para eliminar esses riscos, a indústria possui um sistema de defesa minucioso. Estes incluem:

1. Auditorias de código humanas por terceiros realizadas por empresas de segurança independentes. 2. Ferramentas de verificação formal que provam matematicamente que o código funciona exatamente como planejado. 3. Bug bounties de valores elevados que pagam hackers white hat para encontrar defeitos antes que os mal-intencionados o façam. 4. Uso de travas de liberação temporal (time locks) e controles de chaves de administração multi-sig para retardar a implementação de uma atualização maliciosa. 5. Uso de protocolos de seguros descentralizados para fornecer cobertura caso ocorra uma violação.

No entanto, o hacking black hat ainda existe, mesmo que essas medidas defensivas tenham se tornado mais sofisticadas. O ponto de partida do desenvolvimento de software é que a complexidade cria oportunidades para falhas." A crescente complexidade das finanças descentralizadas, com desenvolvedores criando protocolos complexos que integram dezenas de outros contratos inteligentes e funcionam em múltiplas blockchains, cria novos e inéditos caminhos para ataques.

Como os atacantes são limitados apenas pela sua própria imaginação, eles só precisam encontrar um vetor que funcione para ter sucesso; a defesa está sempre reagindo e eternamente atrasada. Esta será uma luta perene e eterna, onde os construtores do futuro descentralizado duelam com seus exploradores. Os pesadelos de hacking total continuarão a sofrer mutações como um lembrete constante: em um mundo onde o código é a lei, um erro de digitação pode levar tudo embora.

Com cada linha de código valendo literalmente centenas de milhares de dólares, tão importante quanto a segurança é a eficiência e a precisão nas operações do dia a dia para garantir o mais alto nível de desempenho. Os usuários são regularmente sobrecarregados com o atrito dos custos de rede ao gerenciar ativos digitais, especialmente stablecoins. Agora, sempre que você envia USDT, se for algo que você faz com frequência para transferir capital, sabe que o custo dessa transação de USDT pode variar bastante, a ponto de prejudicar o seu capital.

Como um participante ativo no ecossistema, encontrar um método de transferência barato para USDT é crucial. É aqui que ferramentas específicas oferecem vantagens. O serviço netts: Calculadora de Transferência de USDT foi criado para impulsionar exatamente essas aplicações. Quando você transfere Tether na rede TRON, isso consome Energia e Largura de Banda da sua conta; se você não possuir nenhuma delas, a rede queimará seus TRX com base nas taxas de USDT.

O estimador Netts, que calcula antecipadamente a Energia e a Largura de Banda exatas necessárias, significa que os usuários podem economizar massivamente ao alugar energia em vez de queimar TRX, mantendo a gestão de seus ativos o mais eficiente possível em um cenário onde cada fração de um token conta.

compartilhar X Telegram LinkedIn Reddit

Próximo passo