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

Vulnerabilidad en vyper (CVE-2025-27104)

Gravedad CVSS v4.0:
BAJA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
21/02/2025
Última modificación:
28/03/2025

Descripción

vyper es un lenguaje de contrato inteligente Pythonic para EVM. Es posible la evaluación múltiple de una sola expresión en el destino del iterador de un bucle for. Si bien la expresión del iterador no puede producir múltiples escrituras, puede consumir efectos secundarios producidos en el cuerpo del bucle (por ejemplo, leer una variable de almacenamiento actualizada en el cuerpo del bucle) y, por lo tanto, provocar un comportamiento inesperado del programa. Específicamente, las lecturas en iteradores que contienen una ifexp (por ejemplo, `for s: uint256 in ([read(), read()] if True else [])`) pueden intercalar lecturas con escrituras en el cuerpo del bucle. Los bucles for de Vyper permiten dos tipos de destinos de iterador, a saber, el `range()` incorporado y un tipo iterable, como SArray y DArray. Durante la generación de código, se requiere que las listas iterables no produzcan ningún efecto secundario (en el siguiente código, `range_scope` obliga a que `iter_list` se analice en un contexto constante, que se verifica con `is_constant`). Sin embargo, esto no evita que el iterador consuma los efectos secundarios proporcionados por el cuerpo del bucle. Por otro lado, para los SArrays, `iter_list` se instancia en el cuerpo de un iterador `repeat`, por lo que se puede evaluar varias veces. Este problema se está solucionando y se espera que esté disponible en la versión 0.4.1. Se recomienda a los usuarios que actualicen tan pronto como esté disponible la versión parcheada. No se conocen workarounds para esta vulnerabilidad.

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:a:vyperlang:vyper:*:*:*:*:*:python:*:* 0.4.1 (excluyendo)