CVE-2023-31146 json
Vyper vulnerable to OOB DynArray access when array is on both LHS and RHS of an assignment
published 2023-05-11 3 y ago modified 2026-09-10 1 mo ago also GHSA-3p37-3636-q8wv , PYSEC-2023-77 , EUVD-2023-0270
- cvss
- 9.1
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 1.3%
- EPSS 1.3% chance of exploitation in 30 days, percentile 69%
- public exploits
- 0
- none known
Summary
Vyper is a Pythonic smart contract language for the Ethereum virtual machine. Prior to version 0.3.8, during codegen, the length word of a dynarray is written before the data, which can result in out-of-bounds array access in the case where the dynarray is on both the lhs and rhs of an assignment. The issue can cause data corruption across call frames. The expected behavior is to revert due to out-of-bounds array access. Version 0.3.8 contains a patch for this issue.
Patch / fix
CISA SSVC
- Exploitation
- none
- Automatable
- yes
- Technical impact
- partial
- Assessed
- 21 mo ago
Exploit prediction
1.25% chance of exploitation in the next 30 days, higher than 69% of all scored CVEs (FIRST EPSS, 2026-11-08).
Exploits and checks
- github.com https://github.com/vyperlang/vyper/security/advisories/GHSA-3p37-3636-q8wv referenced PoC, tagged "exploit" by a source, unverified
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 3.1 | 7.5 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N |
| CISA ADP | 3.1 | 9.1 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H |
| NVD | 3.1 | 9.1 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H |
| CNA | 3.1 | 9.1 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H |
| GitHub | 3.1 | 7.5 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| pypi | vyper | <0.3.8 |
0.3.8 |
Affected products
- vyperlang vyper
Classification
- Weakness
-
- CWE-787 Out-of-bounds Write
References
-
github.com
/vyperlang/vyper/commit/4f8289a81206f767df1900ac48f485d90fc87edb
web, patch
-
github.com
/vyperlang/vyper/security/advisories/GHSA-3p37-3636-q8wv
web, exploit, vendor-advisory, advisory
-
nvd.nist.gov
/vuln/detail/CVE-2023-31146
advisory
-
github.com
/pypa/advisory-database/tree/main/vulns/vyper/PYSEC-2023-77.yaml
web
-
github.com
/vyperlang/vyper
package
Sources
- CVE List CVE-2023-31146
- GitHub Advisory GHSA-3p37-3636-q8wv
- NVD CVE-2023-31146
- OSV PYSEC-2023-77
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.