This repository has been archived by the owner on Dec 19, 2023. It is now read-only.
Security Fix for Prototype Pollution in mquery #1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
📊 Metadata *
mquery is aware of the risk of prototype pollution in its exported functions
cloneObject()
andmerge()
and readily present protection by checking the key invar specialProperties = ['__proto__', 'constructor', 'prototype']
. However, the current protection misses to protect another exported functionmergeClone()
. As a result, the latest version 3.2.4 is still vulnerable to prototype pollution.Bounty URL: https://www.huntr.dev/bounties/1-npm-mquery/
⚙️ Description *
Filter out
specialProperties = ['__proto__', 'constructor', 'prototype']
.💻 Technical Description *
Place the protection code in
mergeClone()
:if (specialProperties.indexOf(key) !== -1) { continue; }
🐛 Proof of Concept (PoC) *
🔥 Proof of Fix (PoF) *
👍 User Acceptance Testing (UAT)
N/A
🔗 Relates to...
https://www.huntr.dev/bounties/1-npm-mquery/