Драйверы MongoDB и Ops Manager допускают удалённый отказ в обслуживании и обход взаимной аутентификации

MongoDB

Клиентские библиотеки MongoDB для C, C++, Go, PHP и Python, а также libmongocrypt для шифрования на стороне клиента содержат набор уязвимостей. Часть из них ведёт к удалённому отказу в обслуживании: приложение падает или зависает, когда разбирает подготовленные злоумышленником данные. В драйвере PHP одна из ошибок открывает путь к записи за пределами выделенного буфера. Сам сервер базы данных в список не входит. Французский центр реагирования CERT-FR выпустил 12 октября 2026 года сводный бюллетень CERTFR-2026-AVI-1293. Он объединяет 14 уведомлений MongoDB от 8 и 9 октября. О попытках использовать эти уязвимости в реальных атаках уведомления не сообщают.

Разбор BSON, SCRAM и шифрование на стороне клиента

Больше всего правок пришлось на разбор входных данных. Драйверы обмениваются документами в двоичном формате BSON, и ошибки в проверках длины приводят к чтению или записи за пределами буфера. В драйвере Go такие документы вызывали панику, то есть аварийное завершение процесса. Версия 2.9.2 закрывает приём слишком коротких документов и переполнение длины. В драйвере C нашли четыре уязвимости. Одна даёт чтение за границами при разборе ответов SCRAM, то есть механизма аутентификации, которым пользуется MongoDB. Другая записывает лишний байт в кодировщике документов. Ещё две касаются подсчёта значащих цифр у чисел decimal128 и проверки размера буфера. Драйвер C++ до версии 4.6.1 обрезал строку с нулевым байтом при операции distinct.

Драйвер Python до версии 4.18.3 падал с ошибкой сегментации на усечённом элементе регулярного выражения. Сбой случался, только если приложение передавало буфер без завершающего нулевого байта, например отображённый в память файл. Утечки данных здесь нет, страдает доступность. Ошибка жила в коде с 2009 года.

У драйвера PHP проблем больше. Кодировщик игнорировал сообщения об ошибке при сборке крупного документа и аварийно завершал рабочий процесс PHP. Отдельная правка ограничивает длину строк и бинарных значений. Строка размером около 4 ГиБ обнуляла размер выделяемой памяти, а копирование уходило за границы буфера. Исправления вышли в ветках 1.21.11, 2.1.11 и 2.5.4.

Библиотека libmongocrypt получила три исправления. Дублирующееся поле главного ключа могло пересобраться в тот же ключ шифрования. Неизвестный подтип зашифрованного значения возвращался без изменений при явном расшифровании. Наконец, разбор адреса KMS, то есть системы управления ключами, с двоеточием после пути вызывал слишком большое выделение памяти.

Ops Manager и его зависимости

Второй блок исправлений касается Ops Manager, средства управления развёртываниями MongoDB. Сначала вышло обновление 8.0.27 от 30 сентября 2026 года, затем 9.0.1 от 5 октября. Списки правок длинные. Среди них межсайтовый скриптинг (XSS) в просмотре журналов резервного копирования и обход каталогов при очистке хранилища снимков. Второй случай грозит уничтожением данных других пользователей. Ещё закрыли подделку серверных запросов (SSRF) через адреса оповещений и захват учётной записи из-за утечки токена сброса пароля. Отдельно исправили повышение привилегий через символ @ в имени роли и выполнение кода через подставленный путь к каталогу данных. Агент резервного копирования разрешал создавать неограниченное число сессий и исчерпывал память; теперь у каждой группы есть предел.

Попутно обновили сторонние библиотеки. Netty до версии 4.1.137 допускает обход маршрутизации по имени сервера и проверки взаимной аутентификации. Bouncy Castle до 1.85 пропускает сертификаты с точкой в конце домена при проверке ограничений на имена, оценка 9.3 по CVSS 4.0. Кроме того, обновили fast-uri с подделкой серверных запросов, gRPC-Go с падением сервера и js-yaml с исчерпанием процессорного времени. В списке также image-size с бесконечным циклом в разборе изображений и extract-zip с обходом каталогов через символические ссылки.

Что делать администраторам

Обновление драйверов закрывает перечисленные проблемы. Драйвер C доводят до 1.30.13, ветку 2.5 до 2.5.6, C++ до 4.6.1, Go до 2.9.2, Python до 4.18.3, libmongocrypt до 1.20.5. Ops Manager обновляют до 8.0.27 или 9.0.1. После смены версии драйвера приложения собирают заново, потому что часть библиотек подключается статически. Если обновление откладывается, разбор недоверенных данных ограничивают.

Уязвимости в драйверах MongoDB чаще снижают доступность, чем нарушают целостность данных. Такие ошибки годами остаются незамеченными, и Python-драйвер тому пример. В Ops Manager нашлись и захват учётной записи, и обход каталогов. Заметная часть правок касается сторонних библиотек, а не собственного кода, и это меняет приоритеты при обновлении.

Ссылки

Комментарии: 0