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

CVE-2023-28322

libcurl: повторно использованный handle путал PUT и POST

Проверьте приложения с libcurl 7.7–8.0.1, если один и тот же easy handle повторно использовали сначала для PUT с callback чтения, затем для POST с CURLOPT_POSTFIELDS. Библиотека могла неожиданно запросить данные у callback; исправлено в 8.1.0.

Проверено 6 ноября 2026Low по оценке проекта curl. MITRE CVE включает оценку CVSS 3.1 5.3 от CISA ADP; эти оценки имеют разный источник и контекст.

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

Разработчикам приложений, которые используют libcurl API, callback чтения и повторно используют easy handle между запросами. Важна не только марка продукта, но и конкретная версия, способ установки, операционная система и конфигурация.

В чём риск

При описанной последовательности libcurl могла неожиданно вызвать callback чтения. Это могло привести к неверной работе приложения, отправке не тех данных или использованию уже освобождённой памяти в коде приложения; advisory отмечает эти последствия как возможные сценарии, а не гарантированный результат.

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

Затронут libcurl 7.7–8.0.1 при HTTP(S)-передачах, если один easy handle сначала выполнял PUT с CURLOPT_READFUNCTION, а затем переиспользовался для POST с CURLOPT_POSTFIELDS. Проблема связана с переходом между запросами на уже используемом handle. Проект curl указывает, что командная строка curl не затронута.

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

Исправлено в libcurl 8.1.0. Для системных пакетов проверяйте backport у дистрибутива; приложение с собственной статической libcurl нужно пересобрать.

Что сделать

  1. 1Найдите места, где приложение повторно использует один CURL easy handle и меняет запрос с PUT на POST. Сверьте порядок вызовов CURLOPT_READFUNCTION, CURLOPT_POSTFIELDS и CURLOPT_POST.
  2. 2До обновления, если такой переход найден, используйте отдельный handle для разных запросов либо явно задавайте метод POST согласно документации API. Изменение проверьте тестами приложения.
  3. 3Сохраните текущую сборку и протестируйте обновлённую libcurl на staging с безопасными тестовыми данными.
  4. 4Обновите до 8.1.0 или пакета с backport; приложения с встроенной библиотекой пересоберите и разверните.
  5. 5Проверьте, что тесты подтверждают метод и тело каждого запроса, а приложение не обращается к уже освобождённым данным. Сохраните откат на проверенную сборку.

Последовательность, при которой путались методы

Важно повторное использование одного handle и переход от PUT с callback к POSTFIELDS.

  1. 1Handle отправляет PUT, используя callback для чтения тела.
  2. 2Приложение повторно использует тот же handle.
  3. 3Приложение задаёт POSTFIELDS для следующей передачи.
  4. 4Уязвимая libcurl неожиданно вызывает старый callback.

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

Проверить версию CLI, не затрагивая приложение (shell)
curl -q --version

Read-only команда для терминала Linux/macOS. Она показывает версию CLI и сведения о связанной с ним libcurl без sudo и без подключения к сети. Она не может подтвердить версию библиотеки, встроенной в другое приложение; для этого изучите его зависимости или запросите сведения у сборщика. Ничего не меняется, откат не нужен.

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

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

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

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

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