| パッケージ | 影響を受けるバージョン | 修正済みバージョン |
|---|---|---|
| mongoose | ≥ 7.0.0, < 7.8.9≥ 8.0.0, < 8.22.1≥ 9.0.0, < 9.1.6< 6.13.9 | 7.8.98.22.19.1.66.13.9 |
| mongoose | ≥ 7.0.0, < 7.8.9≥ 8.0.0, < 8.22.1≥ 9.0.0, < 9.1.6< 6.13.9 | 7.8.98.22.19.1.66.13.9 |
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:
Affected users:
Applications that:
Model.findOne(req.body)) and rely on sanitizeFilter to strip out query selectorsApplications 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 have been released for all supported Mongoose release lines:
^6.13.9^7.8.9^8.22.1^9.1.6Delete $nor keys, use an additional schema validation library, or write middleware to strip out $nor from query filters.
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
これらの製品をお使いですか?サイトをスキャンして、脆弱なバージョンが公開されていないか確認しましょう。
無料でサイトをスキャン