{"id":"CVE-2020-5235","aliases":["EUVD-2020-26456","GHSA-6f6v-26gj-6crp","GHSA-gcx3-7m76-287p","openSUSE-SU-2024:11074-1"],"status":"published","title":"Out-of-memory condition in Nanopb is potentially exploitable","description":"There is a potentially exploitable out of memory condition In Nanopb before 0.4.1, 0.3.9.5, and 0.2.9.4. When nanopb is compiled with PB_ENABLE_MALLOC, the message to be decoded contains a repeated string, bytes or message field and realloc() runs out of memory when expanding the array nanopb can end up calling `free()` on a pointer value that comes from uninitialized memory. Depending on platform this can result in a crash or further memory corruption, which may be exploitable in some cases. This problem is fixed in nanopb-0.4.1, nanopb-0.3.9.5, nanopb-0.2.9.4.","severity":{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:L/A:L","level":"medium","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-09","score":0.01726,"percentile":0.7771,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":false},"cwes":["CWE-125"],"published":"2020-02-04T03:00:18Z","modified":"2026-10-20T14:14:07Z","affected":[{"source":"osv","ecosystem":"openSUSE:Tumbleweed","package":"nanopb","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.4.5-1.3"}]}],"bundled":3}],"products":[{"vendor":"nanopb","product":"nanopb"},{"vendor":"nanopb_project","product":"nanopb"}],"references":[{"url":"https://github.com/nanopb/nanopb/security/advisories/GHSA-gcx3-7m76-287p","tags":["x_refsource_CONFIRM","x_transferred","Patch","Third Party Advisory","fix"]},{"url":"https://github.com/nanopb/nanopb/commit/45582f1f97f49e2abfdba1463d1e1027682d9856","tags":["x_refsource_MISC","x_transferred","Patch","Third Party Advisory","fix"]},{"url":"https://github.com/nanopb/nanopb/commit/7b396821ddd06df8e39143f16e1dc0a4645b89a3","tags":["x_refsource_MISC","x_transferred","Patch","Third Party Advisory","fix"]},{"url":"https://github.com/nanopb/nanopb/commit/aa9d0d1ca78d6adec3adfeecf3a706c7f9df81f2","tags":["x_refsource_MISC","x_transferred","Patch","Third Party Advisory","fix"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2020-5235"},{"url":"https://github.com/advisories/GHSA-6f6v-26gj-6crp"},{"url":"","tags":["advisory"]},{"url":"https://www.suse.com/security/cve/CVE-2020-26243","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2020-5235","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-21401","tags":["web"]}],"sources":{"cve":[{"id":"CVE-2020-5235","title":"Out-of-memory condition in Nanopb is potentially exploitable","description":"There is a potentially exploitable out of memory condition In Nanopb before 0.4.1, 0.3.9.5, and 0.2.9.4. When nanopb is compiled with PB_ENABLE_MALLOC, the message to be decoded contains a repeated string, bytes or message field and realloc() runs out of memory when expanding the array nanopb can end up calling `free()` on a pointer value that comes from uninitialized memory. Depending on platform this can result in a crash or further memory corruption, which may be exploitable in some cases. This problem is fixed in nanopb-0.4.1, nanopb-0.3.9.5, nanopb-0.2.9.4.","status":"published","published":"2020-02-04T03:00:18Z","modified":"2024-08-04T08:22:09.04Z","cvss":[{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:L/A:L","level":"medium","assessor":"cna"}],"cwes":["CWE-125"],"updated_at":"2026-11-02T14:35:47.56691Z"}],"euvd":[{"id":"EUVD-2020-26456","description":"There is a potentially exploitable out of memory condition In Nanopb before 0.4.1, 0.3.9.5, and 0.2.9.4. When nanopb is compiled with PB_ENABLE_MALLOC, the message to be decoded contains a repeated string, bytes or message field and realloc() runs out of memory when expanding the array nanopb can end up calling `free()` on a pointer value that comes from uninitialized memory. Depending on platform this can result in a crash or further memory corruption, which may be exploitable in some cases. This problem is fixed in nanopb-0.4.1, nanopb-0.3.9.5, nanopb-0.2.9.4.","status":"published","published":"2020-02-04T03:00:18Z","modified":"2024-08-04T08:22:09Z","cvss":[{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:L/A:L","level":"medium"}],"updated_at":"2026-11-03T03:08:07.28588Z"}],"ghsa":[{"id":"GHSA-6f6v-26gj-6crp","title":"There is a potentially exploitable out of memory condition In Nanopb before 0.4.1, 0.3.9.5, and 0...","description":"There is a potentially exploitable out of memory condition In Nanopb before 0.4.1, 0.3.9.5, and 0.2.9.4. When nanopb is compiled with PB_ENABLE_MALLOC, the message to be decoded contains a repeated string, bytes or message field and realloc() runs out of memory when expanding the array nanopb can end up calling `free()` on a pointer value that comes from uninitialized memory. Depending on platform this can result in a crash or further memory corruption, which may be exploitable in some cases. This problem is fixed in nanopb-0.4.1, nanopb-0.3.9.5, nanopb-0.2.9.4.","status":"published","published":"2022-05-24T17:07:58Z","modified":"2023-01-29T05:01:18Z","updated_at":"2026-11-02T14:44:46.934337Z"}],"nvd":[{"id":"CVE-2020-5235","description":"There is a potentially exploitable out of memory condition In Nanopb before 0.4.1, 0.3.9.5, and 0.2.9.4. When nanopb is compiled with PB_ENABLE_MALLOC, the message to be decoded contains a repeated string, bytes or message field and realloc() runs out of memory when expanding the array nanopb can end up calling `free()` on a pointer value that comes from uninitialized memory. Depending on platform this can result in a crash or further memory corruption, which may be exploitable in some cases. This problem is fixed in nanopb-0.4.1, nanopb-0.3.9.5, nanopb-0.2.9.4.","status":"published","published":"2020-02-04T03:15:10.657Z","modified":"2026-06-17T03:21:04.997Z","cvss":[{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:L/A:L","level":"medium","assessor":"secondary"},{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical","assessor":"primary"},{"version":"2.0","score":7.5,"vector":"AV:N/AC:L/Au:N/C:P/I:P/A:P","level":"high","assessor":"primary"}],"cwes":["CWE-125"],"updated_at":"2026-11-02T14:05:53.837808Z"}],"osv":[{"id":"CVE-2020-5235","description":"There is a potentially exploitable out of memory condition In Nanopb before 0.4.1, 0.3.9.5, and 0.2.9.4. When nanopb is compiled with PB_ENABLE_MALLOC, the message to be decoded contains a repeated string, bytes or message field and realloc() runs out of memory when expanding the array nanopb can end up calling `free()` on a pointer value that comes from uninitialized memory. Depending on platform this can result in a crash or further memory corruption, which may be exploitable in some cases. This problem is fixed in nanopb-0.4.1, nanopb-0.3.9.5, nanopb-0.2.9.4.","status":"published","published":"2020-02-04T03:15:10.657Z","modified":"2026-10-20T14:14:07.422675825Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"updated_at":"2026-11-02T15:44:16.936975Z"},{"id":"openSUSE-SU-2024:11074-1","title":"libprotobuf-nanopb0-0.4.5-1.3 on GA media","description":"These are all security issues fixed in the libprotobuf-nanopb0-0.4.5-1.3 package on the GA media of openSUSE Tumbleweed.","status":"published","published":"2024-06-15T00:00:00Z","modified":"2026-02-04T02:52:40.75074Z","updated_at":"2026-11-02T16:58:34.894275Z"}]}}
