Pular para o conteúdo
Registro de incidente · · 1 min de leitura · 216 palavras ·Descoberto ·Divulgado Resolvido

Reentrância do compilador Vyper na Curve Finance, julho de 2023: o que aconteceu e o que verificar

Um bug em versões específicas do Vyper quebrou silenciosamente as travas de reentrância, expondo vários pools da Curve cujo próprio código estava correto.

Compartilhar
Esquema do incidente da Curve Finance (compilador Vyper) mostrando a etapa de reentrância como o ponto de falha.
Schematic of the Curve Finance (Vyper compiler) incident showing the reentrancy stage as the failure point.

Visão geral

ENTIDADE AFETADA
Curve Finance (Vyper compiler)
BLOCKCHAIN(S)
Ethereum
PERDA RELATADA
aprox. US$ 70 milhões nos pools afetados(Curve Finance, 31 jul 2023)
RESPOSTA OFICIAL
x.com

Código-fonte correto, bytecode incorreto

Os pools afetados da Curve declaravam proteção contra reentrância. O código-fonte deles estava certo. O compilador emitiu um bytecode em que a proteção não funcionava como declarado, e a reentrância — a mais antiga classe de vulnerabilidade bem compreendida em contratos inteligentes — tornou-se explorável em contratos que explicitamente se defendiam dela.

Por que este caso é diferente em natureza

Quase todo incidente neste rastreador envolve um defeito que um revisor poderia, em princípio, ter encontrado lendo o código. Este não podia. Um revisor que lesse o código-fonte em Vyper confirmaria que a trava estava presente e corretamente aplicada, e estaria errado sobre o comportamento implantado, sem culpa nenhuma da sua parte.

Isso desloca a fronteira de confiança. O compilador, e a versão específica dele, faz parte daquilo em que é preciso confiar. Todo projeto que publica contratos compilados herda a correção da sua cadeia de ferramentas, tenha alguém pensado nisso ou não.

A verificação que vale fazer

Para qualquer contrato em Vyper ao qual você tenha exposição, a pergunta é qual versão do compilador produziu o bytecode implantado e se essa versão está na lista de afetadas publicada pelo projeto Vyper. Os metadados de versão são registrados na implantação e são verificáveis de forma independente de qualquer alegação feita pelo projeto.

Linha do tempo

Somente de acréscimo. As correções são adicionadas como entrada datada própria; as entradas anteriores nunca são reescritas.

  1. Vários pools da Curve são explorados por reentrância. A Curve confirma o incidente e identifica as versões do compilador Vyper envolvidas. Curve Finance
  2. A Curve e o Vyper publicam a lista de versões afetadas do compilador para que outros projetos possam checar suas próprias implantações. Curve Finance

O que verificar

O projeto Vyper e a Curve publicaram quais versões do compilador foram afetadas. A verificação que importa para qualquer contrato em Vyper é qual versão do compilador produziu o bytecode implantado.

A Conisec não hospeda nem linka ferramentas de recuperação, de revogação ou de “verificação”. Depois de um incidente público, atacantes rotineiramente semeiam exatamente esses links usando o nome de publicações que cobrem o caso. Use o canal oficial do próprio projeto afetado, linkado acima, e nada além disso.

Fontes

  1. Curve Finance, Incident statement and affected Vyper versions (30 jul 2023)

Não é aconselhamento. Este é um resumo de fatos publicados, não orientação jurídica, tributária ou de segurança. Confira nas fontes primárias linkadas acima.

Última verificação por Conisec Staff.

Continue explorando