---
id: CVE-2021-48018
title: Vyper 0.2.13 before 0.2.15 Storage Corruption via @nonreentrant Decorator
summary: >-
  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 st…
severity: high
cvss: 7.4
cvssVector: 'CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:H'
cvssSource: cna
cwe:
  - CWE-787
vendor: vyperlang
product: vyper
affected:
  - vyper >= 0.2.13 < 0.2.15
published: '2026-10-21'
updated: '2026-10-21'
sourceUpdated: '2026-10-21T00:36:18.265Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2021-48018'
references:
  - url: 'https://github.com/vyperlang/vyper/security/advisories/GHSA-7f92-rr6w-cq64'
    label: GitHub Security Advisory (GHSA-7f92-rr6w-cq64)
  - url: >-
      https://www.vulncheck.com/advisories/vyper-0.2.13-before-0.2.15-storage-corruption-via-nonreentrant-decorator
    label: >-
      VulnCheck Advisory: Vyper 0.2.13 before 0.2.15 Storage Corruption via
      @nonreentrant Decorator
tags:
  - cve.org
ingestedAt: '2026-10-21T01:37:08.048Z'
---

## Overview

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.

## Affected

- `vyper >= 0.2.13 < 0.2.15`

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
