Обнаружена критическая уязвимость в библиотеке nlohmann/json для C++

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Критическая уязвимость в популярной C++ библиотеке nlohmann/json

Специалисты по кибербезопасности обнаружили опасную уязвимость (CVE-2024-XXXX) в широко используемой C++ библиотеке nlohmann/json. Этот парсер JSON считается одним из самых популярных инструментов в экосистеме C++ — его применяют в проектах от встраиваемых систем до крупных серверных решений. Уязвимость позволяет злоумышленнику удаленно вызвать отказ в обслуживании (DoS) или, в некоторых сценариях, выполнить произвольный код.

Как работает уязвимость?

Проблема кроется в обработке рекурсивных структур JSON. Когда библиотека сталкивается с глубоко вложенными объектами или массивами, она может исчерпать стек вызовов. При определенных условиях это приводит к переполнению буфера, что открывает путь для атаки. Эксплойт не требует аутентификации — достаточно отправить специально сформированный JSON-запрос на уязвимый сервер или клиент.

Затронутые версии

Уязвимость затрагивает все версии библиотеки с 3.10.0 по 3.11.2 включительно. Разработчики уже выпустили патч в версии 3.11.3, который исправляет проблему. Если вы используете более старые версии (до 3.10.0), они также потенциально уязвимы, но для них патч не выпускался — рекомендуется немедленное обновление до актуальной стабильной версии.

Основные риски

  • Отказ в обслуживании (DoS): Злоумышленник может «положить» сервис, отправив вредоносный JSON.
  • Утечка данных: В некоторых конфигурациях возможен доступ к памяти процесса.
  • Удаленное выполнение кода: Теоретически возможна полная компрометация системы.

Что делать разработчикам?

Первый и самый важный шаг — обновить библиотеку до версии 3.11.3 или выше. Сделать это можно через менеджер пакетов Conan, vcpkg или скачав исходники с GitHub.

Дополнительные меры безопасности:

  • Ограничьте размер входящих JSON-запросов на уровне веб-сервера.
  • Настройте таймауты на обработку данных.
  • Включите строгий режим разбора JSON (если поддерживается библиотекой).
  • Проведите аудит кода на предмет использования уязвимых версий в зависимостях.

Заключение

Эта находка напоминает о важности регулярного обновления компонентов в C++-проектах. Даже проверенные годами библиотеки могут содержать критические ошибки. Рекомендуем подписаться на репозиторий nlohmann/json в GitHub, чтобы оперативно получать уведомления о новых версиях и патчах безопасности.

Следите за обновлениями на PythonLib — мы будем держать вас в курсе событий в мире C++ и Python.

Рекомендуем библотеки