Durante a semana passada (13/07/2026 - 19/07/2026), os seguintes 2 incidentes de segurança notáveis são destacados, envolvendo aproximadamente $1,35M em perdas totais no Ethereum e na Solana.
| Data | Incidente | Tipo | Perda Estimada |
|---|---|---|---|
| 15/07/2026 | BarnBridge | Governança Inadequada | ~$776K |
| 16/07/2026 | DeFiTuna | Verificação de Saúde Falha | ~$570K |
- DeFiTuna: A verificação de saúde da posição aceitou valor zero de ativos como saudável com dívida não-zero; o atacante usou roteamento de swap controlado e um pool separado de baixa liquidez para acionar essa falha e criar uma posição de dívida inadimplente.
- BarnBridge: Um sistema de governança depreciado foi explorado para modificar configurações críticas do protocolo e drenar fundos aprovados pelos usuários.
Best Security Auditor for Web3
Validate design, code, and business logic before launch
Destaque da Semana: DeFiTuna
A causa raiz foi uma ramificação de valor zero falha na verificação de saúde da posição: uma posição com valor zero de ativos e aproximadamente $570K de dívida pendente foi aceita como saudável. O atacante acionou essa falha roteando o swap por um pool separado de baixa liquidez, mas a verificação de saúde era o controle que deveria ter detectado a dívida inadimplente resultante.
Em 16 de julho de 2026, a DeFiTuna, um protocolo de empréstimo na Solana que suporta posições spot alavancadas, foi explorada por aproximadamente $570K em USDC [1]. A causa raiz foi uma ramificação de valor zero falha na verificação de saúde da posição que aceitava uma posição como saudável mesmo quando seu valor de ativos era zero e sua dívida era não-zero. O atacante abriu uma posição alavancada com colateral zero, tomou emprestado USDC do cofre do protocolo e roteou o swap por um pool de baixa liquidez controlado pelo atacante, fazendo com que a posição recebesse uma quantidade insignificante do token alvo. O truncamento de precisão arredondou o valor da posição para zero, e a verificação de saúde aceitou a posição como saudável, criando aproximadamente $570K de dívida inadimplente.
Contexto
A DeFiTuna é um protocolo de empréstimo na Solana que suporta negociação com margem. Um usuário pode abrir uma posição spot fornecendo um token como colateral, tomando emprestado de um cofre do protocolo e trocando os fundos emprestados por um token alvo. A posição resultante é então verificada em relação à dívida para determinar se está saudável.
Em um mercado spot da DeFiTuna, os dois tokens do pool são referenciados como token A e token B. No mercado atacado, o token A era TUNA e o token B era USDC.
USDCera o token de colateral (collateral_token). O usuário depositaUSDCcomo margem, toma emprestadoUSDCadicional do cofre da DeFiTuna, e oUSDCemprestado é então trocado porTUNA.TUNAera o token de posição (position_token), o ativo que a posição mantém após o swap. O efeito líquido é uma posição comprada alavancada emTUNAfinanciada por dívida emUSDC.- As contas do cofre mantêm a liquidez dos credores e são a fonte dos fundos emprestados.
- O pool AMM fornece liquidez de mercado e contexto de preço para o par
TUNA/USDC.
A DeFiTuna roteia swaps de posição pelo Jupiter, um agregador de swaps da Solana. O caminho do swap é fornecido à instrução da DeFiTuna como dados de rota e contas de rota do Jupiter. Como o chamador fornece essas contas, o chamador controla qual pool o swap utiliza. Antes de executar o swap, a DeFiTuna realiza uma verificação de preço pré-swap comparando o preço do pool de mercado normal com um oráculo.
Análise de Vulnerabilidade
O programa com falha é a DeFiTuna (tuna4u...nogD).
A causa raiz foi uma ramificação de valor zero falha na verificação de saúde da posição. Após um swap, a DeFiTuna valorava a posição convertendo o TUNA mantido em termos de USDC. Se o saldo de TUNA fosse pequeno o suficiente para ser arredondado para zero, o campo total tornava-se 0. A lógica da verificação de saúde tratava total == 0 como um estado saudável sem exigir que debt == 0.


