CVE-2023-34449 json
ink! vulnerable to incorrect decoding of storage value when using `DelegateCall`
published 2023-06-14 3 y ago modified 2026-09-10 1 mo ago also GHSA-853p-5678-hv8f , EUVD-2023-1743
- cvss
- 5.3
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 1.0%
- EPSS 1.0% chance of exploitation in 30 days, percentile 62%
- public exploits
- 0
- none known
Summary
ink! is an embedded domain specific language to write smart contracts in Rust for blockchains built on the Substrate framework. Starting in version 4.0.0 and prior to version 4.2.1, the return value when using delegate call mechanics, either through `CallBuilder::delegate` or `ink_env::invoke_contract_delegate`, is decoded incorrectly. This bug was related to the mechanics around decoding a call's return buffer, which was changed as part of pull request 1450. Since this feature was only released in ink! 4.0.0, no previous versions are affected. Users who have an ink! 4.x series contract should upgrade to 4.2.1 to receive a patch.
Patch / fix
- crates.io ink 4.2.1
- crates.io ink_env 4.2.1
- parity ink! 4.2.1
CISA SSVC
- Exploitation
- Proof of concept is public
- Automatable
- yes
- Technical impact
- partial
- Assessed
- 22 mo ago
Exploit prediction
0.97% chance of exploitation in the next 30 days, higher than 62% of all scored CVEs (FIRST EPSS, 2026-11-08).
Exploits and checks
- github.com https://github.com/paritytech/ink/security/advisories/GHSA-853p-5678-hv8f referenced PoC, tagged "exploit" by a source, unverified
- docs.rs https://docs.rs/ink_env/4.2.0/ink_env/call/struct.CallBuilder.html#method.delegate referenced PoC, tagged "exploit" by a source, unverified
- docs.rs https://docs.rs/ink_env/4.2.0/ink_env/fn.invoke_contract_delegate.html referenced PoC, tagged "exploit" by a source, unverified
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 3.1 | 5.3 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N |
| NVD | 3.1 | 5.3 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N |
| GitHub | 3.1 | 5.3 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| crates.io | ink | >=4.0.0, <4.2.1 |
4.2.1 |
| crates.io | ink_env | >=4.0.0, <4.2.1 |
4.2.1 |
Affected products
- paritytech ink
Classification
References
-
github.com
/paritytech/ink/pull/1450
web, patch, vendor-advisory
-
github.com
/paritytech/ink/commit/f1407ee9f87e5f64d467a22d26ee88f61db7f3db
web, patch
-
github.com
/paritytech/ink/security/advisories/GHSA-853p-5678-hv8f
web, exploit, patch, vendor-advisory
-
docs.rs
/ink_env/4.2.0/ink_env/call/struct.CallBuilder.html#method.delegate
web, exploit, third-party-advisory
-
docs.rs
/ink_env/4.2.0/ink_env/fn.invoke_contract_delegate.html
web, exploit, third-party-advisory
-
nvd.nist.gov
/vuln/detail/CVE-2023-34449
advisory
-
github.com
/paritytech/ink
package
Sources
- CVE List CVE-2023-34449
- GitHub Advisory GHSA-853p-5678-hv8f
- NVD CVE-2023-34449
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.