Read the docs
TI-2021-22761 Aliases CVE-2021-48018

Storage corruption in Vyper through @nonreentrant lock slots

Priority LOW 36CWE-787Published · Updated

Key facts

Attack vector
Network
Privileges required
None
User interaction
None
Attack complexity
Low
Attack requirements
Present
Impact type
—
Confidentiality · integrity · availability
None · High · High
Fix status
Fixed

Attack profile from CVSS 4.0 · CNA. Fix status from CNA.

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 storage variable, which corrupts contract state (CWE-787). A remote attacker with no privileges and no user interaction can cause high integrity and availability impact on the affected contract.

Written with Claude Haiku 5.5 from the sources below · 2026-11-03

Description from the CNA

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.

Why it matters now

Exploitation None reported CISA SSVC · not in CISA KEV
EPSS 0.00391 33rd percentileScored 2026-11-07
Fix Fixed vyper (vyperlang): 0.2.15

SSVC decision points

CISA ADP · SSVC 2.0.3

Exploitation
None
Automatable
No
Technical impact
Partial

The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.

Affected products

VendorProductAffected versionsFixed inStatusSource
vyperlangvyper0.2.13 to before 0.2.150.2.15Patch availableCNA
  • vyper Vendorvyperlang Affected 0.2.13 to before 0.2.15 Fixed in 0.2.15 Patch available CNA

CPE names Threatist (inferred) · 1

Inferred from how NVD named this product before; not given by a source.

CPEVersionsRoleVendor
cpe:2.3:a:vyperlang:vyper:*:*:*:*:*:*:*:*——vyperlang
  • cpe:2.3:a:vyperlang:vyper:*:*:*:*:*:*:*:* Versions — — ·vyperlang

Remediation

Upgrade Vyper to version 0.2.15 or later, which is the fixed version listed for the affected range.

Written with Claude Haiku 5.5 from the sources below · 2026-11-03

  • Fix · CNA vyper (vyperlang) Fixed in 0.2.15

Vendor assessments

Red Hat

Red Hat's page for this CVE →

Not affected: 1 product
  • Red Hat

Timeline

  1. 2026-10-21 Threatist record created from CVE-2021-48018
  2. 2026-10-22 Priority changed: MEDIUM → LOW
  3. 2026-10-23 CISA SSVC decision points changed
  4. 2026-11-03 Affected versions changed · Red Hat
  5. 2026-11-03 CVSS score added · Red Hat

References

  • TI-2024-16182 Vyper bounds check on built-in `slice()` function can be overflowed CVSS 3.1CRITICAL 9.8
  • TI-2024-14992 concat built-in can corrupt memory in vyper CVSS 3.1CRITICAL 9.8
  • TI-2024-16184 Vyper array negative index vulnerability CVSS 3.1CRITICAL 9.8
  • TI-2022-08657 Integer bounds error in Vyper CVSS 3.1CRITICAL 9.8
  • TI-2022-11796 Multiple evaluation of contract address in call in vyper CVSS 3.1HIGH 8.2
  • TI-2026-78730 Optimizer miscompilation of msg.value | K in Vyper ternary branches CVSS 4.0HIGH 8.2
See all 52 →

Sources