p PatchFirst

CVE-2023-39363

CVE-2023-39363 · Vyper incorrectly allocated named re-entrancy locks

This page contains facts from public vulnerability sources. Check the original advisory before updating.

Vyper is a Pythonic Smart Contract Language for the Ethereum Virtual Machine (EVM). In versions 0.2.15, 0.2.16 and 0.3.0, named re-entrancy locks are allocated incorrectly. Each function using a named re-entrancy lock gets a unique lock regardless of the key, allowing cross-function re-entrancy in contracts compiled with the susceptible versions. A specific set of conditions is required to result in misbehavior of affected contracts, specifically: a `.vy` contract compiled with `vyper` versions `0.2.15`, `0.2.16`, or `0.3.0`; a primary function that utilizes the `@nonreentrant` decorator with a specific `key` and does not strictly follow the check-effects-interaction pattern (i.e. contains an external call to an untrusted party before storage updates); and a secondary function that utilizes the same `key` and would be affected by the improper state caused by the primary function. Version 0.3.1 contains a fix for this issue.

CVSS 9.1 · Critical · EPSS 0.8% · Fix available

Published
Updated

Stack: python

Affected products and versions

  • vyper

    Versions
    • = 0.2.15: Affected
    • = 0.2.16: Affected
    • = 0.3.0: Affected

    No fix published

  • vyper PyPI

    Versions
    • 0.2.15
    • 0.2.16
    • 0.3.0
    Affected ranges
    • ECOSYSTEM: ≥ 0.2.15, < 0.3.1

    Update to 0.3.1

  • vyper PyPI

    Versions
    • 0.1.0b1
    • 0.1.0b10
    • 0.1.0b11
    • 0.1.0b12
    • 0.1.0b13
    • 0.1.0b14
    • 0.1.0b15
    • 0.1.0b16
    • 0.1.0b17
    • 0.1.0b2
    • 0.1.0b3
    • 0.1.0b4
    • 0.1.0b5
    • 0.1.0b6
    • 0.1.0b7
    • 0.1.0b8
    • 0.1.0b9
    • 0.2.1
    • 0.2.10
    • 0.2.11
    • 0.2.12
    • 0.2.13
    • 0.2.14
    • 0.2.15
    • 0.2.16
    • 0.2.2
    • 0.2.3
    • 0.2.4
    • 0.2.5
    • 0.2.6
    • 0.2.7
    • 0.2.8
    • 0.2.9
    • 0.3.0
    • 0.3.1
    • 0.3.2
    • 0.3.3
    • 0.3.4
    • 0.3.5
    • 0.3.6
    • 0.3.7
    • 0.3.8
    • 0.3.9
    • 0.3.10
    • 0.3.10rc1
    • 0.3.10rc2
    • 0.3.10rc3
    • 0.3.10rc4
    • 0.3.10rc5
    • 0.4.0
    • 0.4.0b1
    • 0.4.0b2
    • 0.4.0b3
    • 0.4.0b4
    • 0.4.0b5
    • 0.4.0b6
    • 0.4.0rc1
    • 0.4.0rc2
    • 0.4.0rc3
    • 0.4.0rc4
    • 0.4.0rc5
    • 0.4.0rc6
    • 0.4.1
    • 0.4.1b1
    • 0.4.1b2
    • 0.4.1b3
    • 0.4.1b4
    • 0.4.1rc1
    • 0.4.1rc2
    • 0.4.1rc3
    • 0.4.2
    • 0.4.2rc1
    • 0.4.3
    • 0.4.3rc1
    Affected ranges
    • ECOSYSTEM: (−∞, +∞)

    No fix published

Original sources

Check your server →