Драйвер MongoDB для Node.js может вернуть в пул соединение, на котором ещё не дочитан ответ. В основе лежит десинхронизация пула соединений. Из-за этого ответы базы данных достаются не тем запросам. В результате приложение может показать одному пользователю записи другого.
CVE-2026-119179 в драйвере MongoDB для Node.js
Уязвимость находится не в сервере базы данных, а в клиентской библиотеке. При этом тайм-аут операций на стороне клиента выглядит безобидной настройкой. Он ограничивает время ожидания ответа от базы. Однако при срабатывании тайм-аута соединение освобождается раньше времени. Запись об уязвимости опубликована 3 ноября 2026 года.
Слой управления соединениями драйвера обрабатывает тайм-аут неправильно. После тайм-аута соединение возвращается в пул, хотя данные прошлой операции ещё в пути. Затем его забирает следующий запрос. Ответы перемешиваются, и база отдаёт чужие записи. Кроме того, часть законных запросов завершается ошибкой.
Пул соединений хранит готовые сетевые каналы, которые драйвер переиспользует. Так приложение не открывает новый канал под каждый запрос. Однако при тайм-ауте очередь нарушается. В результате клиент получает ответ, предназначенный другому запросу. Внешне такой обмен выглядит нормально.
Условия атаки и оценка CVSS
Атака начинается с обычных запросов к приложению. Доступ к самой базе при этом не нужен. Учётные данные тоже не требуются. Единственное условие касается конфигурации: должен быть включён тайм-аут операций. Поэтому риск выше у публичных сервисов с такой настройкой.
Атаковать можно по сети, и учётные данные для этого не нужны. Участие пользователя тоже не требуется. Сложность низкая, хотя требования к атаке присутствуют: приложение должно включить тайм-аут операций. По шкале CVSS 4.0 уязвимость набрала 8.3 из 10, а по CVSS 3.1 получила 7 из 10. Сильнее всего страдает конфиденциальность, тогда как целостность и доступность затронуты слабее.
Для организации последствия выглядят непривычно. Утечка не оставляет ярких следов: ответ на запрос приходит обычным. Из-за этого заметить обмен данными в журналах трудно. Также часть клиентов получит ошибки на ровном месте. Поэтому смешение ответов легко принять за нагрузку или сетевую помеху.
Какие именно записи утекут, зависит от нагрузки. Чаще всего это документы, которые приложение запрашивает для других клиентов. При этом смешение ответов меняет результаты операций. Из-за этого возможны неверные решения в бизнес-логике.
Исправление и затронутые версии
Исправление вышло в драйвере MongoDB для Node.js. Уязвимы версии 6.11.0 и выше, но младше 6.22.0. Вторая ветка затрагивает 7.0.0 и выше, но младше 7.8.0. Отдельно исправленная версия в записи CVE не названа, однако границы диапазонов указывают на 6.22.0 и 7.8.0. Обходных мер вендор не привёл.
Уведомление о безопасности MongoDB NODE-7958 от 3 ноября 2026 года описывает ту же уязвимость. При этом сведений об эксплуатации в реальных атаках нет. По данным CISA-ADP, атаку нельзя провести автоматически, а техническое влияние оценили как частичное. Кроме того, в записи не указано, кто обнаружил уязвимость. Запись имеет статус опубликованной.
Что делать администраторам
Проверка начинается с опций клиента. В коде подключения видно, включён ли тайм-аут операций. Если он включён, приложение попадает в группу риска, пока драйвер не обновлён. При этом сам тайм-аут не говорит о взломе.
Администраторам стоит сверить версию драйвера в проекте. Сделать это лучше до следующего планового релиза приложения. Если версия попадает в затронутые диапазоны, обновление стоит поставить в первую очередь. Иначе данные клиентов останутся под угрозой раскрытия. При этом сама база данных обновления не требует.
После перехода на 6.22.0 или 7.8.0 соединение больше не попадает в пул с невычитанным ответом. Также исчезает путаница ответов и ложные ошибки. Для приложений с тайм-аутом операций это возвращает предсказуемость. Однако проверка соответствия ответов запросам остаётся полезной. До обновления такие проверки служат единственной страховкой.