{"id":"GHSA-jfj6-75fj-8934","revision":"e08ca674f6a34fafacdce259f3c4bcea","records":[{"revision":"e08ca674f6a34fafacdce259f3c4bcea","observedAt":"2026-10-24T13:17:17.793+00:00","statement":{"source":"osv","id":"GHSA-jfj6-75fj-8934","aliases":["CVE-2026-59876"],"title":"protobufjs: Text Format string map parsing can mutate returned map object prototype","description":"## Summary\n\nThe protobuf.js text format extension parsed string-keyed map entries using ordinary property assignment. A text-format map entry with key `__proto__` could therefore change the prototype of the returned map object instead of creating an own map entry.\n\nThis affected the optional Text Format extension. Other protobufjs input paths, including binary decode, `fromObject`, and ProtoJSON conversion, are not affected.\n\n## Impact\n\nAn attacker who can provide protobuf text-format input parsed by an application using `protobufjs/ext/textformat` may be able to create message objects whose string-keyed map fields have attacker-controlled prototypes.\n\nThis is per-object prototype mutation, not global `Object.prototype` pollution. Impact depends on downstream application logic treating inherited properties as meaningful, for example by using `in`, truthiness checks, or direct property access on parsed map objects instead of own-property checks.\n\nApplications that do not parse untrusted Text Format input, or that do not use inherited properties from parsed map objects in security-relevant logic, are not directly affected.\n\n## Preconditions\n\n* The application must parse attacker-controlled protobuf Text Format input with `protobufjs/ext/textformat`.\n* The target schema must contain a string-keyed map field.\n* The crafted input must provide a map entry with key `__proto__`.\n* Downstream application logic must treat inherited properties on the returned map object as meaningful for impact beyond malformed output.\n\n## Workarounds\n\nUpgrade to protobufjs 8.6.5 or newer.\n\nIf immediate upgrade is not possible, do not parse untrusted protobuf Text Format input with affected versions. Applications can also reject string map keys named `__proto__` before or during Text Format parsing, and should use own-property checks such as `Object.hasOwnProperty.call(map, key)` when consuming parsed map objects.","state":0,"publishedAt":"2026-07-20T22:04:07+00:00","modifiedAt":"2026-09-10T03:50:12.2692963+00:00","affected":[{"ecosystem":"npm","name":"protobufjs","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"8.2.0"},{"kind":"fixed","version":"8.6.5"}]}],"versions":[],"rawVersionEvidence":null}],"metrics":[{"system":"CVSS_V3","vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:N","score":null,"severity":null},{"system":"Publisher rating","vector":null,"score":null,"severity":"MODERATE"}],"references":["https://github.com/protobufjs/protobuf.js/security/advisories/GHSA-jfj6-75fj-8934","https://nvd.nist.gov/vuln/detail/CVE-2026-59876","https://github.com/protobufjs/protobuf.js/pull/2335","https://github.com/protobufjs/protobuf.js/commit/9f97fe413072d3beb52c74e62d88ea8adc9444d8","https://github.com/protobufjs/protobuf.js","https://github.com/protobufjs/protobuf.js/releases/tag/protobufjs-v8.6.5"],"sourceUrl":"https://github.com/advisories/GHSA-jfj6-75fj-8934","license":"GitHub Advisory Database · CC-BY-4.0","key":"osv:GHSA-jfj6-75fj-8934","identifiers":["GHSA-jfj6-75fj-8934","CVE-2026-59876"]},"retained":false,"historicalAffected":[]}],"coverage":[]}