StableLib: Prototype poisoning via `__proto__` map keys in CBOR decoding
What fixes it
- 2.0.3@stablelib/cbor, npmOSV
npm install @stablelib/cbor@2.0.3
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
Description
StableLib is a stable library of useful TypeScript and JavaScript code. Prior to 2.0.4, the @stablelib/cbor CBOR map decoding path creates ordinary JavaScript objects and assigns attacker-controlled keys with bracket assignment. A map key named __proto__ invokes the inherited prototype setter instead of creating an ordinary own property, allowing the decoded object's prototype to contain attacker-controlled authorization or feature-flag values. Downstream code that trusts normal property lookup or merges the decoded object can therefore make security-sensitive decisions using inherited attacker data. This issue is fixed in version 2.0.4.
Text from CVE List
Affected versions 2
- stablelibaffected: < 2.0.4CVE List
- @stablelib/cbor, npmfrom first release, fixed in 2.0.3OSV