В Payload CMS (открытая система управления контентом) обнаружили уязвимость внедрения SQL-кода. SQL-инъекция означает подстановку собственных команд в запрос к базе данных. В этом случае пользователь с учётной записью может выполнять произвольные запросы и работать с записями, доступ к которым ему не положен. Четыре адаптера для баз данных затронуты: SQLite, SQLite на платформе Cloudflare D1, PostgreSQL и Vercel Postgres. Проблеме присвоили идентификатор CVE-2026-63316. Оценка по шкале CVSS 4.0 (общая система оценки уязвимостей) составляет 8.7, это уязвимость уровня High. Запись опубликовали 13 октября 2026 года.
CVE-2026-63316 и четыре адаптера баз данных Payload
Адаптеры - это отдельные пакеты, которые устанавливают через менеджер пакетов npm (служба доставки библиотек для проектов на JavaScript). Каждый связывает систему с конкретной базой данных. Механизм атаки связан с параметрами фильтрации in и not_in, то есть с проверкой вхождения значения в список и её отрицанием. Перед подстановкой в запрос к базе данных платформа не очищала содержимое этих параметров. Поэтому злоумышленник добавляет туда собственные конструкции языка запросов, и база исполняет их наравне с исходным запросом. Отличить команды разработчика от команд атакующего на этом уровне уже нельзя. Фильтрация - обычная функция системы, поэтому параметры доступны каждому пользователю с учётной записью. При этом учётной записи хватает минимальных прав. Атака идёт по сети, сложность её низкая, а действия других людей не нужны.
Кому грозит и при каких условиях
Тем не менее не каждая установка уязвима. Злоумышленнику нужен доступ на чтение и одновременно право создавать или изменять записи в коллекции. Коллекция - это набор однотипных документов, например товаров, заявок или статей. Кроме того, в ней должно быть поле типа JSON либо поле блоков с хранением в формате JSON. JSON - текстовый формат для структурированных данных, база хранит его как единое значение. Поля форматированного текста под угрозу не попадают, как и установки, где подобных полей нет.
Права в Payload CMS проверяет само приложение, поэтому обход проверки на уровне запроса открывает данные, которые роли ограничивают. Часть записей становится доступна на чтение, другую можно подменить или удалить. Оценка CVSS предполагает высокое влияние на конфиденциальность и целостность сведений и низкое - на доступность сервиса. Payload CMS служит основой для интернет-магазинов, редакций и внутренних панелей, в её базах хранится пользовательский контент.
Затронутые версии и исправления
Проблема есть во всех выпусках до 3.90.0, а также в предварительных сборках ветки 4.0 младше 4.0.0-canary.34. Разделение по адаптерам важно для администраторов. Адаптеры для PostgreSQL и Vercel Postgres получили исправление в версии 3.73.0. Адаптеры для SQLite и SQLite на платформе Cloudflare D1 закрывают проблему в 3.90.0. Авторы исправления очистили входные данные запроса, теперь подстановка не срабатывает. Поскольку сборки ветки 4.0 предназначены для тестирования, обновиться нужно и в них.
Что делать
Обновите Payload CMS до 3.90.0. Если проект идёт по ветке 4.0, подойдёт 4.0.0-canary.34 или более поздняя сборка. Для установок на PostgreSQL и Vercel Postgres достаточно версии 3.73.0. Проверьте состав коллекций. Наличие поля JSON или блоков с хранением в JSON означает, что установка подпадает под условия атаки. Когда обновление откладывается, ограничьте круг учётных записей с правом создания и изменения записей в таких коллекциях. Без этого права атака не проходит. Сверьте версии всех адаптеров, прописанных в проекте, с исправленными.
Внедрение SQL-кода относят к хорошо изученным классам уязвимостей, и всё же оно возвращается. Слабое место оказалось в слое работы с базой данных, общем для всех проектов на Payload CMS. Поэтому исправление затрагивает сразу четыре адаптера, а не отдельный модуль или надстройку.
Ссылки
- https://www.cve.org/CVERecord?id=CVE-2026-63316
- https://github.com/payloadcms/payload/security/advisories/GHSA-pj7x-6wpf-pgvp