A SlowMist acabou de divulgar um incidente em que um velho pool do Balancer V1 foi atacado, com prejuízo estimado em cerca de US$ 234 mil.
O interessante desta vez é que não foi uma falsificação de assinatura ou uma reentrada, como é comum; em vez disso, houve uma brecha no tratamento de precisão da função joinswapPoolAmountOut dentro do contrato do BPool do V1. O atacante primeiro reduziu as reservas do pool de
$WBTC para quase 0 e, então, com cerca de 1 satoshi de WBTC, entrou para cunhar uma quantidade enorme de $BPT. Depois, ao fazer saques em lote com base na proporção do BPT resgatado, ele retirou do pool DPI, USDC, WETH e WBTC de uma vez.
Alguns pontos que merecem atenção:
1. O V1 é uma versão antiga anunciada como descontinuada já em 2022, mas os fundos ainda permanecem na blockchain, e a manutenção de segurança praticamente é zero.
2. Bugs de precisão em Curve e Balancer, que são “AMMs baseados em pesos”, são uma armadilha clássica: com entradas de valores extremamente pequenos, é fácil disparar truncamentos inteiros.
3. Enquanto o pool ainda estiver “pendurado”, qualquer “contrato antigo que parece que ninguém toca” pode ser encontrado por scripts automatizados de varredura.
Aviso aos detentores de tokens: as posições de LP nos protocolos de versões antigas devem ser retiradas o quanto antes, ou então confirmar que o contrato foi migrado e que o código passou por auditoria. Não confie apenas em um TVL alto.
Aviso aos desenvolvedores: em funções relacionadas a join/swap, é imprescindível usar precisão fixa, ou então ampliar antes e arredondar. Nos testes, é necessário rodar casos em que a entrada seja reduzida a 1 unidade, como um valor-limite.
#DeFi #Security