Vulnerability Details : CVE-2022-29219
Lodestar is a TypeScript implementation of the Ethereum Consensus specification. Prior to version 0.36.0, there is a possible consensus split given maliciously-crafted `AttesterSlashing` or `ProposerSlashing` being included on-chain. Because the developers represent `uint64` values as native javascript `number`s, there is an issue when those variables with large (greater than 2^53) `uint64` values are included on chain. In those cases, Lodestar may view valid_`AttesterSlashing` or `ProposerSlashing` as invalid, due to rounding errors in large `number` values. This causes a consensus split, where Lodestar nodes are forked away from the main network. Similarly, Lodestar may consider invalid `ProposerSlashing` as valid, thus including in proposed blocks that will be considered invalid by the network. Version 0.36.0 contains a fix for this issue. As a workaround, use `BigInt` to represent `Slot` and `Epoch` values in `AttesterSlashing` and `ProposerSlashing` objects. `BigInt` is too slow to be used in all `Slot` and `Epoch` cases, so one may carefully use `BigInt` just where necessary for consensus.
Vulnerability category: Overflow
Products affected by CVE-2022-29219
- cpe:2.3:a:chainsafe:lodestar:*:*:*:*:*:*:*:*
Exploit prediction scoring system (EPSS) score for CVE-2022-29219
0.07%
Probability of exploitation activity in the next 30 days
EPSS Score History
~ 30 %
Percentile, the proportion of vulnerabilities that are scored at or less
CVSS scores for CVE-2022-29219
Base Score | Base Severity | CVSS Vector | Exploitability Score | Impact Score | Score Source | First Seen |
---|---|---|---|---|---|---|
5.0
|
MEDIUM | AV:N/AC:L/Au:N/C:N/I:P/A:N |
10.0
|
2.9
|
NIST | |
7.5
|
HIGH | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N |
3.9
|
3.6
|
NIST | |
7.5
|
HIGH | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N |
3.9
|
3.6
|
GitHub, Inc. |
CWE ids for CVE-2022-29219
-
The product performs a calculation that can produce an integer overflow or wraparound when the logic assumes that the resulting value will always be larger than the original value. This occurs when an integer value is incremented to a value that is too large to store in the associated representation. When this occurs, the value may become a very small or negative number.Assigned by: security-advisories@github.com (Primary)
References for CVE-2022-29219
-
https://github.com/ChainSafe/lodestar/releases/tag/v0.36.0
Release Release v0.36.0 · ChainSafe/lodestar · GitHubRelease Notes;Third Party Advisory
-
https://github.com/ChainSafe/lodestar/pull/3977
Reorg uint variables by dapplion · Pull Request #3977 · ChainSafe/lodestar · GitHubPatch;Third Party Advisory
-
https://github.com/ChainSafe/lodestar/security/advisories/GHSA-cvj7-5f3c-9vg9
AttesterSlashing number overflow · Advisory · ChainSafe/lodestar · GitHubPatch;Third Party Advisory
Jump to