Vulnerability Details : CVE-2021-21401
Potential exploit
Nanopb is a small code-size Protocol Buffers implementation in ansi C. In Nanopb before versions 0.3.9.8 and 0.4.5, decoding a specifically formed message can cause invalid `free()` or `realloc()` calls if the message type contains an `oneof` field, and the `oneof` directly contains both a pointer field and a non-pointer field. If the message data first contains the non-pointer field and then the pointer field, the data of the non-pointer field is incorrectly treated as if it was a pointer value. Such message data rarely occurs in normal messages, but it is a concern when untrusted data is parsed. This has been fixed in versions 0.3.9.8 and 0.4.5. See referenced GitHub Security Advisory for more information including workarounds.
Products affected by CVE-2021-21401
- cpe:2.3:a:nanopb_project:nanopb:*:*:*:*:*:*:*:*
- cpe:2.3:a:nanopb_project:nanopb:*:*:*:*:*:*:*:*
Exploit prediction scoring system (EPSS) score for CVE-2021-21401
0.20%
Probability of exploitation activity in the next 30 days
EPSS Score History
~ 40 %
Percentile, the proportion of vulnerabilities that are scored at or less
CVSS scores for CVE-2021-21401
Base Score | Base Severity | CVSS Vector | Exploitability Score | Impact Score | Score Source | First Seen |
---|---|---|---|---|---|---|
5.5
|
MEDIUM | AV:N/AC:L/Au:S/C:N/I:P/A:P |
8.0
|
4.9
|
NIST | |
7.1
|
HIGH | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:L |
2.8
|
4.2
|
NIST | |
7.1
|
HIGH | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:L |
2.8
|
4.2
|
GitHub, Inc. |
CWE ids for CVE-2021-21401
-
The product attempts to return a memory resource to the system, but it calls the wrong release function or calls the appropriate release function incorrectly.Assigned by: security-advisories@github.com (Primary)
References for CVE-2021-21401
-
https://github.com/nanopb/nanopb/commit/e2f0ccf939d9f82931d085acb6df8e9a182a4261
Fix invalid free() with oneof (#647) · nanopb/nanopb@e2f0ccf · GitHubPatch;Third Party Advisory
-
https://github.com/nanopb/nanopb/issues/647
Ill-formed oneof message leads to calling free on an arbitrary pointer · Issue #647 · nanopb/nanopb · GitHubExploit;Issue Tracking;Third Party Advisory
-
https://github.com/nanopb/nanopb/security/advisories/GHSA-7mv5-5mxh-qg88
Invalid free() call with oneofs and PB_ENABLE_MALLOC · Advisory · nanopb/nanopb · GitHubExploit;Patch;Third Party Advisory
-
https://github.com/nanopb/nanopb/blob/c9124132a604047d0ef97a09c0e99cd9bed2c818/CHANGELOG.txt#L1
nanopb/CHANGELOG.txt at c9124132a604047d0ef97a09c0e99cd9bed2c818 · nanopb/nanopb · GitHubRelease Notes;Third Party Advisory
Jump to