CVE-2024-2004
curl --proto: отключённый протокол мог остаться разрешённым
Проверьте curl/libcurl 7.85.0–8.6.0 в скриптах, которые задают параметр --proto или CURLOPT_PROTOCOLS_STR и отключают все протоколы. В этом необычном случае набор по умолчанию оставался разрешённым; исправлено в 8.7.0.
Кому нужно проверить
Сопровождающим скрипты и приложения, которые программно формируют список разрешённых протоколов curl. Важна не только марка продукта, но и конкретная версия, способ установки, операционная система и конфигурация.
В чём риск
В описанном редком случае логика могла оставить протоколы по умолчанию разрешёнными, несмотря на попытку отключить их все. Это не означает, что любой запуск curl с --proto уязвим; важна точная конфигурация.
Затронутые версии
Затронуты curl/libcurl 7.85.0–8.6.0, если настройка выбора протоколов отключает все протоколы и не добавляет разрешённых. Именно такое сочетание проект curl считает маловероятным на практике. Уязвимость доступна и через CLI, и через API libcurl.
Исправленные версии
Исправлено в curl/libcurl 8.7.0. Проверьте у поставщика ОС, не выпущен ли backport для установленного пакета.
Что сделать
- 1Найдите скрипты и код приложения, где формируются --proto, --proto-redir или CURLOPT_PROTOCOLS_STR. Не запускайте найденные команды на производственных целях ради проверки.
- 2Проверьте логику формирования списка: конфигурация должна явно разрешать нужные протоколы, а не пытаться получить пустой набор.
- 3Проверьте обновление curl/libcurl на тестовом окружении и установите версию 8.7.0 или пакет с исправлением поставщика.
- 4Если обновление временно невозможно, измените конфигурацию так, чтобы она явно включала только необходимые протоколы, и отдельно протестируйте перенаправления. Это временная мера, не замена обновлению.
- 5После развертывания проверьте код возврата для разрешённого и запрещённого протокола на контролируемом тесте; сохраните возможность отката конфигурации.
Почему важен именно пустой набор протоколов
Ошибка связана не с любым запретом протокола, а с обработкой конфигурации, где отключены все варианты.
- 1Скрипт задаёт список разрешённых протоколов.
- 2В редком случае список исключает все протоколы.
- 3Уязвимая версия оставляет набор по умолчанию.
- 4Исправленная версия сохраняет пустой набор и блокирует запрос.
Примеры конфигурации и проверки
command -v curlRead-only команда оболочки для Linux/macOS, не требует повышенных прав и не выполняет сетевых запросов. Выводит путь к исполняемому файлу, который будет найден через PATH; это не выявляет все копии curl и не проверяет параметры в скриптах. Изменений нет, откат не требуется. Затем изучите найденные скрипты вручную и не запускайте непроверенные команды.
Как не подпустить ботов к сайту
BotProtection принимает запросы перед вашим сайтом и фильтрует автоматизированные обращения. Поэтому ботам сложнее добраться до уязвимого компонента и начать его проверять или атаковать, а вероятность успешной автоматизированной атаки становится значительно ниже. Это дополнительный слой защиты: обновление уязвимых компонентов, проверка журналов и реагирование на инциденты остаются обязательными.
Первоисточники
Снизьте шанс атаки до того, как бот дойдёт до сайта
Подключите BotProtection как фильтр перед сайтом: подозрительные автоматизированные запросы отсекаются до обращения к вашему серверу. Это значительно снижает вероятность автоматизированной атаки, но не исправляет саму уязвимость, поэтому обновление и настройка компонентов остаются обязательными.