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.
{ "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" } ] }
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.