Mittel

Vyper: Return inside for loop more than 1 level deep

  • Veröffentlicht: 06.10.2026
  • Aktualisiert: 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:

Betroffene Software

Klicken Sie auf eine Technologie, um alle zugehörigen Schwachstellen anzuzeigen.

PlattformPaketAnfällige VersionenBehoben in
Python (PyPI) vyper >= 0.1.0b10, < 0.2.3 0.2.3

Verweise

CVSS-Wert -
CVSS-Vektor
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
Schwäche (CWE)
CWE-691
Plattform
Python (PyPI)
Paket
vyper
Veröffentlicht
06.10.2026
Aktualisiert
11.10.2026 15:18

Quellen und Lizenzen

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

Schwachstellenhistorie: vyper

Alle veröffentlichten Schwachstellen dieses Pakets (Python (PyPI)), neueste zuerst. Zeigt, ob es ein einmaliger Ausrutscher ist oder ein Paket, das man im Auge behalten muss.

Alle (47) im Archiv
Einträge insgesamt
47
Erste → letzte
03.2020 10.2026
Ohne Fix
5
In Angriffen ausgenutzt
0

Verteilung nach Schweregrad

  • Kritisch 3
  • Hoch 14
  • Mittel 20
  • Niedrig 10

Veröffentlichungen pro Jahr

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

Erkennen Sie Schwachstellen in Ihrer Anwendung

Mit der DockRay-Integration und aktivierter Softwareinventarisierung prüft DockRay gemeldete Komponentenversionen auf bekannte Schwachstellen und benachrichtigt Sie über bestätigte Treffer. Die Abdeckung hängt von der unterstützten Technologie und den verfügbaren Meldungen ab.

Anwendung verbinden
DockRay Newsletter

Anwendungssicherheit in Ihrem Postfach

Wichtige Schwachstellen, konkrete Empfehlungen und praktische Tipps für Ihre Anwendungen. Wählen Sie Ihre Technologien und verfolgen Sie, was für Ihr Projekt relevant ist.

  • Eine tägliche Zusammenfassung neuer Schwachstellen, auch kritischer.
  • Benachrichtigungen über wichtige Updates.
  • Praktische Tipps zur Sicherheit und Überwachung von Anwendungen.

Leer lassen, um Meldungen zu allen Technologien zu erhalten.

Kostenlos anmelden. In jeder E-Mail mit einem Klick abmelden.