CVE-2021-21405 json
BLS Signature "Malleability"
published 2021-04-15 5 y ago modified 2026-07-08 4 mo ago also GHSA-4g52-pqcj-phvh , GO-2022-0905 , EUVD-2021-0938
- cvss
- 5.9
- 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
Lotus is an Implementation of the Filecoin protocol written in Go. BLS signature validation in lotus uses blst library method VerifyCompressed. This method accepts signatures in 2 forms: "serialized", and "compressed", meaning that BLS signatures can be provided as either of 2 unique byte arrays. Lotus block validation functions perform a uniqueness check on provided blocks. Two blocks are considered distinct if the CIDs of their blockheader do not match. The CID method for blockheader includes the BlockSig of the block. The result of these issues is that it would be possible to punish miners for valid blocks, as there are two different valid block CIDs available for each block, even though this must be unique. By switching from the go based `blst` bindings over to the bindings in `filecoin-ffi`, the code paths now ensure that all signatures are compressed by size and the way they are deserialized. This happened in https://github.com/filecoin-project/lotus/pull/5393.
Patch / fix
- go github.com/filecoin-project/lotus 1.5.0
- filecoin lotus 1.5.0
Exploit prediction
0.98% chance of exploitation in the next 30 days, higher than 62% of all scored CVEs (FIRST EPSS, 2026-11-08).
Exploits and checks
- gist.github.com https://gist.github.com/wadeAlexC/2490d522e81a796af9efcad1686e6754 referenced PoC, tagged "exploit" by a source, unverified
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 3.1 | 5.9 | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N |
| NVD | 3.1 | 7.5 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N |
| NVD | 2.0 | 5.0 | AV:N/AC:L/Au:N/C:N/I:P/A:N |
| GitHub | 3.1 | 5.9 | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| go | github.com/filecoin-project/lotus | <1.5.0 |
1.5.0 |
Affected products
- filecoin-project lotus
Classification
- Weakness
-
- CWE-347 Improper Verification of Cryptographic Signature
References
-
github.com
/filecoin-project/lotus/pull/5393
web, patch, third-party-advisory
-
github.com
/filecoin-project/lotus/security/advisories/GHSA-4g52-pqcj-phvh
web, patch, third-party-advisory, advisory
-
gist.github.com
/wadeAlexC/2490d522e81a796af9efcad1686e6754
web, exploit, third-party-advisory
-
nvd.nist.gov
/vuln/detail/CVE-2021-21405
advisory
Sources
- CVE List CVE-2021-21405
- GitHub Advisory GHSA-4g52-pqcj-phvh
- NVD CVE-2021-21405
- OSV GO-2022-0905
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.