Media

Vyper: Return inside for loop more than 1 level deep

  • Publicada: 06.10.2026
  • Actualizado: 11.10.2026 15:18

VVE-2020-0002

Earlier today, we received a responsible disclosure of a potential issue from @michwill (developer of @curvefi) for Vyper users who use return statements inside for loops of nested internal calls. Returning inside a for loop causes an invalid jump dest, reverting the transaction unnecessarily.

MWE:

python
@internal
def _baz():
    for i in range(1):
        return  # Stack underflow happens here

@internal
def _bar():
    self._baz()

@external
def foo():
    self._bar()

Impact

Impact is minor, it is unlikely a user would encounter this problem unless they were working with nested calls, and return statements inside calls. Even in that scenario, you would encounter a revert which should be noticeable with adequate testing. In limited circumstances, this could cause a DoS attack for public contracts under certain conditions.

Patches

Fixed in https://github.com/vyperlang/vyper/pull/2110. Please upgrade to Vyper 0.2.3

Workarounds

Not returning inside a for loop nested 2+ internal calls deep works as is:

python
@internal
def _baz():
    for i in range(1):
        pass
    return  # This works fine

@internal
def _bar():
    self._baz()

@external
def foo():
    self._bar()

For more information

If you have any questions or comments about this advisory:

Software afectado

Haz clic en una tecnología para ver todas sus vulnerabilidades.

PlataformaPaqueteVersiones vulnerablesCorregida en
Python (PyPI) vyper >= 0.1.0b10, < 0.2.3 0.2.3

Referencias

Puntuación CVSS -
Vector CVSS
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N
Debilidad (CWE)
CWE-691
Plataforma
Python (PyPI)
Paquete
vyper
Publicada
06.10.2026
Actualizado
11.10.2026 15:18

Fuentes y licencias

OSV / GitHub Advisory Database - GHSA-vg88-3v92-rjx2 - CC BY 4.0

Historial de vulnerabilidades: vyper

Todas las vulnerabilidades publicadas de este paquete (Python (PyPI)), de la más reciente a la más antigua. Muestra si es un fallo aislado o un paquete que hay que vigilar.

Todas (47) en el archivo
Entradas en total
47
Primera → última
03.2020 10.2026
Sin corrección
5
Explotada en ataques
0

Distribución por gravedad

  • Crítica 3
  • Alta 14
  • Media 20
  • Baja 10

Divulgaciones por año

  1. 2020: 1
  2. 2021: 5
  3. 2022: 4
  4. 2023: 14
  5. 2024: 14
  6. 2025: 6
  7. 2026: 3
Gravedad:
  1. Vyper: Return inside for loop more than 1 level deep esta entrada
    Media ghsa-vg88-3v92-rjx2 >= 0.1.0b10, < 0.2.3 0.2.3
  2. Crítica · 9.8 CVE-2024-24563 < 0.4.0 0.4.0
  3. Crítica · 9.8 CVE-2024-24561 < 0.4.0 0.4.0
  4. Alta · 7.3 CVE-2024-22419 >= 0.3.0, < 0.4.0 0.4.0
  5. Alta · 7.5 CVE-2023-46247 < 0.3.8 0.3.8
  6. Alta · 8.1 CVE-2023-42443 >= 0.3.4, < 0.3.10 0.3.10
  7. Crítica · 8.7 CVE-2023-39363 >= 0.2.15, < 0.3.1 0.3.1
  8. Alta · 7.5 CVE-2023-32058 < 0.3.8 0.3.8
  9. Alta · 7.5 CVE-2023-30837 < 0.3.8 0.3.8
  10. Alta · 7.5 CVE-2023-30629 >= 0.3.1, < 0.3.8 0.3.8
  11. Alta · 7.5 CVE-2022-29255 < 0.3.4 0.3.4
  12. Alta · 7.1 CVE-2022-24788 < 0.3.2 0.3.2
  13. Alta · 7.5 CVE-2022-24787 < 0.3.2 0.3.2
  14. Alta ghsa-7f92-rr6w-cq64 >= 0.2.13, < 0.2.15 0.2.15

Identifica las vulnerabilidades de tu aplicación

Con la integración de DockRay y el inventario de software activado, DockRay compara las versiones notificadas de los componentes con las vulnerabilidades conocidas y avisa de las coincidencias confirmadas. La cobertura depende de la tecnología compatible y de los avisos disponibles.

Conectar tu aplicación
Newsletter DockRay

La seguridad de tus aplicaciones en tu correo

Vulnerabilidades importantes, recomendaciones concretas y consejos prácticos para tus aplicaciones. Elige tus tecnologías y sigue lo que importa para tu proyecto.

  • Un resumen diario de nuevas vulnerabilidades, también las críticas.
  • Avisos sobre actualizaciones importantes.
  • Consejos prácticos sobre seguridad y monitorización de aplicaciones.

Déjalo vacío para recibir avisos de todas las tecnologías.

Suscripción gratuita. Date de baja con un clic en cualquier correo.