CVE-2021-48018
highpriority · track · 30EPSS 0.004 · 33 %ileUSEPSS · scored 2026-10-26
Vyper from 0.2.13 before 0.2.15 allocates storage slots for @nonreentrant reentrancy locks at the same locations as contract storage variables. When a function using @nonreentrant is called, setting the lock overwrites the overlapping storage variable, corrupting contract state and breaking the contract's intended logic.
cvss
Technical severity, 0–10. One row per scoring source.
base score 0–10 · higher = more severe · hover a vector to decode⚠ sources disagree · medium–high · 4.9–8.3
ssvc
A stakeholder decision — act, attend, or track — from exploitation and impact.
weaknesses
The CWE weakness classes this flaw belongs to.
affected products (1)
Products and version ranges known to be affected.
advisories (1)
Vendor and ecosystem advisories describing this.
- GHSA-7f92-rr6w-cq64Storage corruption due to variables overwritten by re-entrancy locks2021-08-05ghsa · osvUS
### Background When attempting to use the v0.2.14 release, @pandadefi discovered an issue using the `@nonreentrant` decorator. ### Impact Reentrancy protection storage slots get allocated to the same slots as storage variables, leading to the corruption of storage variables when using the `@nonreentrant` decorator. ### Patches This issue was fixed in v0.2.15 in #2391, #2379 ### Workarounds Don't use the `@nonreentrant` decorator in these versions.
sources
Which sources assert this record, and when.
references (2) nvd
External citations — patches, advisories, analysis.
Attackers weaponise vulnerabilities like this against internet-exposed services. See what is exposed on your perimeter with a free passive scan.
Free scan