Skip to content

fix(deps): update dependency mongoose to v8.24.1 [security] - #556

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/npm-mongoose-vulnerability
Open

fix(deps): update dependency mongoose to v8.24.1 [security]#556
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/npm-mongoose-vulnerability

Conversation

@renovate

@renovate renovate Bot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
mongoose (source) 8.19.08.24.1 age confidence

Mongoose's Improper Sanitization of $nor in sanitizeFilter May Allow NoSQL Injection

CVE-2026-42334 / GHSA-wpg9-53fq-2r8h

More information

Details

Impact

This vulnerability allows bypassing Mongoose’s sanitizeFilter query sanitization mechanism via the $nor operator.

When sanitizeFilter is enabled, Mongoose wraps query operators in $eq to neutralize them. However, prior to the fix, $nor was not included in the set of logical operators that are recursively sanitized. Because $nor accepts an array (like $and and $or), and arrays do not trigger hasDollarKeys(), malicious operators such as $ne, $gt, or $regex could be injected inside a $nor clause without being sanitized.

This may lead to:

  • Authentication bypass
  • Unauthorized data access
  • Data exfiltration

Affected users:

Applications that:

  • Explicitly enable sanitizeFilter
  • Pass unsanitized user-controlled input directly into query methods (e.g., Model.findOne(req.body)) and rely on sanitizeFilter to strip out query selectors

Applications that validate input schemas, whitelist fields, or avoid passing raw request bodies into queries are not affected. For example, Model.findOne({ user: req.body.user, pwd: req.body.pwd }) is not affected.

Patches

Patches have been released for all supported Mongoose release lines:

  • ^6.13.9
  • ^7.8.9
  • ^8.22.1
  • ^9.1.6
Workarounds

Delete $nor keys, use an additional schema validation library, or write middleware to strip out $nor from query filters.

Resources

sanitizeFilter documentation: https://mongoosejs.com/docs/api/mongoose.html#Mongoose.prototype.sanitizeFilter()

Original blog post on sanitizeFilter: https://thecodebarbarian.com/whats-new-in-mongoose-6-sanitizefilter.html

Severity

  • CVSS Score: 7.5 / 10 (High)
  • Vector String: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N

References

This data is provided by the GitHub Advisory Database (CC-BY 4.0).


Mongoose: Prototype pollution in mongoose update casting via proto-prefixed dotted path (Schema._getSchema/path getter)

CVE-2026-73562 / GHSA-664h-wqgq-64gw

More information

Details

Impact

What kind of vulnerability is it? Who is impacted?

Prototype pollution in update casting: passing a user-controlled update to a Mongoose update, like MyModel.updateOne(filter, req.body), can cause Mongoose to set $fullPath and $parentSchemaDocArray on Object.prototype.

Example:

const mongoose = require('mongoose');
console.log('before:', Object.prototype.$fullPath);            // undefined

const User = mongoose.model('User', new mongoose.Schema({ name: String }));
const malicious = JSON.parse('{"$set": {"__proto__.x": "anything"}}');   // attacker-controlled update

const q = User.updateOne({}, {});
try { q._castUpdate(malicious); } catch (e) { /* throws AFTER the pollution side-effect */ }

console.log('after :', Object.prototype.$fullPath);            // "__proto__"
console.log('enumerable:', Object.prototype.propertyIsEnumerable('$fullPath'));  // true
console.log('fresh {}:', ({}).$fullPath);                      // "__proto__"
Patches

Has the problem been patched? What versions should users upgrade to?

9.7.2, 8.24.1. 7.8.10, 6.13.10

Workarounds

Is there a way for users to fix or remediate the vulnerability without upgrading?

Check user-controlled updates for own __proto__ properties before passing to Mongoose

References

Are there any links users can visit to find out more?

Severity

  • CVSS Score: 6.5 / 10 (Medium)
  • Vector String: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:L

References

This data is provided by the GitHub Advisory Database (CC-BY 4.0).


Release Notes

Automattic/mongoose (mongoose)

v8.24.1

Compare Source

  • fix(documentarray): reindex subdocs after array reordering and removal so subsequent nested changes save using the correct path #​16282 AbdelrahmanHafez
  • fix(document): avoid accessing special properties in Document.prototype.get()
  • fix(schema): avoid returning inherited properties from schema path lookups, including paths underneath maps of subdocuments
  • fix(clone): isolate cloned arrays from source documents #​16281 AbdelrahmanHafez
  • types: enable exactOptionalPropertyTypes in TypeScript tests #​16287

v8.24.0

Compare Source

===================

v8.23.1

Compare Source

===================

v8.23.0

Compare Source

