Saltar al contenido
Registro de incidente · · 2 min de lectura · 235 palabras ·Descubierto ·Divulgado Resuelto

Reentrada por el compilador Vyper en Curve Finance, julio de 2023: qué ocurrió y qué comprobar

Un error en determinadas versiones de Vyper rompía en silencio los cerrojos de reentrada y dejó expuestos a varios pools de Curve cuyo propio código era correcto.

Compartir
Esquema del incidente de Curve Finance (Vyper compiler) que muestra la etapa de reentrada como punto de fallo.
Schematic of the Curve Finance (Vyper compiler) incident showing the reentrancy stage as the failure point.

De un vistazo

ENTIDAD AFECTADA
Curve Finance (Vyper compiler)
CADENA(S)
Ethereum
PÉRDIDA DECLARADA
aprox. 70 millones de dólares estadounidenses entre los pools afectados(Curve Finance, 31 Jul 2023)
RESPUESTA OFICIAL
x.com

Código fuente correcto, bytecode incorrecto

Los pools de Curve afectados declaraban protección frente a la reentrada. Su código fuente era correcto. El compilador emitió un bytecode en el que el cerrojo no funcionaba como se había declarado, y la reentrada —la clase de vulnerabilidad más antigua y mejor comprendida en los contratos inteligentes— pasó a ser explotable en contratos que se habían defendido explícitamente de ella.

Por qué este caso es distinto en su naturaleza

Casi todos los incidentes de este registro implican un defecto que, en principio, un revisor podría haber encontrado leyendo el código. Este no. Un revisor que leyera el código fuente en Vyper confirmaría que el cerrojo estaba presente y correctamente aplicado, y se equivocaría sobre el comportamiento desplegado sin culpa alguna por su parte.

Eso desplaza la frontera de confianza. El compilador, y su versión concreta, forman parte de aquello en lo que hay que confiar. Cualquier proyecto que despliegue contratos compilados hereda la corrección de su cadena de herramientas, se haya parado alguien a pensarlo o no.

La comprobación que merece la pena hacer

Para cualquier contrato en Vyper al que estés expuesto, la pregunta es qué versión del compilador produjo el bytecode desplegado y si esa versión figura en la lista de afectadas que publicó el proyecto Vyper. Los metadatos de versión quedan registrados en el despliegue y son verificables con independencia de lo que afirme el proyecto.

Cronología

Solo se añade. Las correcciones se incorporan como su propia entrada fechada; las entradas anteriores nunca se reescriben.

  1. Varios pools de Curve son explotados mediante reentrada. Curve confirma el incidente e identifica las versiones del compilador Vyper implicadas. Curve Finance
  2. Curve y Vyper publican la lista de versiones afectadas del compilador para que otros proyectos puedan comprobar sus propios despliegues. Curve Finance

Qué comprobar

Tanto el proyecto Vyper como Curve publicaron qué versiones del compilador estaban afectadas. La comprobación que importa para cualquier contrato en Vyper es qué versión del compilador produjo el bytecode desplegado.

Conisec no aloja ni enlaza herramientas de recuperación, revocación o «comprobación». Tras un incidente público, los atacantes siembran habitualmente ese tipo de enlaces usando los nombres de las publicaciones que cubren la noticia. Usa el canal oficial del propio proyecto afectado, enlazado más arriba, y nada más.

Fuentes

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

No es asesoramiento. Esto es un resumen de hechos publicados, no asesoramiento jurídico, fiscal ni de seguridad. Verifícalo con las fuentes primarias enlazadas más arriba.

Última verificación por Conisec Staff.

Sigue explorando