Bug 2558031 (CVE-2026-114117)

Summary: CVE-2026-114117 vyper: vyper: State corruption and locked funds via optimizer miscompilation
Product: [Other] Security Response Reporter: OSIDB Bzimport <bzimport>
Component: vulnerabilityAssignee: Product Security DevOps Team <prodsec-dev>
Status: NEW --- QA Contact:
Severity: medium Docs Contact:
Priority: medium    
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. A remote attacker can cause smart contracts to execute with incorrect values due to an optimizer miscompilation. When compiling conditional branches containing certain bitwise operations under default optimization settings, the compiler incorrectly reduces the expression to a constant value. Consequently, affected contracts may perform storage writes and financial calculations using improper values without failing or reverting, potentially recording deposits incorrectly and locking funds.
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: 2565622    
Bug Blocks:    

Description OSIDB Bzimport 2026-10-21 01:02:16 UTC
Vyper 0.3.8 through 0.5.0b1 contains an optimizer miscompilation in which (msg.value | K) or (len(msg.data) | K), where K is any nonzero integer literal, is compiled to the constant 1 when used as a ternary expression branch under -O gas (the default) or -O codesize. Affected contracts use the wrong value in storage writes, arithmetic, indexes, return values, or events without warning or revert, which can record deposits incorrectly and lock funds.