Один запрос — и преступник видит всю начинку вашего сервера. MongoDB семь лет сливала память кому попало

Один запрос — и преступник видит всю начинку вашего сервера. MongoDB семь лет сливала память кому попало

Уязвимость 8.7 балла затронула все версии с 3.6 до 8.2 — миллионы баз по всему миру под угрозой.

image

В MongoDB обнаружили серьёзную уязвимость, которая позволяет удалённому злоумышленнику без какой-либо аутентификации получить доступ к неинициализированной памяти сервера. Проблема получила идентификатор CVE-2025-14847 и оценку 8,7 балла по шкале CVSS, что соответствует высокому уровню опасности.

Ошибка связана с некорректной обработкой параметров длины данных. В определённых ситуациях сервер неправильно сопоставляет значение длины, указанное в заголовке, с фактическим объёмом передаваемой информации. Речь идёт о протоколе обмена данными с использованием сжатия Zlib: если поля длины в сжатом заголовке не совпадают с реальным содержимым, MongoDB может вернуть клиенту участок памяти, который ранее не был инициализирован.

Проще говоря, специально сформированный запрос позволяет прочитать фрагменты оперативной памяти сервера, не проходя процедуру входа. В этих данных могут оказаться внутреннее состояние процесса, указатели, служебные структуры или иная информация, которая упрощает дальнейшую атаку.

Уязвимость затрагивает широкий диапазон версий MongoDB Server:

  • ветку 8.2 с 8.2.0 по 8.2.3
  • ветку 8.0 с 8.0.0 по 8.0.16
  • ветку 7.0 с 7.0.0 по 7.0.26
  • ветку 6.0 с 6.0.0 по 6.0.26
  • ветку 5.0 с 5.0.0 по 5.0.31
  • ветку 4.4 с 4.4.0 по 4.4.29
  • а также все релизы MongoDB Server версий 4.2, 4.0 и 3.6

Разработчики уже выпустили обновления, в которых проблема устранена. Исправления доступны в версиях 8.2.3, 8.0.17, 7.0.28, 6.0.27, 5.0.32 и 4.4.30. В MongoDB подчёркивают, что эксплуатация уязвимости возможна на стороне клиента и не требует каких-либо учётных данных, поэтому обновление рекомендуется установить как можно быстрее.

Если немедленное обновление по каким-то причинам невозможно, разработчики предлагают временную меру: отключить использование Zlib-сжатия на сервере. Для этого при запуске `mongod` или `mongos` нужно явно исключить Zlib из параметров `networkMessageCompressors` или `net.compression.compressors`. Альтернативные алгоритмы сжатия (snappy и zstd) продолжают поддерживаться и не затронуты этой проблемой.

По оценке команды OP Innovate, уязвимость позволяет удалённому атакующему спровоцировать ситуацию, при которой сервер MongoDB возвращает содержимое своей кучи памяти. Даже если утечка не даёт прямого доступа к данным пользователей, подобная информация может значительно облегчить построение более сложных атак и повысить их надёжность.