{"id":"GHSA-wcpc-wj8m-hjx6","summary":"protobufjs: Denial of service through unbounded Any expansion during JSON conversion","details":"## Summary\n\nprotobufjs could recurse without a depth limit while converting decoded messages to plain objects or JSON. This affected generated `toObject()` conversion and the custom `google.protobuf.Any` JSON conversion path.\n\nA crafted protobuf binary payload containing deeply nested `Any` values could cause the JavaScript call stack to be exhausted during conversion to JSON.\n\n## Impact\n\nAn attacker who can provide protobuf binary data decoded by an application may be able to crash the process or otherwise cause message conversion to fail with a stack overflow.\n\nThis affects applications that decode untrusted protobuf input containing `google.protobuf.Any` values and then convert decoded messages to JSON or plain objects with JSON conversion enabled, for example through `JSON.stringify(message)`, `Message#toJSON()`, or `Type.toObject(message, { json: true })`.\n\nApplications that only decode and re-encode protobuf binary data without converting decoded messages to JSON are not directly affected by this issue.\n\n## Preconditions\n\n* The application must decode protobuf binary data influenced by an attacker.\n* The application schema must include `google.protobuf.Any`, and the referenced `type_url` must resolve to a message type in the loaded protobuf root.\n* The application must convert the decoded message to JSON or a plain object through an affected conversion path.\n* The crafted input must contain deeply nested `Any` values that are expanded during conversion.\n\n## Workarounds\n\nAvoid converting untrusted protobuf messages containing `google.protobuf.Any` values to JSON with affected versions. If immediate upgrade is not possible, reject or limit messages with deeply nested `Any` payloads at an outer protocol boundary where feasible, avoid JSON conversion of untrusted `Any` values, or isolate message conversion in a process that can be safely restarted.","aliases":["CVE-2026-48712"],"modified":"2026-09-10T03:51:09.675279620Z","published":"2026-06-15T17:30:15Z","database_specific":{"github_reviewed":true,"github_reviewed_at":"2026-06-15T17:30:15Z","nvd_published_at":"2026-06-22T18:16:39Z","cwe_ids":["CWE-674"],"severity":"HIGH"},"references":[{"type":"WEB","url":"https://github.com/protobufjs/protobuf.js/security/advisories/GHSA-wcpc-wj8m-hjx6"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-48712"},{"type":"PACKAGE","url":"https://github.com/protobufjs/protobuf.js"}],"affected":[{"package":{"name":"protobufjs","ecosystem":"npm","purl":"pkg:npm/protobufjs"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"7.6.1"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/06/GHSA-wcpc-wj8m-hjx6/GHSA-wcpc-wj8m-hjx6.json","last_known_affected_version_range":"\u003c= 7.6.0"}},{"package":{"name":"protobufjs","ecosystem":"npm","purl":"pkg:npm/protobufjs"},"ranges":[{"type":"SEMVER","events":[{"introduced":"8.0.0"},{"fixed":"8.4.1"}]}],"database_specific":{"last_known_affected_version_range":"\u003c= 8.4.0","source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/06/GHSA-wcpc-wj8m-hjx6/GHSA-wcpc-wj8m-hjx6.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:N/A:H"}]}