IT SBIT Services
Schneeberger
DEEN
CVE tracker

Vyper: Name shadowing of imported constants and default arguments

CVE-2026-114663High 8.6

← All vulnerabilities

Summary

Vyper versions 0.4.0b1 through 0.5.0b1 resolve names of imported constants and omitted default arguments in the scope of the calling function. If a parameter, local or loop variable has the same name, it can silently replace the intended value, including values outside the range of narrow types such as uint8. An attacker who controls such input can corrupt validation or accounting logic in a smart contract. Exploitation requires a matching name and an expression that cannot be folded at compile time.

Affected

  • Vyper 0.4.0b1 through 0.5.0b1 (CVE record and VulnCheck)
  • The GitHub advisory lists 0.4.0b1 and later up to master at commit 17e925db (not verified)

Fixed in

Unknown. No patched version is confirmed in the sources.

Workaround

  • Use literal or fully folded values instead of unfoldable constants
  • Avoid parameter, local and loop variable names that match names used in imported modules
  • Pass a qualified immutable explicitly to avoid default capture

Qualifying an unfoldable constant alone is not sufficient.

Exploitation

  • CISA SSVC: exploitation none, not automatable, total technical impact
  • Not marked as known exploited
  • VulDB reports no available exploit

Our recommendation

  • Check whether your organisation or its clients develop, audit or host Vyper-based smart contracts; if not, no action needed beyond monitoring
  • Avoid name collisions between contract variables and imported constants or default arguments
  • Once a patched release appears, rebuild and re-verify compiled contracts that import modules, and review deployed contracts that handle validation or accounting

Public exploits

PoC-in-GitHub, Metasploit and Exploit-DB list nothing for this CVE.

Research sources

Researched and written up in English and German by an AI (Claude by Anthropic) based on NVD, CISA, EPSS and the sources listed. The vendor information is authoritative. Researched on 1 Nov 2026, 07:17.

Original description (NVD)

Vyper 0.4.0b1 through 0.5.0b1 miscompiles unfoldable constants and omitted default arguments from imported modules, because parse_Name resolves their names in the using function's scope rather than at declaration. When a contract's parameter, local, or loop variable shares such a name, attacker-influenced input can replace the intended value, including out-of-range values for narrow types such as uint8, corrupting validation or accounting logic.

NVD references (2)

Sources

The tracker combines official, freely usable data sources – updated continuously:

This product uses data from the NVD API but is not endorsed or certified by the NVD. EPSS data © FIRST.org.

Affected? We can help.

We check whether your systems are affected, install updates and close the gap – continuously with the System Health Checker if you wish.