CSIRTS // UNIFIED SECURITY ADVISORY FEEDSYS ● ONLINE · POWERED BY INTELFUSIONS.COM

CVE-2026-61534

criticalCVSS 9.1covered by 2 sourcesfirst seen 2026-09-11
Summary Store/LegacyStore key internal lookup tables by the type, id, and relationship names from a JSON:API document. Because these were plain objects, a document with type: "proto" writes onto Object.prototype, polluting every object in the process. Severity Suggested CVSS v3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H (8.1). The guaranteed impact is process-wide DoS / logic corruption; escalation to authorization bypass or RCE is dependent on gadgets in the consuming application. Affected / Patched - Affected: <= 4.2.0 (verified in 3.0.0 and 4.2.0; all 3.x and 4.x). - Patched: 4.3.0. Details type is a string *value*, untouched by JSON.parse, and is used directly as an object key: if (!models[type]) models[type] = {} // models["proto"] is Object.prototype → skipped if (!models[type][id]) models[type][id] = model // → Object.prototype[id] = model The attacker controls the polluted key (id) and value (the model, populated from attributes). Pollution persists for the process lifetime. The malicious type can also arrive via an included resource referenced by a relationship, bypassing any data.type allow-list. LegacyStore is additionally reachable when a configured types mapping resolves to "proto". Proof of concept const { Store } = require('yayson')() new Store().sync({ data: { type: 'proto', id: 'polluted', attributes: { x: 1 } } }) console.log(({}).polluted) // { x: 1, id: 'polluted' } ← Object.prototype polluted Workarounds Reject documents whose type or relationship names are proto, constructor, or prototype, or run Node with --disable-proto=throw. Fix Null-prototype lookup tables, rejection of proto/constructor/prototype as document-derived member names, Object.keys() iteration, and null-prototype normalization of caller-supplied caches.

⚡ Watch CVE-2026-61534

Get an email if CVE-2026-61534 is added to CISA KEV, gains public exploit code, or a new advisory cites it — max one per day, one-click unsubscribe.

Advisory coverage (2)

External references

NVD record for CVE-2026-61534

CVE.org record

Embed the live status

CVE-2026-61534 live status badge — this badge updates automatically when the KEV or exploit status changes. How to embed it →

[![CVE-2026-61534 status](https://www.csirts.com/badge/CVE-2026-61534)](https://www.csirts.com/cve/CVE-2026-61534)