Dois votos, milhões de USDT e uma pool quase vazia: desvendando o ataque ao X100

Dois votos, milhões de USDT e uma pool quase vazia: desvendando o ataque ao X100

Uma vantagem de 0.000001 tokens foi suficiente para conquistar dois assentos no senado do X100, após o que cerca de 4.85M USDT saiu da pool legítima.

31 de out. de 2026

Na primeira operação, a carteira iniciadora recebeu cerca de 4.75M USDT após quitar um flash loan, enquanto os depósitos usados para votação permaneceram bloqueados. Em 24 de outubro de 2026, USDT emprestado foi usado para comprar X tokens suficientes para conquistar dois dos três assentos no senado do X100. A maioria obtida aprovou imediatamente negociações da tesouraria por meio de liquidez controlada pelo contrato executor. A venda dos X tokens recebidos possibilitou quitar o empréstimo e pagar os fundos restantes. Nas três transações principais, cerca de 4.848M USDT foram pagos aos destinatários. Incluindo mais duas transações, a saída líquida de USDT da pool legítima chegou a cerca de 4.849M USDT.

O mecanismo central é confirmado por registros históricos de transações. O rastreamento abrange rotas individuais dos fundos recebidos até o ponto de corte indicado; o endereço final do serviço foi identificado por um rótulo no explorador da blockchain.

Primeira transação - uma participação emprestada dá controle do senado, acesso aos ativos da tesouraria e a capacidade de pagar ao destinatário. Visualização: CertiK
Primeira transação - uma participação emprestada dá controle do senado, acesso aos ativos da tesouraria e a capacidade de pagar ao destinatário. Visualização: CertiK

Endereços e suas funções

Todos os endereços abaixo estão na rede Ethereum. As funções descrevem o comportamento observado das contas, não a identidade das pessoas que as controlam.

EndereçoFunção estabelecida
0x100a2c7f45fd48e217fdce72e658dc78fd43a100O token X; seis casas decimais
0x79f35a33fe2813414851c4ae8daeacd14d822a46Freezer: mantém depósitos, poderes do senado e ativos da tesouraria
0xcd5762ac6013fa762782ac1797ab09152c1028e8Módulo DEX da tesouraria
0x0d85edd90c94053fc5997551b1baa8a77aa02fa0Pool legítima X/USDT
0x7ec2afdf3ec5964899894f8d58afa95cbb8ffd63Remetente da primeira transação e destinatário de USDT
0x37541fc4a6f1ec86889ba506f51dc39f2bedd10aContrato executor da primeira transação; manteve os X tokens

Contexto

Os usuários do X100 bloqueiam X tokens no contrato Freezer. O senado classifica as contas registradas de acordo com a quantidade atual de tokens bloqueados. Dois votos em três são suficientes para aprovar operações envolvendo liquidez da tesouraria e swaps. As taxas de registro são cobradas separadamente dos depósitos bloqueados.

O Freezer mantém X tokens da tesouraria junto com os depósitos dos usuários. Após a execução de uma operação, o contrato verifica se restam X suficientes para cobrir suas obrigações sobre os fundos congelados. Um limite separado de tokens restringe a quantidade de ativos que pode ser disponibilizada no mercado. A retirada de posições de liquidez libera espaço dentro desse limite. No entanto, nenhuma dessas medidas por si só garante que as negociações da tesouraria sejam realizadas em termos justos.

Como o ataque se desenrolou

O invasor realizou uma sequência complexa de ações que possibilitou explorar uma vulnerabilidade no código-fonte do contrato inteligente.

1. Obtendo o controle do senado

Às 14:11:47 UTC, a primeira transação, incluída no bloco 26,263,022, tomou emprestado 1,942,457.637245 USDT da Aave e comprou cerca de 38,200 X tokens. Duas contas auxiliares bloquearam 19,000.000001 X cada uma e pagaram separadamente 100 X cada uma para serem indicadas.

Antes disso, o segundo lugar na classificação era ocupado por um participante com 19,000 X.

Como a votação se baseava na classificação atual e a execução de uma decisão não exigia aguardar um período determinado, a nova maioria realizou a operação dentro da mesma transação.

2. Transformando poderes em ativos da tesouraria

A maioria obtida aprovou uma troca de 400,000 X por cerca de 35.68 USDT por meio de liquidez criada e controlada pela própria operação. O contrato executor recebeu cerca de 399,987 X e, em seguida, vendeu cerca de 131,703 X no mercado legítimo por cerca de 6.693M USDT.

