Este ataque expôs um clássico problema de estouro de inteiros, manifestando-se especificamente na truncagem de dados durante o processo de conversão de tipos.
Desagregação dos detalhes técnicos:
1)Localização de falhas: O problema ocorre no mecanismo de conversão de tipos da função get_amount_by_liquidity, onde a conversão forçada de u256 para u64 resulta na perda de dados do bit mais significativo.
2) Processo de ataque:
1. O atacante passa um parâmetro de quantidade de liquidez extremamente grande através da função add_liquidity; 2. O sistema chama a função get_delta_b para calcular a quantidade necessária de tokens B. 3、在计算过程中,两个u128类型数据相乘,理论结果应为u256类型;
Defeito chave: a função força a conversão do resultado u256 para u64 ao retornar, levando ao truncamento dos 128 bits superiores.
3) Efeito da utilização: O montante de tokens que antes era necessário para criar a quota de liquidez agora pode ser alcançado com uma quantidade muito pequena de tokens. Os atacantes obtêm uma enorme quota de liquidez a um custo muito baixo e, em seguida, realizam arbitragem no pool de fundos ao destruir parte da liquidez.
Comparação simples: é como usar uma calculadora que só pode mostrar 8 dígitos para calcular 1 bilhão × 1 bilhão, o resultado de 20 dígitos só pode mostrar os últimos 8 dígitos, os 12 dígitos à frente desaparecem diretamente. O atacante aproveitou essa vulnerabilidade de "falta de precisão nos cálculos".
Especificamente, embora o sistema de tipos do Move seja rigoroso, ainda depende do julgamento correto do desenvolvedor para operações de conversão de tipos explícitas. Quando o programa executa ativamente a conversão de tipo de u256 para u64, o compilador não consegue determinar se isso é um design intencional ou um erro lógico.
Além disso, este incidente de segurança não está de forma alguma relacionado com o mecanismo de consenso, processamento de transações, gestão de estado e outras funcionalidades fundamentais do Sui. A Sui Network apenas executou fielmente as instruções de transação enviadas pelo protocolo Cetus, e a vulnerabilidade origina-se de uma falha lógica no próprio protocolo de camada de aplicação.
Esta página pode conter conteúdos de terceiros, que são fornecidos apenas para fins informativos (sem representações/garantias) e não devem ser considerados como uma aprovação dos seus pontos de vista pela Gate, nem como aconselhamento financeiro ou profissional. Consulte a Declaração de exoneração de responsabilidade para obter mais informações.
Este ataque expôs um clássico problema de estouro de inteiros, manifestando-se especificamente na truncagem de dados durante o processo de conversão de tipos.
Desagregação dos detalhes técnicos:
1)Localização de falhas: O problema ocorre no mecanismo de conversão de tipos da função get_amount_by_liquidity, onde a conversão forçada de u256 para u64 resulta na perda de dados do bit mais significativo.
2) Processo de ataque:
1. O atacante passa um parâmetro de quantidade de liquidez extremamente grande através da função add_liquidity;
2. O sistema chama a função get_delta_b para calcular a quantidade necessária de tokens B.
3、在计算过程中,两个u128类型数据相乘,理论结果应为u256类型;
Defeito chave: a função força a conversão do resultado u256 para u64 ao retornar, levando ao truncamento dos 128 bits superiores.
3) Efeito da utilização: O montante de tokens que antes era necessário para criar a quota de liquidez agora pode ser alcançado com uma quantidade muito pequena de tokens. Os atacantes obtêm uma enorme quota de liquidez a um custo muito baixo e, em seguida, realizam arbitragem no pool de fundos ao destruir parte da liquidez.
Comparação simples: é como usar uma calculadora que só pode mostrar 8 dígitos para calcular 1 bilhão × 1 bilhão, o resultado de 20 dígitos só pode mostrar os últimos 8 dígitos, os 12 dígitos à frente desaparecem diretamente. O atacante aproveitou essa vulnerabilidade de "falta de precisão nos cálculos".
Move语言在资源管理和类型安全方面确实具备显有优势,能够有效防范双重支付、资源泄露等底层安全问题。 但此次Cetus协议出现的是应用逻辑层面的数学计算错误,并非Move语言本身的设计缺陷。
Especificamente, embora o sistema de tipos do Move seja rigoroso, ainda depende do julgamento correto do desenvolvedor para operações de conversão de tipos explícitas. Quando o programa executa ativamente a conversão de tipo de u256 para u64, o compilador não consegue determinar se isso é um design intencional ou um erro lógico.
Além disso, este incidente de segurança não está de forma alguma relacionado com o mecanismo de consenso, processamento de transações, gestão de estado e outras funcionalidades fundamentais do Sui. A Sui Network apenas executou fielmente as instruções de transação enviadas pelo protocolo Cetus, e a vulnerabilidade origina-se de uma falha lógica no próprio protocolo de camada de aplicação.
说白了,再先进的编程语言也无法完全杜绝应用层的逻辑错误。 Move能够防范大部分底层安全风险,但无法代替开发者进行业务逻辑的边界检查和数学运算的溢出保护。