Back to Blog

Deposite Menos, Receba Mais: Detalhes do Ataque ao yCREDIT

Code Auditing
3 de janeiro de 2021
3 min read

Em 2 de janeiro de 2021 (Horário de Pequim 07:25), nosso sistema de monitoramento ThunderForecast reportou uma série de transações suspeitas direcionadas ao contrato inteligente yCREDIT. Em seguida, utilizamos o sistema EthScope desenvolvido por nossa equipe de pesquisa para analisar essas transações e confirmar que todas as transações reportadas são maliciosas. Neste blog, ilustramos os detalhes do ataque.

Detalhes

O ataque ocorre devido ao fato de que a quantidade de tokens cunhados é inconsistente com a quantidade pretendida. Dessa forma, o atacante consegue obter muito mais tokens yCREDIT a um preço menor. Em seguida, esses tokens podem ser vendidos para obter lucros.

A função vulnerável está na função _deposit do contrato StableYieldCredit.

A seguir, utilizaremos uma transação de ataque para ilustrar todo o processo.

O atacante primeiro transferiu 1e-8 WBTC e 331,335 yCredit tokens para o Pool de Par WBTC-yCREDIT. Em seguida, o atacante depositou 0,5 WBTC no contrato StableYieldCredit para lançar o ataque.

Especificamente, o _value é calculado usando o amount (0,5) do token (0x2260fac5e5542a773aa44fbcfedf7c193bc2c599 - WBTC) com base no provedor de oráculo de preços ChainLink (linha 480, _value é 1466786010075). A intenção é calcular o valor do WBTC depositado em USD. Em seguida, o contrato transferirá a quantidade de tokens yCREDIT (_value - fee) para quem depositou o WBTC (o atacante). Isso ocorre porque o valor do yCREDIT equivale a um USD (conforme projetado pelo sistema). Tudo está correto, exceto que o atacante perde uma pequena quantidade de fee.

Além disso, o contrato adicionará o WBTC depositado ao Pool de Par WBTC-yCREDIT. Isso porque, se o WBTC depositado for bloqueado no contrato, perderá liquidez. Assim, primeiro é calculado o valor do par de tokens (WBTC para yCREDIT) que será inserido no pool. Esse valor é calculado usando a função _addLiquidity. Basicamente, é calculado com base nas reservas existentes dentro do pool. Como o pool possui apenas 1e-8 WBTC e 331,335 yCREDIT tokens, o amountA calculado é 44 (amountB é 1466786010075). Isso significa que o atacante gasta apenas 44e-8 WBTC (linha 485) e obtém 14667,86010075 - fee = 14594,52080025 tokens yCREDIT (linha 493). Ao mesmo tempo, uma pequena quantidade de WBTC (1e-8 + 44e-8) e (331,335 + 14667,86010075) tokens yCREDIT permanecem no pool.

Para obter lucros, o atacante pode simplesmente negociar os 14594,52080025 tokens yCREDIT obtidos em exchanges. Curiosamente, o processo para obter lucros nesta transação é muito mais complicado do que o necessário. Também observamos uma estratégia de ataque inteligente em outras transações.

Há uma série de transações envolvidas no ataque, incluindo (mas não se limitando a) as seguintes.

Atualização

2020/01/03: Há um novo contrato inteligente que corrige a vulnerabilidade.

Linha do Tempo

  • 2021/01/01 23:25 UTC, os ataques foram capturados pelo nosso sistema
  • 2021/01/02 16:20 UTC, este blog foi publicado
Sign up for the latest updates
Perdas de ~5,57 milhões USD: exploração de falhas no X100 Freezer e no NEM | Boletim semanal da BlockSec
Security Insights

Perdas de ~5,57 milhões USD: exploração de falhas no X100 Freezer e no NEM | Boletim semanal da BlockSec

Este relatório semanal aborda dois incidentes de segurança na Ethereum e na BNB Chain no período de 19/10/2026–25/10/2026. Ele examina uma tomada de controle da governança do X100 Freezer financiada por um empréstimo-relâmpago e uma falha na liquidação de impostos que afetou um pool de liquidez de um token NEM na BNB Chain. As perdas estimadas no escopo do relatório totalizam aproximadamente 5,57 milhões USD: cerca de 4,75 milhões USD da transação representativa do X100 e cerca de 820 mil USD do incidente no pool do NEM. O total exclui as extrações subsequentes do X100 relatadas separadamente.

Perdas de ~3,87 milhões USD: ataques à Autheo Network e à UNCX | Resumo semanal da BlockSec
Security Insights

Perdas de ~3,87 milhões USD: ataques à Autheo Network e à UNCX | Resumo semanal da BlockSec

Este relatório semanal aborda 3 incidentes de segurança no período de 12/10/2026–18/10/2026, com perdas totais estimadas em aproximadamente 3,87 milhões USD. A Autheo Network sofreu um comprometimento de chave privada com perdas de cerca de 1,76 milhões USD, a Qubic Wallet perdeu cerca de 1,30 milhões USD devido à geração de seeds fracas, e os contratos Smart Token Vesting V2 da UNCX Network sofreram um erro contábil de cerca de 807 mil USD nas redes Ethereum, BNB Chain, Base e Robinhood Chain. A análise em destaque da UNCX explica como um cálculo incorreto do total de cotas misturou parcelas de vesting criadas com diferentes proporções entre tokens e cotas, permitindo saques acima do devido de pools compartilhados.

~US$ 542 mil perdidos: ataque ao MakerDaoBot | Boletim semanal da BlockSec
Security Insights

~US$ 542 mil perdidos: ataque ao MakerDaoBot | Boletim semanal da BlockSec

O relatório cobre 1 incidente no Ethereum (05–11/10/2026), com perda estimada de US$ 542 mil. Um adaptador malicioso obteve acesso aos saldos MakerDAO via função desprotegida do MakerDaoBot, liquidou 4 leilões ETH-A e converteu 200 ETH-A em WETH, depois enviados como ETH ao atacante.

Best Security Auditor for Web3

Validate design, code, and business logic before launch. Aligned with the highest industry security standards.

BlockSec Audit