Bem-vindo ao Vulnerability Spotlight de Sherlock! A cada semana, destacaremos uma vulnerabilidade impactante que nossos pesquisadores descobriram durante uma auditoria do Sherlock.
Esta semana temos uma retirada excessiva por configuração incorreta.
Foi encontrado por @bin2chen, @TheCHADuke, iglyx, @tapired, @xiaoming9090 e @0xleastwood no concurso @NotionalFinance V3.

Se o currentBalance for de 999.900 USDC e o withdrawAmountExternal for de 1.000.000 USDC, então não há saldo suficiente no contrato e fundos adicionais precisam ser retirados do mercado monetário (por exemplo, Compound).

Como o contrato já tem 999.900 USDC, apenas 100 USDC adicionais precisam ser retirados do mercado monetário para atender à solicitação de retirada de 1.000.000 USDC
No entanto, em vez de retirar 100 USDC do mercado monetário, a Notional retira 1.000.000 USDC do mercado de acordo com a função oracle.getRedemptionCalldata(withdrawAmountExternal). Como resultado, um excesso de 999.900 USDC está sendo retirado do mercado monetário.
Qual é o impacto?
Isso levou a uma quantidade excessiva de ativos ociosos no Notional e não geraram nenhum retorno ou interesse no mercado monetário, o que levou a uma perda significativa de rendimento para os usuários, pois eles receberiam uma taxa de juros mais baixa do que o esperado e incorreriam em perda de oportunidade.
Os invasores poderiam abusar disso para retirar os fundos que a Notional investiu no mercado monetário, levando a uma perda impressionante de retornos/juros para o protocolo.
A correção:
Essencialmente, antes da correção, o código dizia ao oráculo: "Prepare etapas para retirar tudo o que o usuário deseja do mercado monetário".
Quando deveria ter dito: "Apenas retire o que estamos perdendo do mercado monetário".

Após a correção, para o exemplo anterior, os 999.900 USDC já mantidos pelo contrato permanecem intocados e continuam ganhando rendimento, melhorando a eficiência e preservando os retornos para todos os usuários.
Essa vulnerabilidade resultou de uma falha lógica sutil na forma como os valores de retirada foram calculados e aprovados. Ao ignorar o saldo existente do contrato, o sistema retirou desnecessariamente fundos excessivos do mercado monetário, levando à ineficiência de capital e perda de rendimento.
Estamos orgulhosos de ter ajudado a proteger a Notional por meio dessa descoberta. Quando absolutamente precisa ser seguro, Sherlock é a escolha certa.
2,81 mil
35
O conteúdo desta página é fornecido por terceiros. A menos que especificado de outra forma, a OKX não é a autora dos artigos mencionados e não reivindica direitos autorais sobre os materiais apresentados. O conteúdo tem um propósito meramente informativo e não representa as opiniões da OKX. Ele não deve ser interpretado como um endosso ou aconselhamento de investimento de qualquer tipo, nem como uma recomendação para compra ou venda de ativos digitais. Quando a IA generativa é utilizada para criar resumos ou outras informações, o conteúdo gerado pode apresentar imprecisões ou incoerências. Leia o artigo vinculado para mais detalhes e informações. A OKX não se responsabiliza pelo conteúdo hospedado em sites de terceiros. Possuir ativos digitais, como stablecoins e NFTs, envolve um risco elevado e pode apresentar flutuações significativas. Você deve ponderar com cuidado se negociar ou manter ativos digitais é adequado para sua condição financeira.