Skip to main content

Improperly Controlled Modification of Object Prototype Attributes ('Prototype Pollution')

CVE-2023-36665

Severity High
Score 9.8/10

Summary

The package protobuf.js (aka protobufjs) in versions 6.10.0-beta.1 through 7.2.3 allows Prototype Pollution, a different vulnerability than CVE-2022-25878. A user-controlled protobuf message can be used by an attacker to pollute the prototype of "Object.prototype" by adding and overwriting its data and functions. Exploitation can involve using the function "parse" to parse protobuf messages on the fly, loading ".proto" files by using "load/loadSync" functions, or providing untrusted input to the functions "ReflectionObject.setParsedOption" and "util.setProperty". NOTE: this CVE Record is about "Object.constructor.prototype.<new-property> = ...;" whereas CVE-2022-25878 was about "Object.__proto__.<new-property> = ...;" instead.

  • LOW
  • NETWORK
  • HIGH
  • UNCHANGED
  • NONE
  • NONE
  • HIGH
  • HIGH

CWE-1321 - Prototype Pollution

Prototype pollution is one of the lesser-known vulnerabilities. It allows attackers to abuse the rules of JavaScript by injecting properties into the general object “Object” in JS. Modifying the prototype of “Object” affects the behavior of all objects in the entire app, potentially resulting in denial of service, arbitrary code execution, cross-site scripting, etc.

Advisory Timeline

  • Published