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.
Depois de investigar a transação de exploração do Cetus, acredito ter identificado a causa raiz do bug. O problema decorre de uma fundição de tipo de u256 a u64 dentro da função get_amount_by_liquidity.
151
53,5 mil
O conteúdo apresentado nesta página é fornecido por terceiros. Salvo indicação em contrário, a OKX não é o autor dos artigos citados e não reivindica quaisquer direitos de autor nos materiais. O conteúdo é fornecido apenas para fins informativos e não representa a opinião da OKX. Não se destina a ser um endosso de qualquer tipo e não deve ser considerado conselho de investimento ou uma solicitação para comprar ou vender ativos digitais. Na medida em que a IA generativa é utilizada para fornecer resumos ou outras informações, esse mesmo conteúdo gerado por IA pode ser impreciso ou inconsistente. Leia o artigo associado para obter mais detalhes e informações. A OKX não é responsável pelo conteúdo apresentado nos sites de terceiros. As detenções de ativos digitais, incluindo criptomoedas estáveis e NFTs, envolvem um nível de risco elevado e podem sofrer grandes flutuações. Deve considerar cuidadosamente se o trading ou a detenção de ativos digitais é adequado para si à luz da sua condição financeira.