Обход контроля доступа на уровне полей в Payload на MongoDB (CVE-2026-106100)
В @payloadcms/db-mongodb обнаружена уязвимость высокого уровня (CVSS 7.1), позволяющая аутентифицированному пользователю изменять поля, на запись в которые у него нет прав. Проблема затрагивает версии адаптера MongoDB до 3.87.0 и canary-сборки до 4.0.0-canary.20. Адаптеры Postgres и SQLite не подвержены уязвимости.
Подробности
Payload — это бесплатная open source headless CMS, часто используемая для построения API-ориентированных бэкендов и админ-панелей. Уязвимость затрагивает пакет @payloadcms/db-mongodb — официальный адаптер базы данных MongoDB. Суть проблемы: аутентифицированный пользователь, обладающий правом на обновление документа, мог изменить те его поля, на запись в которые field-level write access control (контроль доступа на уровне полей) ему права не давал. Иными словами, если в конфигурации коллекции для конкретного поля задано ограничение на запись для определённой роли или пользователя, это ограничение в уязвимых версиях можно было обойти через операцию обновления документа. Уязвимы версии @payloadcms/db-mongodb ниже 3.87.0, а также canary-сборки ниже 4.0.0-canary.20. Важно отметить, что адаптеры Postgres и SQLite данной проблеме не подвержены — речь идёт исключительно о MongoDB-адаптере. Тип уязвимости — обход механизма авторизации (access control bypass). Вектор атаки требует наличия аутентифицированной учётной записи с правом на обновление хотя бы одного документа, что снижает порог эксплуатации для внутренних пользователей и сервисных аккаунтов, но не позволяет эксплуатировать проблему полностью анонимно.Что делать
Разработчики выпустили исправление. Рекомендуется как можно скорее обновить пакет @payloadcms/db-mongodb до версии 3.87.0 или выше. Для тех, кто использует canary-ветку, необходимо обновиться до 4.0.0-canary.20 или более поздней сборки. Если немедленное обновление невозможно, следует рассмотреть временные компенсационные меры: ограничить круг пользователей, имеющих право на обновление документов; усилить мониторинг и логирование операций обновления в коллекциях с field-level access control; проверить, не было ли подозрительных изменений в защищённых полях. Однако такие меры являются лишь частичным сдерживанием — полноценное устранение риска обеспечивает только установка исправленной версии. Также стоит учитывать, что уязвимость не затрагивает адаптеры Postgres и SQLite, поэтому проектам на этих базах данных обновление по данному CVE не требуется. Итог: CVE-2026-106100 — заметная уязвимость обхода авторизации в MongoDB-адаптере Payload, позволяющая аутентифицированному пользователю править запрещённые для него поля. Учитывая высокий CVSS-балл и распространённость Payload в проектах на MongoDB, обновление до версии 3.87.0 (или 4.0.0-canary.20 для canary) следует выполнить в приоритетном порядке.Источник: CVE Project (cvelistV5)