A Aave recebeu cerca de 1.943M USDT, incluindo uma taxa de financiamento de cerca de 971.23 USDT. A carteira iniciadora recebeu cerca de 4.75M USDT, e o contrato executor manteve cerca de 268,284 X. Os depósitos usados para votação permaneceram bloqueados: os fundos recebidos possibilitaram quitar o empréstimo sem desbloquear os tokens. Os registros de liquidação mostram etapas sucessivas da movimentação do mesmo dinheiro; esses valores não podem ser somados, pois isso contaria as perdas em duplicidade.

3. Recuperando e reutilizando poderes

Às 14:35:59, a segunda transação usou um empréstimo flash de 1.95M USDT da Morpho para criar dois depósitos de 19,000.000002 X e substituir a primeira dupla de participantes. Cinco retiradas de posições de liquidez do tesouro devolveram cerca de 50,000 X, abrindo espaço dentro do limite antes da próxima troca de autonegociação. Após quitar o empréstimo, o destinatário recebeu cerca de 96,382 USDT e 9,895 X.

Às 14:40:47, a terceira transação usou os poderes já detidos pelos contratos auxiliares da segunda operação, sem adquirir novos tokens bloqueados. Para isso, tomou um empréstimo flash de 300 USDT e retirou uma grande posição de liquidez do tesouro. O pagamento final chegou a cerca de 1,909 USDT e 549,916 X. Chamadas históricas aos contratos mostram que a operação usou contas auxiliares para enviar propostas e votar com os assentos do senado já obtidos. Segundo a Bitquery, essa reutilização foi possível porque as funções dos contratos auxiliares que abrem acesso à governança não restringiam quais endereços podiam chamá-las. No entanto, essa explicação sobre o controle de acesso não foi verificada de forma independente nesta análise. Carteiras iniciadoras diferentes não comprovam, por si só, que havia pessoas diferentes por trás delas.

Mais duas transações ocorreram às 14:40:59 e às 14:41:23. Elas aumentaram a saída líquida de USDT do pool em cerca de 168.61 USDT. Ambas as transações foram enviadas pelo mesmo endereço, e seus números de sequência (nonces) eram consecutivos.

Transação principalUSDT pago ao destinatárioSaída líquida de USDT do pool legítimo
Primeira4,749,726.0969734,750,733.001112
Segunda96,381.88349196,381.884163
Terceira1,909.3587581,873.897121
Total das três transações principais4,848,017.3392224,848,988.782396

O terceiro pagamento também usou USDT recebido anteriormente do tesouro. Por isso, o valor do pagamento excede a redução nos fundos do pool causada diretamente por essa transação. Somando as duas transações subsequentes, a saída combinada do pool em todas as cinco transações chega a 4,849,157.396718 USDT. Fundos emprestados, pagamentos, trocas e ativos remanescentes nos endereços estão parcialmente relacionados aos mesmos fluxos de dinheiro. Os tokens X não vendidos não estão incluídos na estimativa em dólares.

4. Troca e movimentação dos fundos recebidos

O primeiro destinatário trocou cerca de 4.75M USDT por 2,022.016 ETH. Um endereço consolidador então recebeu esse ETH junto com fundos que já possuía e enviou quatro lotes de 400 ETH. No ponto de corte dos dados, 26 de outubro às 01:20:23 UTC, os cinco endereços de retenção verificados detinham cerca de 2,022.857 ETH, incluindo pequenos saldos não relacionados aos fundos dessa conversão.

O segundo destinatário trocou cerca de 96,382 USDT por 40.908 ETH. Dois endereços intermediários moveram cerca de 40.900 ETH para um endereço que o Etherscan identifica como ChangeNOW Dep. É aqui que o rastreamento dos fundos termina: a identidade do cliente, as liquidações posteriores e se o dinheiro foi finalmente sacado não foram confirmadas.

Rotas verificadas dos fundos e os endereços onde foram encontrados. Visualização: CertiK
Rotas verificadas dos fundos e os endereços onde foram encontrados. Visualização: CertiK
Um pump de 100x, um empréstimo de $75M e um rollback da blockchain: o que aconteceu com a Tectonic?5 de set. de 2026Leia mais

A vulnerabilidade

O custo de obter o controle da governança quase não teve relação com o valor de mercado dos ativos nem com o tamanho do depósito necessário para votar. A maioria obtida conseguiu retirar fundos líquidos suficientes para quitar o empréstimo usado para comprar o controle, mesmo com os depósitos de votação permanecendo bloqueados.

