Все уязвимости

CVE-2024-2398

libcurl HTTP/2 push: утечка памяти при слишком большом числе заголовков

Проверьте приложения с libcurl 7.44.0–8.6.0, если они разрешают HTTP/2 server push. При отклонении push с более чем 1000 заголовками память не освобождалась; исправлено в 8.7.0.

Проверено 6 ноября 2026Medium по оценке проекта curl; advisory не присваивает оценку CVSS.

Кому нужно проверить

Разработчикам и администраторам приложений, которые используют libcurl с HTTP/2 server push. Важна не только марка продукта, но и конкретная версия, способ установки, операционная система и конфигурация.

В чём риск

Если сервер отправит более 1000 заголовков в push и приложение его отклонит, libcurl может не освободить уже занятую память. Повторение ситуации способно увеличить расход памяти клиентского процесса. Сам curl CLI, по advisory, не затронут.

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

Затронуты версии curl/libcurl 7.44.0–8.6.0, но проблема есть только в приложениях, которые явно разрешают HTTP/2 server push (серверную отправку дополнительных ответов). Командная строка curl сама по себе не затронута. Проверьте конкретную сборку и приложение: оно может использовать встроенную libcurl.

Исправленные версии

Исправлено в curl/libcurl 8.7.0. Для пакетов ОС проверьте наличие backport-исправления у поставщика: номер версии пакета может отличаться от версии upstream.

Что сделать

  1. 1Уточните, использует ли ваше приложение libcurl, какая именно библиотека загружена и разрешён ли в коде HTTP/2 server push. Проверка системной команды curl не всегда отвечает на эти вопросы.
  2. 2Подготовьте резервную копию конфигурации/образа приложения и протестируйте обновлённую библиотеку на staging, включая обычные HTTP/2 запросы.
  3. 3Обновите libcurl до 8.7.0 или установите исправленный пакет поставщика. Для статически собранного приложения пересоберите и разверните само приложение.
  4. 4До обновления временно отключите server push, если это можно сделать в приложении без нарушения его работы. Это ограничивает путь к проблеме, но не исправляет библиотеку.
  5. 5После обновления проверьте запуск приложения, журналы и использование памяти под штатной нагрузкой. Держите готовым откат на предыдущий исправленный образ, а не на уязвимую версию.

От заголовков HTTP/2 к расходу памяти

Уязвимый путь существует в приложении с включённым HTTP/2 server push; обычный curl CLI под него не подпадает.

  1. 1Приложение разрешает HTTP/2 server push.
  2. 2Сервер отправляет push с более чем 1000 заголовками.
  3. 3libcurl отклоняет push, но не освобождает всю выделенную память.
  4. 4Исправленная libcurl освобождает заголовки при ошибке.

Примеры конфигурации и проверки

Посмотреть сведения о системной сборке curl (shell)
curl -q --version

Безопасная read-only команда для терминала Linux/macOS, без sudo и сетевого подключения. Показывает версию именно запускаемого исполняемого файла и его возможности. Она не доказывает, какую libcurl загружает другое приложение; для него проверьте зависимости и сведения у владельца сборки. -q отключает чтение стандартного файла настроек. Никаких изменений, требующих отката, команда не вносит.

Как не подпустить ботов к сайту

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

Первоисточники

Снизьте шанс атаки до того, как бот дойдёт до сайта

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