CVE-2020-26243
Nanopb is a small code-size Protocol Buffers implementation. In Nanopb before versions 0.4.4 and 0.3.9.7, decoding specifically formed message can leak memory if dynamic allocation is enabled and an oneof field contains a static submessage that contains a dynamic field, and the message being decoded contains the submessage multiple times. This is rare in normal messages, but it is a concern when untrusted data is parsed. This is fixed in versions 0.3.9.7 and 0.4.4. The following workarounds are available: 1) Set the option `no_unions` for the oneof field. This will generate fields as separate instead of C union, and avoids triggering the problematic code. 2) Set the type of the submessage field inside oneof to `FT_POINTER`. This way the whole submessage will be dynamically allocated and the problematic code is not executed. 3) Use an arena allocator for nanopb, to make sure all memory can be released afterwards.
EPSS 0.53% · 67.5th percentile
Risk Scores
Affected Products
| Vendor | Product | Versions |
|---|---|---|
| Ubuntu:Pro:20.04:LTS | nanopb | 0, 0.4.1-1 |
Exploit Intelligence
- CIRCL seen: CVE-2020-26243 (circl-sighting)
- https://github.com/nanopb/nanopb/security/advisories/GHSA-85rr-4rh9-hhwh (circl)
- https://github.com/nanopb/nanopb/issues/615 (circl)
- https://github.com/nanopb/nanopb/commit/4fe23595732b6f1254cfc11a9b8d6da900b55b0c (circl)
- https://github.com/nanopb/nanopb/blob/2b48a361786dfb1f63d229840217a93aae064667/CHANGELOG.txt (circl)
Timeline
- Nov 25, 2020 CVE Published
- Nov 25, 2020 PoC Published
- Jan 7, 2021 CVE Updated
- Apr 14, 2021 EPSS Score
- Jun 23, 2021 EPSS Score
- Aug 24, 2021 EPSS Score
- Oct 26, 2021 EPSS Score
- Jan 6, 2022 EPSS Score
- Feb 4, 2022 EPSS Score
- Feb 28, 2022 EPSS Score
- Apr 1, 2022 EPSS Score
- May 1, 2022 EPSS Score
References
- https://ubuntu.com/security/CVE-2020-26243 third-party-advisory
- https://github.com/nanopb/nanopb/security/advisories/GHSA-85rr-4rh9-hhwh third-party-advisory
- https://github.com/nanopb/nanopb/commit/edf6dcbffee4d614ac0c2c1b258ab95185bdb6e9 third-party-advisory
- https://github.com/nanopb/nanopb/issues/615 third-party-advisory
- https://github.com/nanopb/nanopb/blob/2b48a361786dfb1f63d229840217a93aae064667/CHANGELOG.txt third-party-advisory
- https://github.com/nanopb/nanopb/commit/4fe23595732b6f1254cfc11a9b8d6da900b55b0c third-party-advisory
- https://ubuntu.com/security/notices/USN-6121-1 vendor-advisory
- https://www.cve.org/CVERecord?id=CVE-2020-26243 third-party-advisory