CVE-2025-27105 AugAssign evaluation order causing OOB write within the object in Vyper

Low 2.3 Published Updated

Attackers can exploit an out-of-bounds write in Vyper compiler to execute arbitrary code or modify data in smart contracts.

Exploited in the wild
Not known
Login needed
Any signed-in user
Attackable
Over the internet
Victim action needed
Not needed
Fix
Available

What is CVE-2025-27105?

CVE-2025-27105 is a low-severity memory corruption vulnerability in vyperlang vyper, published on 21 Feb 2025. Any signed-in user can exploit it over the network, with no action from the victim.

Official description

vyper is a Pythonic Smart Contract Language for the EVM. Vyper handles AugAssign statements by first caching the target location to avoid double evaluation. However, in the case when target is an access to a DynArray and the rhs modifies the array, the cached target will evaluate first, and the bounds check will not be re-evaluated during the write portion of the statement. This issue has been addressed in version 0.4.1 and all users are advised to upgrade. There are no known workarounds for this vulnerability.

Weakness: CWE-787

Which versions are affected by CVE-2025-27105?

3 open source packages ship an affected version, including vyper. It affects 1 product.

PackageAffectedFixed in
vyper PyPIAll versions0.4.1
vyper PyPIAll versions0.4.1
vyper PyPIAll versions0.4.1

Products include Vyperlang Vyper.

How do I fix CVE-2025-27105?

Upgrade vyper to 0.4.1 or later.

Upgrade to the fixed version. Memory-safe languages, compiler hardening and fuzzing prevent most new cases. More about Memory corruption.

Is CVE-2025-27105 being exploited?

There is no known exploitation of CVE-2025-27105 in the wild and no public exploit code.

Sources

Also known as GHSA-4w26-8p97-f4jp, PYSEC-2025-31.

Is CVE-2025-27105 in your software?

Upload an SBOM and sbomify checks it against every vulnerability here, every day.

Check your SBOMs for free