===================

  • feat(document): add flattenUUIDs option to toObject() and toJSON() (backport #​15021 to 8.x)

v8.22.1

Compare Source

==================

  • fix: handle other top-level query operators in sanitizeFilter
  • fix(document): when cloning a doc with subdocs, make sure the subdocs parent is the cloned doc #​15904 #​15901
  • types(models): support Mongoose query casting in AnyBulkWriteOperation filter property #​15910
  • types: add toBSON() to documents #​15927

v8.22.0

Compare Source

===================

v8.21.1

Compare Source

===================

  • fix(clone): fix parent doc for map subdocuments and array subdocuments #​15958 AbdelrahmanHafez
  • fix(document): when cloning a doc with subdocs, make sure the subdocs parent is the cloned doc #​15904 #​15901
  • fix: respect currentTime schema option in bulkWrite updates #​15976 sderrow
  • types(models): support Mongoose query casting in AnyBulkWriteOperation filter property #​15910
  • types: add toBSON() to documents #​15927

v8.21.0

Compare Source

===================

  • feat(document+model): pass options to pre('deleteOne') and update+options to pre('updateOne') hooks #​15908 #​15870
  • feat(document): add support for getAtomics() to allow custom container types to utilize atomics #​15817
  • fix: add support for typescript style enums #​15914 #​15913 mjfwebb

v8.20.4

Compare Source

===================

v8.20.3

Compare Source

===================

  • perf: use Object.hasOwn instead of Object#hasOwnProperty #​15875 AbdelrahmanHafez
  • fix: improve error when calling Document.prototype.init() with null/undefined #​15812 Vegapunk-debug
  • types(schema): avoid treating paths with default: null as required #​15889
  • types(schema): allow partial statics to schema.statics() #​15780

v8.20.2

Compare Source

===================

v8.20.1

Compare Source

===================

v8.20.0

Compare Source

===================

v8.19.4

Compare Source

===================

v8.19.3

Compare Source

===================

  • fix(model+plugins): correctly apply shard key on deleteOne() #​15705 #​15701
  • fix(schema): correctly cache text indexes as 'text' not 1 #​15695
  • types: make inferRawDocType correctly infer empty array type [] as any[] #​15704 #​15699

v8.19.2

Compare Source

===================

  • perf(setDefaultsOnInsert): avoid computing all modified paths when running setDefaultsOnInsert and update validators, only calculate if there are defaults to set #​15691 #​15672
  • fix: correct handling of relative vs absolute paths with maps and subdocuments #​15682 #​15678 #​15350
  • ci: add publish script with provenance #​15684 #​15680

v8.19.1

Compare Source

===================

  • perf: avoid getting all modified paths in update when checking if versionKey needs to be set #​15677 #​15672
  • perf: Avoid needless path translation #​15679 orgads
  • fix(query): throw error if using update operator with modifier and no path #​15670 #​15642
  • types: avoid making FilterQuery a conditional type because of how typescript handles distributed conditional unions #​15676 #​15671
  • docs: update installation instructions #​15675 aalok-y

Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate

renovate Bot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor Author

⚠️ Artifact update problem

Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.

♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

  • any of the package files in this branch needs updating, or
  • the branch becomes conflicted, or
  • you click the rebase/retry checkbox if found above, or
  • you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:

File name: 08-node-express-uploading/package-lock.json
npm warn Unknown env config "store". This will stop working in the next major version of npm. See `npm help npmrc` for supported config options.
npm error code ERESOLVE
npm error ERESOLVE could not resolve
npm error
npm error While resolving: multer-storage-cloudinary@4.0.0
npm error Found: cloudinary@2.7.0
npm error node_modules/cloudinary
npm error   cloudinary@"2.7.0" from the root project
npm error
npm error Could not resolve dependency:
npm error peer cloudinary@"^1.21.0" from multer-storage-cloudinary@4.0.0
npm error node_modules/multer-storage-cloudinary
npm error   multer-storage-cloudinary@"4.0.0" from the root project
npm error
npm error Conflicting peer dependency: cloudinary@1.41.3
npm error node_modules/cloudinary
npm error   peer cloudinary@"^1.21.0" from multer-storage-cloudinary@4.0.0
npm error   node_modules/multer-storage-cloudinary
npm error     multer-storage-cloudinary@"4.0.0" from the root project
npm error
npm error Fix the upstream dependency conflict, or retry this command with --force or --legacy-peer-deps to accept an incorrect (and potentially broken) dependency resolution.
npm error
npm error
npm error For a full report see:
npm error /runner/cache/others/npm/_logs/2026-09-03T22_43_30_554Z-eresolve-report.txt
npm error A complete log of this run can be found in: /runner/cache/others/npm/_logs/2026-09-03T22_43_30_554Z-debug-0.log

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants