CVE-2024-24563 in Vyperinformación

Resumen

por VulDB • 2026-06-29

Vyper es un lenguaje de contratos inteligentes con sintaxis similar a Python para la Máquina Virtual de Ethereum (EVM). Los arrays pueden tener como clave un entero con signo (`signed integer`), aunque están definidos únicamente para enteros sin signo (`unsigned integers`). El verificador de tipos no genera errores al detectar el uso de `int` como índice de un array. El verificador permite que se utilicen enteros con signo como índices en arrays. La vulnerabilidad está presente en diferentes formas en todas las versiones, incluyendo la `0.3.10`. Para los valores `int`, se utiliza la representación en complemento a dos (2's complement). Dado que el array fue declarado de tamaño muy grande, la comprobación de límites pasará; los valores negativos simplemente se representarán como números muy grandes. A fecha de publicación, no existe una versión corregida.

Existen tres clases potenciales de vulnerabilidad: comportamiento impredecible, acceso a elementos inaccesibles y denegación de servicio (DoS).

Clase 1: Si es posible indexar un array con un entero negativo sin que se produzca una reversión (`revert`), lo más probable es que esto no haya sido anticipado por el desarrollador y dichos accesos puedan causar comportamiento impredecible en el contrato.

Clase 2: Si un contrato tiene una invariante en la forma `assert index = x`, esta debería ser verificable. Sin embargo, mediante el uso de índices negativos, se puede burlar dicha comprobación.

Clase 3: Si el índice depende del estado del contrato, esto plantea un riesgo de denegación de servicio. Si el estado del contrato puede manipularse de tal manera que el índice se vea obligado a ser negativo, el acceso al array siempre revertirá (ya que lo más probable es que el array no esté declarado con un tamaño extremadamente grande). Sin embargo, todos estos escenarios son altamente improbables. El comportamiento más probable es una reversión durante la comprobación de límites (`bounds check`).

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

Responsable

GitHub, Inc.

Reservar

2024-01-25

Divulgación

2024-02-07

Moderación

aceptado

Artículo

VDB-253130

CPE

listo

EPSS

0.01539

KEV

no

Actividades

muy bajo

Fuentes

Do you want to use VulDB in your project?

Use the official API to access entries easily!