Instituto Nacional de ciberseguridad. Sección Incibe
Instituto Nacional de Ciberseguridad. Sección INCIBE-CERT

Vulnerabilidad en Vyper (CVE-2024-32481)

Gravedad CVSS v3.1:
MEDIA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
25/04/2024
Última modificación:
05/05/2025

Descripción

Vyper es un lenguaje de contrato inteligente pitónico para la máquina virtual Ethereum. A partir de la versión 0.3.8 y antes de la versión 0.4.0b1, al recorrer un "rango" de la forma "rango (inicio, inicio + N)", si "inicio" es negativo, la ejecución siempre se revertirá. Este problema se debe a una aserción incorrecta insertada durante la generación de código del rango `stmt.parse_For_range()`. El problema surge cuando se firma "start", en lugar de usar "sle", se usa "le" y "start" se interpreta como un entero sin signo para la comparación. Si es un número negativo, su bit 255 se establece en "1" y, por lo tanto, se interpreta como un entero sin signo muy grande, lo que hace que la afirmación siempre falle. Cualquier contrato que tenga un "rango (inicio, inicio + N)" donde "inicio" es un entero con signo con la posibilidad de que "inicio" sea negativo se ve afectado. Si una llamada pasa por el bucle mientras proporciona un "inicio" negativo, la ejecución se revertirá. La versión 0.4.0b1 soluciona el problema.

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:a:vyperlang:vyper:*:*:*:*:*:python:*:* 0.3.8 (incluyendo) 0.3.10 (incluyendo)
cpe:2.3:a:vyperlang:vyper:0.4.0:-:*:*:*:python:*:*