Mongoose — это инструмент объектного моделирования MongoDB, предназначенный для работы в асинхронной среде. До версий 6.13.10, 7.8.10, 8.24.1 и 9.7.2 передача управляемого пользователем обновления, такого как MyModel.updateOne(filter, req.body), может использовать приведение обновлений Mongoose с пунктирным путем __proto__.x в $set. Schema.prototype.path и Schema.prototype._getPathType могут обрабатывать унаследованные свойства Schema.paths и Schema.nested как типы схемы, позволяя процессу приведения устанавливать $fullPath и $parentSchemaDocArray в Object.prototype перед созданием.
Такое загрязнение прототипа делает эти свойства видимыми на вновь создаваемых объектах и может повлиять на целостность и доступность приложения. Эта проблема исправлена в версиях 6.13.10, 7.8.10, 8.24.1 и 9.7.2.
Показать оригинальное описание (EN)
Mongoose is a MongoDB object modeling tool designed to work in an asynchronous environment. Prior to 6.13.10, 7.8.10, 8.24.1, and 9.7.2, passing a user-controlled update such as MyModel.updateOne(filter, req.body) can exploit Mongoose update casting with a __proto__.x dotted path under $set. Schema.prototype.path and Schema.prototype._getPathType can treat inherited properties of schema.paths and schema.nested as schema types, allowing the casting process to set $fullPath and $parentSchemaDocArray on Object.prototype before throwing. This prototype pollution makes those properties visible on newly created objects and can cause application integrity and availability impacts. This issue is fixed in versions 6.13.10, 7.8.10, 8.24.1, and 9.7.2.
Характеристики атаки
Последствия
Строка CVSS v3.1