CVE-2024-9681
curl HSTS: поддомен мог изменить срок защиты родительского домена
Проверьте curl и libcurl 7.74.0–8.10.1, если приложение включает HSTS и обращается по HTTP к поддомену и родительскому домену. Ошибка могла изменить срок принудительного перехода на HTTPS; обновите до 8.11.0.
Кому нужно проверить
Разработчикам и администраторам сервисов, использующих curl/libcurl для автоматических запросов, HSTS-кэш и несколько уровней одного домена. Важна не только марка продукта, но и конкретная версия, способ установки, операционная система и конфигурация.
В чём риск
Клиент мог неверно решить, когда преобразовывать HTTP в HTTPS. Запрос мог уйти по HTTP раньше ожидаемого или временно не пройти из-за слишком долгого срока. Это не доказывает компрометацию сервера.
Затронутые версии
Затронуты curl/libcurl 7.74.0–8.10.1 при включённом HSTS (HTTP Strict Transport Security — правило перехода с HTTP на HTTPS). Нужны записи обоих доменов в HSTS-кэше, обращения к x.example.com и example.com и URL со схемой HTTP. Заголовок Strict-Transport-Security от поддомена мог изменить срок родительской записи.
Исправленные версии
Исправлено в curl/libcurl 8.11.0. Пакет ОС может содержать backport, поэтому сверяйте статус исправления у поставщика.
Что сделать
- 1Проверьте версию curl, libcurl и факт включения HSTS в каждом рабочем окружении; системный curl не доказывает версию библиотеки приложения.
- 2Сделайте защищённую резервную копию HSTS-кэша и конфигурации, затем проверьте обновление на staging.
- 3Установите 8.11.0 или пакет с backport; статически собранное приложение пересоберите и подготовьте откат на исправленный образ.
- 4До обновления явно используйте HTTPS и не полагайтесь на HSTS-кэш как на единственную защиту. Отключение HSTS ослабляет защиту и не заменяет исправление.
- 5После обновления проверьте фактическую версию процесса и журналы; не публикуйте HSTS-файлы.
Как срок HSTS мог попасть не в ту запись
Ошибка проявляется только при сочетании нескольких условий.
- 1Клиент хранит записи HSTS для поддомена и родительского домена.
- 2Поддомен присылает новый срок Strict-Transport-Security.
- 3Срок ошибочно влияет на запись родительского домена.
- 4Следующий HTTP-запрос переходит на HTTPS слишком рано или поздно.
Примеры конфигурации и проверки
curl -q --versionЗапускайте локально без sudo. Команда не делает сетевой запрос и ничего не меняет. Наличие HSTS показывает возможность функции, но не доказывает, что её включает конкретное приложение.
Как не подпустить ботов к сайту
BotProtection принимает запросы перед вашим сайтом и фильтрует автоматизированные обращения. Поэтому ботам сложнее добраться до уязвимого компонента и начать его проверять или атаковать, а вероятность успешной автоматизированной атаки становится значительно ниже. Это дополнительный слой защиты: обновление уязвимых компонентов, проверка журналов и реагирование на инциденты остаются обязательными.
Первоисточники
Снизьте шанс атаки до того, как бот дойдёт до сайта
Подключите BotProtection как фильтр перед сайтом: подозрительные автоматизированные запросы отсекаются до обращения к вашему серверу. Это значительно снижает вероятность автоматизированной атаки, но не исправляет саму уязвимость, поэтому обновление и настройка компонентов остаются обязательными.