{"id":"GHSA-fx83-v9x8-x52w","summary":"protobuf.js: Prototype injection in generated message constructors","details":"## Summary\n\nprotobufjs generated message constructors copied enumerable properties from a provided properties object without filtering the `__proto__` key. If an application constructed a message from an attacker-controlled plain object, an own enumerable `__proto__` property could alter the prototype of that individual message instance.\n\n## Impact\n\nAn attacker who can control the properties object passed to a generated protobufjs message constructor or creation helper may be able to modify the prototype chain of the resulting message instance.\n\nThis is a per-instance prototype injection issue. It does not pollute `Object.prototype` or other global prototypes. The impact depends on downstream application behavior, such as relying on inherited properties, prototype methods, or `instanceof` checks for message objects.\n\nApplications that only decode binary protobuf data, or that construct messages from trusted application-defined objects, are not directly affected by this issue.\n\n## Preconditions\n\n- The application must allow an attacker to control or influence a plain object used to construct a protobufjs message.\n- The object must contain an own enumerable `__proto__` property, for example from parsed JSON input.\n- The application must pass that object to a generated message constructor or creation helper that copies arbitrary enumerable properties.\n\n## Workarounds\n\nDo not pass attacker-controlled plain objects directly to generated message constructors with affected versions. If untrusted JSON input must be accepted, validate or sanitize object keys before constructing messages, and reject `__proto__` properties.","aliases":["CVE-2026-44292"],"modified":"2026-07-17T21:10:23.218453468Z","published":"2026-05-12T15:01:44Z","database_specific":{"cwe_ids":["CWE-1321"],"severity":"MODERATE","github_reviewed":true,"github_reviewed_at":"2026-05-12T15:01:44Z","nvd_published_at":"2026-05-13T16:16:56Z"},"references":[{"type":"WEB","url":"https://github.com/protobufjs/protobuf.js/security/advisories/GHSA-fx83-v9x8-x52w"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-44292"},{"type":"PACKAGE","url":"https://github.com/protobufjs/protobuf.js"},{"type":"WEB","url":"https://github.com/protobufjs/protobuf.js/releases/tag/protobufjs-v7.5.6"},{"type":"WEB","url":"https://github.com/protobufjs/protobuf.js/releases/tag/protobufjs-v8.0.2"}],"affected":[{"package":{"name":"protobufjs","ecosystem":"npm","purl":"pkg:npm/protobufjs"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"7.5.6"}]}],"database_specific":{"last_known_affected_version_range":"\u003c= 7.5.5","source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/05/GHSA-fx83-v9x8-x52w/GHSA-fx83-v9x8-x52w.json"}},{"package":{"name":"protobufjs","ecosystem":"npm","purl":"pkg:npm/protobufjs"},"ranges":[{"type":"SEMVER","events":[{"introduced":"8.0.0"},{"fixed":"8.0.2"}]}],"database_specific":{"last_known_affected_version_range":"\u003c= 8.0.1","source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/05/GHSA-fx83-v9x8-x52w/GHSA-fx83-v9x8-x52w.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N"}]}