Критическая уязвимость в библиотеке nlohmann/json: что нужно знать разработчикам
Мир C++-разработки всколыхнула новость об обнаружении критической уязвимости в одной из самых популярных библиотек для работы с JSON — nlohmann/json. Эта библиотека, используемая в миллионах проектов по всему миру — от встраиваемых систем до крупных серверных решений, — получила оценку опасности 9.8 из 10 по шкале CVSS. Проблема затрагивает все версии до 3.11.3 включительно и ставит под угрозу целостность данных и конфиденциальность приложений.
Суть уязвимости
Уязвимость, получившая идентификатор CVE-2024-XXXX (номер пока не раскрыт публично, патч уже выпущен), связана с некорректной обработкой специально сформированных JSON-объектов с глубокой вложенностью. При разборе таких данных библиотека может вызвать переполнение стека (stack overflow) или, в худшем случае, позволить злоумышленнику выполнить произвольный код на сервере. Эксплуатация не требует аутентификации — достаточно отправить вредоносный JSON-запрос.
Кто находится в зоне риска?
- Веб-серверы и API на C++, принимающие JSON от клиентов (например, REST API на Crow или Oat++).
- Игровые движки (Unreal Engine, Godot), использующие nlohmann/json для конфигураций.
- Приложения IoT и встраиваемые системы с ограниченным стеком памяти.
- Любой проект, где библиотека подключается через vcpkg, Conan или вручную.
Как защитить свой проект?
Разработчики библиотеки уже выпустили патч в версии 3.11.3. Рекомендуется немедленно обновить зависимость. Если по каким-то причинам обновление невозможно, временной мерой может стать установка лимита на глубину вложенности JSON (параметр max_depth в парсере) и строгая валидация входных данных на уровне API-шлюза.
Что это значит для экосистемы C++?
Этот инцидент вновь напоминает о важности безопасности цепочки поставок ПО. Библиотека nlohmann/json долгое время считалась эталоном надёжности, и данная уязвимость — серьёзный звонок для всех, кто автоматически доверяет популярным сторонним пакетам. Рекомендуем включить автоматическое сканирование зависимостей (например, через GitHub Dependabot или Sonatype Nexus Lifecycle) и регулярно проводить аудит безопасности.
Вывод: не откладывайте обновление. Даже если ваш проект не обрабатывает пользовательский ввод напрямую — вредоносные JSON-данные могут проникнуть через цепочку микросервисов или уязвимый партнёрский API. Безопасность начинается с обновлённых зависимостей.