Versão popular: Uma "tradução" simples para interpretar a análise do hacker @CetusProtocol pelo chefe de tecnologia: Esse ataque expõe um problema clássico de estouro de inteiro, que se manifesta no truncamento de dados durante a conversão de tipo. Detalhes técnicos desmontados: 1) Localização da vulnerabilidade: O problema ocorre no mecanismo de conversão de tipo da função get_amount_by_liquidity, e a conversão de elenco de U256 para U64 causa perda de dados de alto nível. 2) Processo de ataque: 1. O atacante passa uma grande quantidade de parâmetros de liquidez através da função add_liquidity; 2. O número de tokens B necessários para o cálculo da função de get_delta_b de chamada do sistema; 3. No processo de cálculo, multiplicam-se os dois dados do tipo U128 e o resultado teórico deve ser do tipo U256; Falha de chave: O resultado u256 é convertido para u64 quando a função retorna, resultando no truncamento dos dados de alto nível de 128 bits. 3) Efeito de utilização: A cota de liquidez que originalmente exigia um grande número de tokens para cunhar agora pode ser completada com apenas um número muito pequeno de tokens. O atacante obtém uma enorme parcela de liquidez a um custo muito baixo, e então percebe a arbitragem do pool destruindo parte da liquidez. Analogia simples: Assim como usar uma calculadora que só pode exibir 8 dígitos para calcular 1 bilhão × 1 bilhão, o resultado de um cálculo de 20 dígitos só pode exibir os últimos 8 dígitos, e os primeiros 12 dígitos desaparecem diretamente. O intruso explora esta vulnerabilidade. Para ser claro: esta vulnerabilidade não tem nada a ver com a arquitetura de segurança subjacente do @SuiNetwork, e a "glória" de segurança da linguagem Move ainda é credível por enquanto. Porquê? A linguagem Move tem vantagens significativas em termos de gerenciamento de recursos e segurança de tipo, e pode efetivamente evitar problemas de segurança de baixo nível, como gastos duplos e vazamento de recursos. No entanto, desta vez, o protocolo Cetus é um erro matemático ao nível da lógica de aplicação, não uma falha de design na linguagem Move em si. Especificamente, o sistema de tipos do Move, embora rigoroso, ainda depende do julgamento correto do desenvolvedor para o casting explícito. Quando um programa executa ativamente uma conversão de tipo de U256 para U64, o compilador não pode dizer se isso é intencional ou um erro lógico. Além disso, esse incidente de segurança não tem nada a ver com as principais funções subjacentes da Sui, como mecanismo de consenso, processamento de transações e gerenciamento de estado. A Sui Network apenas executa fielmente as instruções de transação enviadas pelo protocolo Cetus, e a vulnerabilidade decorre das falhas lógicas do próprio protocolo da camada de aplicação. Para ser franco, nenhuma quantidade de linguagens de programação avançadas pode eliminar completamente os erros lógicos na camada de aplicação. O Move pode evitar a maioria dos riscos de segurança subjacentes, mas não pode substituir os desenvolvedores com verificação de limites da lógica de negócios e proteção contra estouro de operações matemáticas.
53.44K