Skip to content
OpenAdvisories

Weakness (CWE)

CWE-1321: Improperly Controlled Modification of Object Prototype Attributes

Variant Incomplete

The product receives input from an upstream component that specifies attributes that are to be initialized or updated in an object, but it does not properly control modifications of attributes of the object prototype.

How to prevent it (5 mitigations)
  1. Implementation

    By freezing the object prototype first (for example, Object.freeze(Object.prototype)), modification of the prototype becomes impossible.

  2. Architecture and Design

    By blocking modifications of attributes that resolve to object prototype, such as proto or prototype, this weakness can be mitigated.

  3. Implementation

    When handling untrusted objects, validating using a schema can be used.

  4. Implementation

    By using an object without prototypes (via Object.create(null) ), adding object prototype attributes by accessing the prototype via the special attributes becomes impossible, mitigating this weakness.

  5. Implementation

    Map can be used instead of objects in most cases. If Map methods are used instead of object attributes, it is not possible to access the object prototype or modify it.

Source: MITRE CWE-1321

212 results · Clear filters · Feed

  • Medium 6.5

    Mongoose: Prototype pollution via Schema.prototype.virtual()

    Mongoose is a MongoDB object modeling tool designed to work in an asynchronous environment. Prior to 6.13.12, 7.8.13, 8.24.7, and 9.11.4, Schema.prototype.virtual() builds nested virtual paths without applying the special-property validation already used by S…

  • Medium 4.4

    Sveltejs devalue before 5.6.3 Prototype Pollution via uneval Output

    Sveltejs devalue before 5.6.3 contains a prototype pollution vulnerability that allows attackers to alter object prototypes by supplying untrusted data to uneval. When the generated code is later evaluated, it creates objects with polluted prototypes, produci…

  • Medium 4.1

    Prototype Pollution in Progress Software Kendo UI for Vue

    Prototype Pollution in @progress/kendo-vue-common in Progress Software Kendo UI for Vue versions 0.4.0 through 9.2.0 allows a high-privileged attacker who can control a field path processed by components such as the Scheduler to modify the prototype of built-…

  • Medium 4.1

    Prototype Pollution in Progress Software KendoReact

    Prototype Pollution in the setter utility (@progress/kendo-react-common) in Progress Software KendoReact versions 3.5.0 through 16.0.0 allows a high-privileged attacker who can control a field path passed to the utility, directly or through components such as…

  • Medium 4.1

    Prototype Pollution in Progress Software Kendo UI for Angular

    Prototype Pollution in the Scheduler component (@progress/kendo-angular-scheduler and @progress/kendo-angular-common) in Progress Software Kendo UI for Angular versions prior to 25.1.0 allows a high-privileged attacker who can control a field path processed b…

  • Medium 6.1

    draw.io: Prototype pollution in GraphML (mxGraphMlCodec)

    draw.io is a configurable diagramming and whiteboarding application. Prior to 31.1.5, the GraphML decoder contains a prototype-pollution vulnerability. Attacker-controlled GraphML reference keys can address inherited object properties, including prototype obj…

  • Medium 5.3

    Parse Server before 8.6.113 and 9.10.6-alpha.5 Prototype Pollution via Dot Notation Key

    Parse Server before 8.6.113 and 9.0.0 before 9.10.6-alpha.5 contains a prototype pollution vulnerability when building objects for Cloud Code triggers and LiveQuery, where a dot notation key whose intermediate segment resolves through an inherited member writ…

  • Medium 5.9

    i18next: Shared built-in corruption through inherited-key deepExtend recursion

    i18next is an internationalization framework for JavaScript. Prior to version 26.3.4, `deepExtend` in `src/utils.js` checks property existence with the in operator and recurses into inherited built-ins reached through `Object.prototype`. An application must e…

  • Medium 5.3

    Parse Server 9.0.0 before 9.10.5-alpha.9 Prototype Pollution Denial of Service

    Parse Server before 8.6.108 and 9.0.0 before 9.10.5-alpha.9 contains a prototype pollution vulnerability because user-controlled keys are expanded into objects without own-property checks. Clients with class write access can send dot notation field keys or AC…

  • Medium 4.8

    Forge: Prototype Pollution in forge.http cookie handling via a malicious Set-Cookie

    Forge (also called node-forge) is a native implementation of Transport Layer Security in JavaScript. Prior to 1.4.1, the forge.http client stored cookie names and paths from Set-Cookie response headers in ordinary JavaScript objects. A malicious server could …

  • Medium 6.9

    Highcharts Dashboards: editableOptions.propertyPath writes to Object.prototype

    Highcharts JS is a JavaScript charting library based on SVG. From 1.0.0 until 4.2.2, Highcharts Dashboards edit mode walks editableOptions propertyPath segments without rejecting prototype-related keys. An attacker who controls editableOptions can provide a p…

  • Medium 6.9

    Highcharts Dashboards / Grid Pro: `DataTable.setCell` and column writers treat `__proto__` as an existing column.

    Highcharts JS is a JavaScript charting library based on SVG. From 1.0.0 until Dashboards 4.2.2, and from 2.0.0 until Grid Pro 3.2.0, Highcharts DataTable single-cell writers use an untrusted column ID as a key without rejecting __proto__ or constructor. DataT…

  • Medium 5.3

    Highcharts Dashboards: `__proto__` data table id writes sync listeners to `Object.prototype`

    Highcharts JS is a JavaScript charting library based on SVG. From 1.0.0 until 4.2.2, Highcharts Dashboards stores DataCursor listener and state maps in plain objects keyed by DataTable ID. A __proto__ table ID supplied through dataPool connector configuration…

  • Medium 6.5

    systeminformation: Prototype pollution in `networkStats()` via the interface name

    systeminformation is a System and OS information library for node.js. Prior to 5.33.13, networkStats(ifaces) in lib/network.js on FreeBSD, OpenBSD, and NetBSD stores per-interface data in the plain-object _network cache and indexes it with the sanitized calle…

  • Medium 6.1

    ApostropheCMS: Client-side Prototype Pollution in apos.http.parseQuery leading to DOM-based XSS against authenticated users

    ApostropheCMS is an open-source Node.js content management system. Prior to 4.33.0, an unauthenticated attacker can send a crafted link whose query string is automatically parsed by apos.http.parseQuery when an authenticated victim loads a page with the admin…

  • Medium 5.3

    @casl/ability 6.7.5 before 7.0.2 Prototype Pollution via rulesToFields setByPath

    @casl/ability 6.7.5 before 7.0.2 contains a prototype pollution vulnerability in rulesToFields() that allows attackers to modify inherited builtins via dotted condition keys. Attackers controlling rule conditions can supply keys like 'toString.call' to alter …

  • Medium 5.4

    Prototype Pollution via Model.accept and kendo.setter in Kendo UI for jQuery

    In Progress® Kendo® UI for jQuery prior to 2026.3.1015, Model.accept passes server-response keys to kendo.setter without guarding against unsafe object paths containing __proto__, constructor, or prototype. An attacker who can supply data accepted by an affec…

  • Medium 6.0

    n8n before 1.123.83, 2.41.4, and 2.42.1 Prototype Pollution via AI Workflow Builder Connection Merge

    n8n before 1.123.83, 2.x before 2.41.4, and 2.42.x before 2.42.1 contains a prototype pollution vulnerability in the AI workflow builder, which merges workflow connections using node names as object members without checking for reserved keys. Authenticated us…

  • Medium 6.5

    msgpack5: Partial options disable prototype protection

    msgpack5 is a msgpack v5 implementation for node.js and the browser. Prior to 6.1.0, constructing msgpack5 with an empty or partial options object disables the default protoAction: 'error' protection. A decoded map containing a __proto__ key can then replace …

  • Medium 6.5

    traverse: set() can write to built-in prototypes via an untrusted path

    traverse (npm) versions 0.3.6 through 0.3.9, 0.4.0 through 0.4.6, 0.5.0 through 0.5.2, and 0.6.0 through 0.6.11 allow prototype pollution through set(). When the path passed to set() crosses a primitive value, the next path segment is resolved on that primiti…

  • Medium 6.5

    @orpc/zod: Prototype injection in smart coercion

    oRPC is a tool that helps build APIs that are end-to-end type-safe and adhere to OpenAPI standards. Prior to 1.14.10, the @orpc/zod ZodSmartCoercionPlugin and experimental_ZodSmartCoercionPlugin collect object and record properties in plain objects and resolv…

  • Medium 6.5

    @orpc/json-schema: Prototype injection in smart coercion

    oRPC is a tool that helps build APIs that are end-to-end type-safe and adhere to OpenAPI standards. Prior to 1.14.9, the @orpc/json-schema SmartCoercionPlugin uses JsonSchemaCoercer to collect object properties in a plain object and to resolve schema.properti…

  • Medium 6.3

    Apache Thrift, Apache Thrift, Apache Thrift: A map key from the wire can replace a decoded object's prototype in generated JavaScript

    Improperly controlled modification of object prototype attributes ('prototype pollution') vulnerability in Apache Thrift all JS bindings. This issue affects Apache Thrift: before 0.25.0. Users are recommended to upgrade to version 0.25.0 and re-generate JS co…

  • Medium 5.1

    stream-json: Prototype pollution: Assembler writes this.current[this.key] on plain objects

    stream-json is a micro-library of stream components for processing JSON and JSONC with a minimal memory footprint. Prior to 3.6.0, Assembler materializes object properties with plain assignment, so an input key named __proto__ invokes the inherited setter and…

  • Medium —

    devalue: Malformed null-prototype object keys bypass __proto__ rejection via property-key coercion

    This is another instance of https://github.com/sveltejs/devalue/security/advisories/GHSA-mwv9-gp5h-frr4, where some payloads could cause `parse` to create objects with a `__proto__` own property. This on its own is not enough to cause prototype pollution, and…

  • Medium 6.3

    Prototype Pollution in Vaadin Charts and Component Base via Unfiltered Deep Merge

    A prototype pollution vulnerability exists in the deep merge helpers of Vaadin Charts and Vaadin Component Base. Merging an object the application does not control into a chart configuration or into a component's i18n property writes onto Object.prototype, ma…

  • Medium 6.9

    Axios: Prototype pollution gadget in fetch adapter can alter outbound requests

    Axios is a promise-based HTTP client for the browser and Node.js. From 1.7.0 until 1.20.0, the fetch adapter constructs a Request with sanitized resolvedOptions but then calls fetch with the original fetchOptions. A separate same-process prototype-pollution f…

  • Medium 6.9

    Axios: Header Injection via Inherited headers After Minimal Interceptor

    Axios is a promise-based HTTP client for the browser and Node.js. From 1.0.0 until 1.20.0, the dispatchRequest function normalizes inherited Object.prototype.headers from a replacement request configuration. A separate same-process prototype-pollution flaw se…

  • Medium 6.9

    Axios: Prototype-Pollution Gadget in the Default Instance Allows Inherited Object.prototype.method to Override HTTP Method

    Axios is a promise-based HTTP client for the browser and Node.js. From 0.27.2 until 0.34.0 and 1.20.0, Axios default-instance requests that omit an explicit method can read an inherited method value from Object.prototype. If another vulnerability in the same …

  • Medium 6.9

    Axios: Fetch Adapter Header Injection via Inherited FormData getHeaders

    Axios is a promise-based HTTP client for the browser and Node.js. From 1.12.0 until 1.20.0, ResolveConfig reads inherited Symbol.toStringTag, append, and getHeaders properties while resolving FormData headers. A separate same-process prototype-pollution flaw …

  • Medium 4.3

    A prototype pollution vulnerability in Software Mansion React Native Worklets before 0.12.2 allows an attacker-controll…

  • Medium 4.3

    scim-patch: Mutation of Inherited Built-in Method Objects

    scim-patch is a library for applying SCIM patch operations. Prior to 0.9.2, navigate() reads inherited properties and assign() uses prototype-chain membership checks while resolving attacker-controlled SCIM PATCH paths. A path or one of the dotted value keys …

  • Medium 6.3

    Builder.io Gen2 SDKs through 5.2.11 Prototype Pollution via builder.userAttributes

    Builder.io Gen2 SDKs through versions 5.2.11 and 0.25.13 contain a prototype pollution vulnerability in the unflatten helper that processes builder.userAttributes query parameters without prototype guards. Attackers can craft preview links with __proto__ or p…

  • Medium 6.0

    n8n: Prototype Pollution via Workflow Structure Summary Can Lead to Denial of Service

    n8n is an open source workflow automation platform. Prior to 2.37.7 and 2.38.2, the Instance AI workflow summary used node names and connection keys from stored workflows as ordinary object keys. A workflow submitted through the REST API could contain __proto…

  • Medium 6.9

    node-csv: Prototype replacement still reachable via columns path

    node-csv is a full-featured CSV parser with a simple API that is tested against large datasets. Prior to 7.0.2, csv-parse with the columns and group_columns_by_name options enabled treats a duplicate __proto__ header as an existing property in packages/csv-pa…

  • Medium —

    Tiptap: mergeAttributes() turns an own __proto__ key into inherited executable DOM attributes

    ## Summary `@tiptap/core`'s public `mergeAttributes()` helper uses ordinary bracket assignment on keys returned by `Object.entries()`. An own `__proto__` key from JSON therefore invokes the legacy prototype setter on the fresh merged object. The function retu…

  • Medium 5.1

    Livewire DOM-based cross-site scripting during client-side state handling

    Livewire is a full-stack framework for Laravel. From 3.0.0-beta.1 until 3.8.3 and 4.3.4, the dot-notated query-string parser in js/plugins/history/index.js, including fromQueryString() and insertDotNotatedValueIntoData(), accepts the __proto__, constructor, a…

  • Medium 4.3

    SvelteKit before 2.69.1 Prototype Pollution via File Input

    SvelteKit versions before 2.69.1 contain a prototype pollution vulnerability in remote form functions with file input fields that accept arbitrary user-controlled path names. Attackers can manipulate the deletion path to remove methods on the prototype, poten…

  • Medium 6.3

    rexrainbow phaser3-rex-notes BehaviorTree Blackboard Data SetValue.js SetValue prototype pollution

    A vulnerability was identified in rexrainbow phaser3-rex-notes up to 1.80.17. This vulnerability affects the function SetValue of the file plugins/utils/object/SetValue.js of the component BehaviorTree Blackboard Data Interface. Such manipulation of the argum…

  • Medium 6.0

    n8n before 1.123.69 Code Node Sandbox Escape via Function.prototype Pollution

    n8n is a workflow automation platform. In versions prior to 1.123.69, 2.33.4, and 2.34.1, the JavaScript Code node's VM sandbox did not freeze the sandbox's Function.prototype, allowing an authenticated user with the ability to create and execute workflows to…