Três características de design tornaram essa situação possível:

  • Os poderes surgiram imediatamente após a realização de um novo depósito. As funções Freezer._stakeOf e Senate._tally usavam a quantidade atual de tokens bloqueados e a classificação dos participantes. O período de validade de uma proposta limitava a janela em que ela podia ser executada, mas o caminho de execução examinado não tinha atraso mínimo antes da execução. Duas novas contas obtiveram uma maioria e a usaram imediatamente.
  • Votos para uma proposta válida permitiam operações de autonegociação. O módulo DEX verificava se os tokens relevantes eram permitidos e se o pool existia, e então aceitava o retorno mínimo especificado na proposta. Ele não fornecia uma verificação independente sobre se os termos da negociação eram justos e não descartava o uso de liquidez controlada pelo executor. Assim, uma operação formalmente aprovada tornou possível retirar ativos do tesouro em termos definidos pela própria operação.
  • As verificações de quantidade protegiam apenas uma condição mais restrita. A verificação de que o valor total dos fundos congelados estava coberto mantinha as obrigações registradas em tokens X alinhadas. Ao mesmo tempo, o resgate de posições de liquidez liberava espaço dentro do limite para implantar ativos no mercado. Nenhuma dessas verificações limitava as perdas aceitáveis no valor do tesouro. Além disso, os contratos auxiliares permitiam reutilizar poderes já obtidos em uma operação anterior.

Resposta e recuperação

Os materiais coletados não contêm confirmação independente de que os fundos foram devolvidos ou de que a vulnerabilidade foi efetivamente corrigida. No ponto de corte registrado, restavam cerca de 1.97 USDT no pool legítimo, e os três endereços de execução e pagamento verificados detinham cerca de 826,902 X. Esses saldos ilíquidos de X não podem ser avaliados de forma confiável em dólares com base no estado de um mercado esvaziado.

O Freezer ainda cobria as obrigações registradas sobre depósitos congelados, e o senado ainda mantinha os dois assentos obtidos durante a segunda operação e controlados por contratos. Restavam apenas 0.000002 X antes do limite de implantação observado. No entanto, esse retrato não comprova que o controle da governança foi restaurado ou que seu mecanismo foi corrigido.

Em retrospectiva: o preço do controle

Outros ataques a mecanismos de governança permitem comparar quanto dinheiro foi necessário para obter o controle, quais poderes esse controle conferia e quanto do valor dos ativos foi efetivamente realizado.

IncidenteDataDano reportado
BonkDAO6 de julho de 20264.426 trilhões de BONK movimentados, avaliados em cerca de $19.3M
Term Finance23 de agosto de 2026Cerca de $8.46M em ETH e USDC
Astroport / Neutron22 de setembro de 2026Cerca de $9.4M no valor total dos ativos; $1.96M em ativos líquidos
Arkadiko22 de outubro de 2026Cerca de $1.09M como parte do esvaziamento da Arkadiko

Esses casos e estimativas se baseiam em relatórios publicados; a sequência completa de ações em cada ataque não foi reconstruída de forma independente. Os cálculos usam diferentes abordagens de avaliação, e o valor declarado dos tokens não comprova, por si só, que eles poderiam ser vendidos pelo valor correspondente.

Exposição financeira. No caso da BonkDAO, os tokens de votação foram devolvidos, e no caso da Arkadiko, os tokens DIKO foram revendidos. Isso difere da situação da X100, em que os depósitos permaneceram bloqueados. O capital necessário para obter o controle e os fundos que permanecem em risco posteriormente são indicadores diferentes. O custo líquido total de obter o controle nesses casos não foi reconstruído de forma independente. Segundo relatórios, na Term Finance o controle foi obtido por meio de um wrapper em torno do token de governança, com apenas uma pequena quantidade desses tokens emitida; a execução ocorreu após o período de votação.

Poderes. De acordo com dados publicados, a sequência de eventos na Astroport / Neutron incluiu onze reatribuições de administradores de contratos, seguidas de dez migrações maliciosas e retiradas de ativos. Na Arkadiko, foi aprovado um contrato privilegiado cujas funções públicas de retirada e emissão não verificavam as permissões de quem as chamava. Na X100, a maioria aprovou, em vez disso, negociações do tesouro em autobenefício. Em todos esses casos, os direitos de voto davam acesso a diferentes formas de controlar ativos.

Valor realizável. Apenas parte do BONK roubado foi transferida para uma exchange; depositar tokens em um endereço de exchange não comprova, por si só, que foram vendidos. A X100 manteve tokens X não vendidos, cujo possível produto não pode ser determinado de forma confiável. A queima de tokens USDA na Arkadiko reduziu a oferta sem lastro, mas não devolveu a garantia. O valor estimado dos tokens do tesouro, a quantidade de tokens emitidos e os fundos efetivamente recebidos de uma venda são indicadores diferentes.

#Tether#Ataque hacker#Ethereum#DeFi
Quase $4.85M saíram da pool do X100: o que cinco transações revelaram