Análise do Ataque
Duas propriedades de design deram ao atacante controle sobre o destino dos fundos emprestados. Primeiro, a DeFiTuna aceitava dados RouteV2 do Jupiter fornecidos pelo chamador sem derivar sua própria saída mínima aceitável de TUNA a partir do preço do oráculo e do valor emprestado. Segundo, a verificação do oráculo pré-swap apenas validava o pool de mercado normal da DeFiTuna, não o pool que a rota do Jupiter realmente utilizaria.

Nota: A análise pós-incidente endossada pela equipe do projeto [1] descreve o pool criado pelo atacante como inicializado próximo ao preço legítimo do oráculo. Evidências on-chain mostram que o pool foi inicializado a um preço extremo; a verificação pré-swap passou porque validou o pool de mercado normal separado, não o pool controlado pelo atacante.
A análise a seguir é baseada na transação 4x33Dq...EXj1. Múltiplas transações de ataque foram executadas; esta ilustra a técnica central.
- Passo 1: O atacante criou um novo pool Fusion
TUNA/USDC. Esse pool usava os mints reais deTUNAeUSDC, mas era separado do pool de mercado normal da DeFiTuna. O pool foi inicializado a um preço extremo próximo ao tick208636, precificandoTUNAem aproximadamente 1,149 bilhões deUSDCporTUNA. A esse preço, mesmo uma quantidade mínima deTUNApoderia absorver centenas de milhares deUSDCem um swap.


- Passo 2: O atacante colocou duas pequenas ordens de limite de venda no novo pool. Cada ordem depositou
0,000526 TUNA, totalizando0,001052 TUNA. Como o preço do pool era extremamente alto, essa minúscula oferta deTUNApoderia absorver todo o valor deUSDCemprestado quando o swap fosse executado.


- Passo 3: Com o pool preparado, o atacante abriu uma posição spot na DeFiTuna com
TUNAcomo token de posição eUSDCcomo token de colateral. O atacante forneceu0 USDCcomo colateral e tomou emprestado570.000 USDCdo cofre deUSDCda DeFiTuna.

- Passo 4: Antes do swap, a DeFiTuna comparou o preço do pool de mercado normal com o preço do oráculo. O preço spot do pool normal estava próximo ao oráculo, então a verificação passou. Essa verificação apenas validou o pool de mercado normal da DeFiTuna; não validou o pool Fusion que a rota do Jupiter utilizaria.

- Passo 5: O swap seguiu a rota do Jupiter fornecida pelo atacante, que direcionou os fundos pelo pool Fusion controlado pelo atacante com a saída mínima efetivamente definida como zero. Após a taxa do protocolo,
569.601 USDCforam roteados para o pool de ataque, enquanto a posição da DeFiTuna recebeu apenas494unidades brutas deTUNA(0,000494 TUNA).


- Passo 6: Após o swap, a posição tinha aproximadamente
570.000 USDCde dívida e apenas uma quantidade irrisória deTUNA. Quando a DeFiTuna converteu esse saldo deTUNAem valor deUSDC, o resultado foi arredondado para0. A verificação de saúde tratoutotal == 0como saudável, então a posição de dívida inadimplente foi aceita.


