pysec-2023-142
Vulnerability from pysec
Vyer 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.
Name | purl |
---|---|
vyper | pkg:pypi/vyper |
{ affected: [ { package: { ecosystem: "PyPI", name: "vyper", purl: "pkg:pypi/vyper", }, ranges: [ { events: [ { introduced: "0", }, ], type: "ECOSYSTEM", }, ], 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", ], }, ], aliases: [ "CVE-2023-39363", "GHSA-5824-cm3x-3c38", ], details: "Vyer 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.", id: "PYSEC-2023-142", modified: "2023-08-17T03:22:33.953997+00:00", published: "2023-08-07T19:15:00+00:00", references: [ { type: "EVIDENCE", url: "https://github.com/vyperlang/vyper/security/advisories/GHSA-5824-cm3x-3c38", }, { type: "FIX", url: "https://github.com/vyperlang/vyper/security/advisories/GHSA-5824-cm3x-3c38", }, { type: "ADVISORY", url: "https://github.com/vyperlang/vyper/security/advisories/GHSA-5824-cm3x-3c38", }, { type: "EVIDENCE", url: "https://hackmd.io/@LlamaRisk/BJzSKHNjn", }, { type: "WEB", url: "https://hackmd.io/@LlamaRisk/BJzSKHNjn", }, { type: "EVIDENCE", url: "https://hackmd.io/@vyperlang/HJUgNMhs2", }, { type: "WEB", url: "https://hackmd.io/@vyperlang/HJUgNMhs2", }, { type: "FIX", url: "https://github.com/vyperlang/vyper/pull/2514", }, { type: "FIX", url: "https://github.com/vyperlang/vyper/pull/2439", }, ], severity: [ { score: "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N", type: "CVSS_V3", }, ], }
Log in or create an account to share your comment.
This schema specifies the format of a comment related to a security advisory.
Sightings
Author | Source | Type | Date |
---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
- Confirmed: The vulnerability is confirmed from an analyst perspective.
- Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
- Patched: This vulnerability was successfully patched by the user reporting the sighting.
- Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
- Not confirmed: The user expresses doubt about the veracity of the vulnerability.
- Not patched: This vulnerability was not successfully patched by the user reporting the sighting.