Vulnerabilities in pkg:npm/@stablelib/cbor
PACKAGEGHSA-w48f-fwg7-ww6p is a HIGH prototype poisoning vulnerability (CWE-1321: Improperly Controlled Modification of Object Prototype Attributes ('Prototype Pollution')) affecting @stablelib/cbor libraries in the npm ecosystem. The issue involves prototype poisoning via `__proto__` map keys in cbor decoding. Remediation is available by upgrading affected packages to version 2.0.3.
pkg:npm/@stablelib/cbor
Vulnerability advisories affecting package pkg:npm/@stablelib/cbor. Select an advisory below to view technical details or fixes.
| Advisory ID | CVE / NVD | Severity | Summary |
|---|---|---|---|
| GHSA-w48f-fwg7-ww6p | - | HIGH | @stablelib/cbor: Prototype poisoning via `__proto__` map keys in CBOR decoding |
| GHSA-5jg4-p4qw-cgfr | - | HIGH | @stablelib/cbor: Stack exhaustion Denial of Service via deeply nested CBOR arrays, maps, or tags |
GHSA-w48f-fwg7-ww6p at a Glance
How to Fix GHSA-w48f-fwg7-ww6p
To remediate this vulnerability, upgrade all affected @stablelib/cbor dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.
npm install @stablelib/cbor@2.0.3
Run the following command in your project directory to verify that all resolved dependencies use the patched release:
npm ls @stablelib/cbor
How to Check if You Are Affected
To determine whether your Node.js application is affected by GHSA-w48f-fwg7-ww6p, inspect your project dependencies using npm:
npm ls @stablelib/cbor
Analyze the terminal output to locate any version of @stablelib/cbor in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 2.0.3), your application is affected.
Note: The npm ls @stablelib/cbor command inspects dependencies declared in your package.json and lockfile; it does not perform automated runtime dynamic scanning.
Technical Details
Vulnerability Mechanism & Technical Analysis
This vulnerability is classified under CWE-1321: Improperly Controlled Modification of Object Prototype Attributes ('Prototype Pollution'), where 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. In @stablelib/cbor, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.
Source Advisory Statement
GHSA-w48f-fwg7-ww6p Affected @stablelib/cbor Versions
1 component(s)| Product / Package | Ecosystem | Affected Versions | Fixed Version |
|---|---|---|---|
|
@stablelib/cbor
|
npm |
< 2.0.3
|
2.0.3
|
References
Frequently Asked Questions
What is GHSA-w48f-fwg7-ww6p?
Which @stablelib/cbor versions are affected?
What version fixes GHSA-w48f-fwg7-ww6p?
Is @stablelib/cbor affected?
What CWE is associated with GHSA-w48f-fwg7-ww6p?
How can I check npm dependencies for GHSA-w48f-fwg7-ww6p?
Machine-readable OSV JSON
OSV v1.5 Schema
{
"schema_version" : "1.4.0",
"id" : "GHSA-w48f-fwg7-ww6p",
"modified" : "2026-04-07T14:23:12Z",
"published" : "2026-04-04T04:24:27Z",
"aliases" : [ ],
"summary" : "@stablelib/cbor: Prototype poisoning via `__proto__` map keys in CBOR decoding",
"details" : "### Summary\n\n`@stablelib/cbor` decodes CBOR maps into ordinary JavaScript objects and assigns attacker-controlled keys directly onto those objects. A CBOR map key named `__proto__` therefore changes the prototype of the decoded object instead of becoming an ordinary data property.\n\n### Details\n\nThe decoder builds map results with a plain `{}` and then stores attacker-controlled keys using bracket assignment.\n\nThat is unsafe for special property names. In JavaScript, assigning to `obj[\"__proto__\"]` on a normal object does not create a plain own property. It invokes the built-in `__proto__` setter and replaces the object’s prototype if the supplied value is an object or `null`.\n\nAs a result, a CBOR payload containing a map entry like:\n\n* key: `\"__proto__\"`\n* value: `{ isAdmin: true }`\n\ndoes not decode to an object with an own property called `__proto__`. It decodes to an object whose prototype is now attacker-controlled. Any code that later reads properties through normal lookup will see inherited attacker-supplied values.\n\n### PoC\n\n```js\nimport { decode } from \"@stablelib/cbor\";\n\n// CBOR:\n// {\n// \"__proto__\": { \"isAdmin\": true }\n// }\n//\n// a1 map(1)\n// 69 text(9)\n// \"__proto__\"\n// a1 map(1)\n// 67 text(7)\n// \"isAdmin\"\n// f5 true\n\nconst payload = new Uint8Array([\n 0xa1,\n 0x69, 0x5f, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x5f, 0x5f,\n 0xa1,\n 0x67, 0x69, 0x73, 0x41, 0x64, 0x6d, 0x69, 0x6e,\n 0xf5\n]);\n\nconst obj = decode(payload);\n\nconsole.log(Object.hasOwn(obj, \"isAdmin\")); // false\nconsole.log(obj.isAdmin); // true\nconsole.log(Object.getPrototypeOf(obj).isAdmin); // true\n```\n\n### Impact\n\nAny application that decodes untrusted CBOR into JavaScript objects can receive objects with attacker-controlled prototypes.\n\nIn practice, that can corrupt configuration objects, influence authorization checks, alter feature flags, and break application logic that relies on normal property lookup instead of strict own-property checks. If the decoded object is later merged into other objects, the impact can spread further.\n\n### Solution\n\nUpgrade to version 2.0.4.",
"severity" : [ {
"type" : "CVSS_V4",
"score" : "CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:H/SA:N"
} ],
"affected" : [ {
"package" : {
"ecosystem" : "npm",
"name" : "@stablelib/cbor"
},
"ranges" : [ {
"type" : "ECOSYSTEM",
"events" : [ {
"introduced" : "0"
}, {
"fixed" : "2.0.3"
} ]
} ]
} ],
"references" : [ {
"type" : "WEB",
"url" : "https://github.com/StableLib/stablelib/security/advisories/GHSA-w48f-fwg7-ww6p"
}, {
"type" : "WEB",
"url" : "https://github.com/StableLib/stablelib/commit/0f153a63b7552a0e8721f640984113e419015026"
}, {
"type" : "PACKAGE",
"url" : "https://github.com/StableLib/stablelib"
} ],
"database_specific" : {
"cwe_ids" : [ "CWE-1321" ],
"severity" : "HIGH",
"github_reviewed" : true,
"github_reviewed_at" : "2026-04-04T04:24:27Z",
"nvd_published_at" : null
}
}