- Passo 7: O atacante retirou o
USDCacumulado no pool Fusion controlado pelo atacante. As duas retiradas foram quase iguais, correspondendo às duas posições de ordens de limite criadas no Passo 2.
Conclusão
A causa raiz foi a ramificação total == 0 da verificação de saúde aceitar uma posição como saudável independentemente da dívida pendente. O roteamento e a liquidez controlados pelo atacante criaram as condições para acionar essa falha, mas a verificação de saúde era o controle final que deveria ter impedido a dívida inadimplente.
A correção mais direta é rejeitar qualquer posição onde total == 0 e debt > 0. Uma posição de valor zero com dívida pendente nunca é saudável. Além disso, o protocolo deve derivar uma saída mínima aceitável de swap a partir do preço do oráculo e do valor emprestado, independentemente dos parâmetros de rota fornecidos pelo chamador. Vincular a verificação de oráculo/preço ao pool de swap real, ou verificar a saída do swap em relação a um piso calculado pelo protocolo, impediria que a verificação pré-swap fosse contornada por roteamento através de um pool não validado.
Referências
Mais Incidentes desta Semana
BarnBridge
Em 15 de julho de 2026, a BarnBridge, um protocolo de alocação de rendimento no Ethereum, foi explorada por aproximadamente $776K em USDC [1]. A causa raiz foi o contrato de governança abandonado mantendo autoridade para modificar configurações críticas do protocolo. O atacante adquiriu poder de voto suficiente para aprovar uma proposta maliciosa que substituiu o controlador de um componente do protocolo, depois usou o novo controlador para transferir o USDC aprovado pelos usuários.
Contexto
A BarnBridge é um protocolo governado por DAO que aloca os fundos dos usuários em diferentes mercados de empréstimo para gerar rendimento. O poder de voto é determinado pela quantidade de BOND em staking e pelo período de bloqueio. Criar uma proposta requer poder de voto igual a pelo menos 1% do poder de voto total. Uma proposta deve atingir um quórum mínimo de 40% e receber pelo menos 60% dos votos totais participantes a favor para ser aprovada. Uma vez submetida, uma proposta passa por um período de aquecimento de dois dias, um período de votação de três dias e um período de fila de dois dias antes de poder ser executada.
Análise de Vulnerabilidade
A causa raiz foi o contrato de governança abandonado mantendo a autoridade para modificar configurações críticas do protocolo após o protocolo ter sido depreciado. O sistema de governança controlava a atribuição do Controller para o CompoundProvider, um contrato que os usuários haviam aprovado anteriormente para gastar seu USDC. Como a BarnBridge havia sido depreciada, o total de BOND em staking e a participação ativa caíram significativamente, tornando a aprovação de propostas hostis trivialmente alcançável.
Análise do Ataque
A análise a seguir é baseada na transação 0xd191fe...895afb.
O atacante gastou aproximadamente 0,335 ETH para adquirir cerca de 32.795 BOND, depois depositou e bloqueou 32.000 BOND, obtendo aproximadamente 43% do poder de voto total.
- Passo 1: O atacante implantou um contrato proxy e submeteu uma proposta maliciosa. Após o período de aquecimento de dois dias, o atacante lançou todo o seu poder de voto a favor, satisfazendo tanto os requisitos de quórum quanto de aprovação.


- Passo 2: O atacante colocou a proposta em fila. Após o período de fila de dois dias, o atacante a executou, definindo o
ControllerdoCompoundProviderpara o contrato proxy do atacante.

- Passo 3: O atacante atualizou a lógica do contrato proxy e chamou
_takeUnderlying(), que usou as permissões pendentes deUSDCde aproximadamente 50 usuários para transferir seuUSDCpara oCompoundProvider. O atacante então chamoutransferFees()para encaminhar os fundos para o endereço do atacante, obtendo um lucro de aproximadamente $776K emUSDC.

Conclusão
Se um DAO ou protocolo está sendo depreciado, seu contrato de governança deve renunciar ou desabilitar permanentemente a capacidade de modificar configurações críticas de segurança, especialmente permissões de administrador, controlador e retirada de fundos. Medidas concretas incluem revogar o papel de administrador do contrato de governança sobre contratos downstream, transferir a propriedade para um endereço de queima ou executar uma proposta final que desabilite funções de atualização e defina referências de controlador para valores seguros imutáveis. Deixar a autoridade de governança intacta em um protocolo depreciado cria uma superfície de ataque de baixo custo: à medida que a participação diminui, o capital necessário para atingir o quórum cai proporcionalmente.



