В MongoDB выявили уязвимость высокой критичности CVE-2025-14847 с оценкой 8.7 по CVSS. Суть неприятная: неаутентифицированный клиент (то есть без логина/пароля) потенциально может заставить сервер вернуть неинициализированные данные из heap-памяти, по факту, куски того, что лежало в оперативной памяти.
Причина уязвимости классическая, ошибка работы с длинами: когда в заголовке/поле длины написано одно, а реальная длина данных другая, и код обрабатывает это криво. В данном случае речь про несоответствие length-полей в заголовках протокола при сжатии Zlib: из-за такого рассинхрона сервер может прочитать и отдать клиенту неинициализированную heap-память.
Уязвимость затрагивает довольно широкий пласт веток MongoDB:
- MongoDB 8.2.0–8.2.3
- MongoDB 8.0.0–8.0.16
- MongoDB 7.0.0–7.0.26
- MongoDB 6.0.0–6.0.26
- MongoDB 5.0.0–5.0.31
- MongoDB 4.4.0–4.4.29
- а также все версии MongoDB Server веток 4.2, 4.0 и 3.6 (полностью)
Исправления уже выпущены. Проблема закрыта в версиях: MongoDB 8.2.3, 8.0.17, 7.0.28, 6.0.27, 5.0.32 и 4.4.30.
MongoDB прямо отмечает, что клиентская эксплуатация zlib-реализации на сервере может вернуть неинициализированную heap-память без прохождения аутентификации, поэтому рекомендация простая и честная: обновиться как можно быстрее.
И да, неинициализированная память это не абстракция. Как объясняет OP Innovate, в таких утечках иногда всплывают чувствительные данные, которые временно были в оперативке: внутренние состояния, указатели, куски структур, обрывки информации, которые могут помочь злоумышленнику в дальнейших шагах.
Если апдейт мгновенно невозможен, временная мера, отключить zlib-сжатие на стороне сервера MongoDB. Для этого при запуске mongod или mongos нужно явно настроить параметры networkMessageCompressors или net.compression.compressors так, чтобы zlib там не было.
MongoDB поддерживает и другие компрессоры: snappy и zstd. То есть совсем без сжатия уходить не обязательно: можно просто убрать именно zlib и остаться на альтернативе.
Связанные материалы
Как построить секретное хранилище, устойчивое к утечкам
Твоя флешка — не хранилище. Файл в Dropbox — не резерв. А .env в репозитории — просто приглашение для взлома. …