[pt-br] Empty Market Attacks
Nos ecossistemas DeFi baseados em empréstimos, o Compound V2 estabeleceu um padrão seguido por inúmeros forks. Entretanto, herdar o código base sem entender profundamente suas nuances pode deixar portas abertas para ataques específicos. Um desses vetores de exploração — conhecido como “Empty Markets Attack” — tem afetado forks do Compound V2, como a Hundred Finance (em abril de 2023) e a Midas Capital (em junho de 2023, na BNB Chain). Essas investidas permitem que atacantes manipulem a taxa de câmbio (exchange rate) em mercados com liquidez zero ou muito baixa, resultando em empréstimos superdimensionados e drenagem massiva de fundos.
Contexto e Dinâmica do Attack Vector
O Compound V2 oferece um modelo de lending/borrowing no qual usuários depositam ativos, recebem cTokens como recibos desses depósitos e, a partir daí, podem fornecer liquidez ou tomar empréstimos utilizando esses cTokens como colateral. A taxa de câmbio (exchange rate) entre cTokens e o ativo subjacente é calculada de forma dinâmica:
Exchange Rate = (totalCash + totalBorrows - totalReserves) / totalSupply
Em condições normais, totalSupply
reflete a quantidade total de cTokens emitidos. Entretanto, se um mercado estiver praticamente vazio (com totalSupply ≈ 0), essa fórmula fica instável. Basta um invasor “doar” ativos diretamente para o contrato do protocolo (inflando totalCash
) para criar um exchange rate artificialmente elevado. Essa taxa de câmbio inflada aumenta drasticamente o valor do colateral, permitindo que o atacante tome empréstimos muito maiores do que deveria.
Caso Hundred Finance
Na exploração da Hundred Finance (um fork do Compound V2) em abril de 2023, o processo foi capturado pela Forta Network, que detectou a criação de um contrato malicioso cerca de 44 minutos antes do ataque. O invasor:
- Cria um borrower contract e financia-o com algum capital inicial.
- Minta cTokens em um mercado vazio e efetua um redeem da maior parte dos tokens recém-criados, mantendo um punhado de cTokens como colateral.
- Realiza uma “donation” (doação) diretamente ao contrato da pool, aumentando
totalCash
sem aumentartotalSupply
. Essa manobra eleva a exchange rate a níveis absurdos, inflando o valor do colateral. - Toma empréstimos maciços em outro ativo, aproveitando a valorização fictícia do colateral.
- Recupera a “doação” ao fazer novos redeem e liquidações, revertendo o mercado ao seu estado vazio original, porém deixando o protocolo com prejuízos gigantes.
Esse padrão se repetiu em outros forks do Compound V2 após o incidente da Hundred Finance. A vulnerabilidade já era inerente ao código do Compound V2, porém não se manifestava nos mercados do Compound original porque não havia mercados com CF
(Collateral Factor) não-nulo e suprimento baixo. A própria Compound Finance confirmou (conforme análises de Daniel Von Fange, Hexagate, B Protocol e OpenZeppelin) que o bug existe no código, mas que as condições ideais para o exploit não ocorrem nos mercados ativos do Compound V2, e que a versão V3 do protocolo já endereçou o problema.
Caso Midas Capital
Em junho de 2023, a Midas Capital — outro fork Compound V2 — foi explorada de forma semelhante na BNB Chain, resultando em uma perda de aproximadamente US$ 600.000. Nesse caso, o invasor aproveitou uma falha de arredondamento (rounding issue) no cálculo da exchange rate. Assim como no ataque à Hundred Finance, o atacante:
- Explorou um mercado vazio ou com liquidez insignificante.
- Manipulou a exchange rate via múltiplos redemptions e doações estratégicas de tokens, inflando o valor do colateral.
- Utilizou flash loans para fornecer e, em seguida, recomprar tokens, criando ciclos de mint/redeem que amplificaram o valor do colateral disponibilizado.
- Conseguiu, no final, obter um empréstimo acima do que realmente deveria ser permitido e drenou os fundos do protocolo.
Esse ataque também expôs a necessidade de testes mais extensivos (fuzzing, formal verification, testes unitários e integrações profundas), auditorias independentes e a revisão atenta de forks do Compound V2. Tudo isso reforça que não basta apenas copiar o código: é preciso entender os invariantes, as suposições do modelo econômico e as condições limites (edge cases).
Mitigações e Recomendações
1. Collateral Factor (CF) em zero para novos mercados:
A Compound e analistas independentes recomendam que, ao lançar um novo mercado no Compound V2 (ou um fork), mantenha-se o CF em zero até que exista um totalSupply
significativo de cTokens. Somente após a acumulação de suficiente liquidez é seguro aumentar o CF. Dessa forma, o mercado não fica vulnerável a ataques durante seu “bootstrapping”.
2. Monitoramento Contínuo e Ajuste Dinâmico do CF:
Projetos devem monitorar continuamente níveis de supply, borrow e liquidez dos mercados. Se um mercado se tornar “vazio” ou apresentar concentração de liquidez em poucas mãos, o CF pode ser ajustado para zero preventivamente, mitigando tentativas de manipulação.
3. Queima de cTokens (Burn) e Manutenção do Market Health:
Outra abordagem sugerida para mercados já existentes é a queima de cTokens para impedir situações onde o totalSupply
se aproxima perigosamente de zero, dificultando a manipulação do exchange rate.
4. Testes Profundos e Auditorias:
Ferramentas como o Foundry podem auxiliar na execução de fuzz tests e simulações em cenários adversos. Verificações formais (utilizando frameworks como o Certora ou o Echidna), auditorias de terceiros (Halborn, Code4rena, entre outras) e análises independentes devem ser adotadas antes de colocar um mercado no ar.
Conclusão
Empty Markets Attacks evidenciam a complexidade e os riscos de forks do Compound V2 que não endereçam lacunas sutis na lógica econômica. Por meio da manipulação da exchange rate em mercados com supply praticamente inexistente, invasores transformam um ambiente aparentemente inócuo em uma mina de ouro instantânea. Esse tipo de falha reforça a necessidade de uma abordagem de segurança holística: não basta ler o README do Compound e dar deploy; é preciso entender invariantes econômicos, monitorar o health dos mercados, manter o CF adequado, testar profundamente o código e adotar práticas preventivas.
Em suma, o Empty Markets Attack é um lembrete contundente de que segurança em DeFi não é meramente uma questão de ter “código limpo”, mas de compreender o ecossistema como um todo — do ciclo de vida do mercado, passando pelos parâmetros econômicos até chegar em processos operacionais e a integração de testes e auditorias. Aqui na HellHex, nossa missão é ajudar você a não só conhecer a EVM a fundo, mas também a evitar esses “buracos negros” de segurança que podem custar muito, muito caro.