All vulnerabilities
CVE-2021-48018GHSA-7f92-rr6w-cq64

Vyper 0.2.13 before 0.2.15 Storage Corruption via @nonreentrant Decorator

vyperlang vyperPyPILibraries & packages
CVSS
8.3High
ExploitationNo known exploitationNot in CISA KEV, which does not prove it is unexploitedCISA KEV
Exploit odds (EPSS)0.32%Chance of exploitation activity in the next 30 days, higher than 23% of CVEs. Scored 23 Oct 2026FIRST EPSS
Fixed in0.2.15Fixed versionCVE List
Published21 Oct 2026Updated 23 Oct 2026CVE List

What fixes it

  • 0.2.15vyperCVE List
  • 0.2.15vyper, PyPIOSVpip install "vyper>=0.2.15"

A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.

Description

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.

Text from CVE List

Affected versions 5

  • vyperaffected: 0.2.13 before 0.2.15CVE List
  • vyperunaffected: 0.2.15CVE List
  • vyper, PyPIfrom 0.2.13, fixed in 0.2.15OSV
  • vyper, PyPI0.2.13OSV
  • vyper, PyPI0.2.14OSV

References 2