Bug 2558736 (CVE-2026-114663)

Summary: CVE-2026-114663 vyper: Vyper: Contract logic corruption via improper name resolution of imported constants
Product: [Other] Security Response Reporter: OSIDB Bzimport <bzimport>
Component: vulnerabilityAssignee: Product Security DevOps Team <prodsec-dev>
Status: NEW --- QA Contact:
Severity: high Docs Contact:
Priority: high    
Version: unspecifiedKeywords: Security
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: ---
Doc Text:
A flaw was found in Vyper. The compiler incorrectly resolves imported constants and default arguments within a function's local scope rather than at their original declaration. If a smart contract uses a local variable or parameter that shares a name with an imported identifier, an attacker interacting with the contract can override intended constant values with arbitrary input. This issue can lead to bypassed security validation and corrupted accounting logic in affected smart contracts.
Story Points: ---
Clone Of: Environment:
Last Closed: Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 2559184, 2559185, 2559186    
Bug Blocks:    

Description OSIDB Bzimport 2026-10-22 02:02:56 UTC
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.