Description
Vyper 0.3.4 through 0.5.0b1 computes the remaining blueprint size in create_from_blueprint by uint256 subtraction without first checking that code_offset is below the blueprint's code size, so a huge offset wraps to a small positive value. An attacker controlling code_offset can make a factory deploy contracts with no runtime code, potentially trapping ETH and tokens.
Published: 2026-10-21
Score: 6.3 Medium
EPSS: < 1% Very Low
KEV: No
Impact: Financial Loss
Action: Immediate Patch
AI Analysis

Impact

Vyper 0.3.4 through 0.5.0b1 contain a vulnerability in create_from_blueprint where the remaining blueprint size is calculated with unchecked uint256 subtraction; an attacker manipulating code_offset beyond the blueprint size triggers an unsigned wraparound that yields a small positive adjustment, causing the factory to deploy a contract with no runtime bytecode so that any ETH or tokens sent to the dead contract are trapped – a classic Unsigned Wraparound flaw (CWE‑681) that can result in financial loss for legitimate users.

Affected Systems

Vyper 0.3.4 through 0.5.0b1 are affected; any factory using create_from_blueprint in these releases is at risk.

Risk and Exploitability

The CVSS score of 6.3 indicates a moderate threat level, and the EPSS score of <1 % shows a very low likelihood of widespread exploitation in the current landscape. Based on the description, it is inferred that the attack vector is that an attacker controlling the code_offset parameter can exploit the unchecked subtraction to cause a wraparound. Once such control is achieved, the attacker can deploy contracts that contain no runtime bytecode, enabling the capture of ETH and tokens sent to those contracts. The vulnerability remains on public Ethereum networks, making it accessible to anyone capable of interacting with a susceptible factory contract.

Generated by OpenCVE AI on October 21, 2026 at 18:07 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade Vyper to a release newer than 0.5.0b1 that includes the create_from_blueprint fix
  • Modify or audit factory contracts to validate code_offset against the blueprint size before calling create_from_blueprint
  • Implement runtime checks to ensure deployed contracts contain non‑empty bytecode and monitor for abnormal zero‑code deployments

Generated by OpenCVE AI on October 21, 2026 at 18:07 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Thu, 22 Oct 2026 12:30:00 +0000

Type Values Removed Values Added
References
Metrics threat_severity

None

threat_severity

Moderate


Wed, 21 Oct 2026 00:45:00 +0000

Type Values Removed Values Added
Description Vyper 0.3.4 through 0.5.0b1 computes the remaining blueprint size in create_from_blueprint by uint256 subtraction without first checking that code_offset is below the blueprint's code size, so a huge offset wraps to a small positive value. An attacker controlling code_offset can make a factory deploy contracts with no runtime code, potentially trapping ETH and tokens.
Title Vyper 0.3.4 through 0.5.0b1 create_from_blueprint Offset Validation Bypass via Unsigned Wraparound
First Time appeared Vyperlang
Vyperlang vyper
Weaknesses CWE-681
CPEs cpe:2.3:a:vyperlang:vyper:*:*:*:*:*:*:*:*
Vendors & Products Vyperlang
Vyperlang vyper
References
Metrics cvssV3_1

{'score': 4.8, 'vector': 'CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:L'}

cvssV4_0

{'score': 6.3, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:L/VA:L/SC:N/SI:N/SA:N'}


cve-icon MITRE

Status: PUBLISHED

Assigner: VulnCheck

Published:

Updated: 2026-10-27T21:58:34.645Z

Reserved: 2026-10-20T21:48:58.503Z

Link: CVE-2026-114118

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Deferred

Published: 2026-10-21T01:17:38.213

Modified: 2026-10-27T22:17:25.597

Link: CVE-2026-114118

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-10-21T00:37:15Z

Links: CVE-2026-114118 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-10-22T10:45:03Z

Weaknesses
  • CWE-681

    Incorrect Conversion between Numeric Types