GHSA-x7j8-49r8-mr43
@nevware21/ts-utils: Prototype Pollution in objDeepCopy/objCopyProps via for...in without hasOwnProperty
Packages
| Ecosystem | Package | Affected | Fixed in |
|---|---|---|---|
| npm | @nevware21/ts-utils | < 0.14.0 | 0.14.0 |
Details
As written in the advisory (Markdown source, shown as plain text).
## Summary
The _copyProps function in lib/src/object/copy.ts uses for...in to iterate over source object properties without an Object.hasOwnProperty check, and does not filter dangerous keys (__proto__, constructor, prototype). This allows an attacker to pollute the prototype chain of all objects in the application.
## Details
In _copyProps() (copy.ts lines 186-191), the code iterates all enumerable properties including inherited ones and dangerous keys like __proto__. Any object with a __proto__ key (e.g., from untrusted JSON input) will overwrite the target's prototype.
## PoC
```
const malicious = JSON.parse('{"__proto__": {"polluted": true}}');
objDeepCopy(malicious);
console.log({}.polluted); // true
```
## Suggested Fix
Add objHasOwnProperty check and filter __proto__, constructor, prototype keys.
References
External links from the advisory. They lead to third-party sites.