Nanopb does not release memory on error return when using PB_DECODE_DELIMITED
Key facts
- Attack vector
- Network
- Privileges required
- Low
- User interaction
- None
- Attack complexity
- Low
- Impact type
- Denial of service
- Confidentiality · integrity · availability
- None · None · Low
- Fix status
- Fixed
Attack profile from CVSS 3.1 · CNA. Fix status from CNA. Impact type from CWE-401.
Summary
Nanopb is a small code-size Protocol Buffers implementation. When the compile time option PB_ENABLE_MALLOC is enabled, the message contains at least one field with FT_POINTER field type, custom stream callback is used with unknown stream length. and the pb_decode_ex() function is used with flag PB_DECODE_DELIMITED, then the pb_decode_ex() function does not automatically call pb_release(), like is done for other failure cases. This could lead to memory leak and potential denial-of-service. This vulnerability is fixed in 0.4.9.1.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- None
- Automatable
- No
- Technical impact
- Partial
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
Remediation
- Fix · CNA nanopb (nanopb) Fixed in 0.4.9.1
Vendor assessments
Timeline
- 2026-10-02 Threatist record created from CVE-2024-53984
References
More nanopb vulnerabilities
- TI-2014-08406 Nanopb before 0.3.1 allows size_t overflows in pb_dec_bytes and pb_dec_string. CVSS 3.1CRITICAL 9.8
- TI-2020-04291 Out-of-memory condition in Nanopb is potentially exploitable CVSS 3.1CRITICAL 9.8
- TI-2020-16064 Memory leak in nanopb CVSS 3.1HIGH 7.5
- TI-2021-04499 Invalid free() call in Nanopb CVSS 3.1HIGH 7.1
Sources
- CVE-2024-53984 · CVE Program
- CVE-2024-53984 · NVD
- FIRST EPSS
- CVE-2024-53984 · Red Hat security data · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences