CVE-2024-7264
curl: ошибка чтения даты сертификата в отдельных сборках
Ошибка разбора даты в сертификате могла завершить процесс curl или вернуть приложению часть памяти. Применимость зависит не только от версии curl, но и от TLS-библиотеки. Проверьте конкретную сборку и обновите её.
Кому нужно проверить
Администраторам программ, которые получают данные по HTTPS через curl, и разработчикам приложений с libcurl. Особенно важно проверить сборки Windows и другие окружения, где curl может использовать не OpenSSL. Важна не только марка продукта, но и конкретная версия, способ установки, операционная система и конфигурация.
В чём риск
Сертификат сообщает клиенту сведения о сервере, включая срок действия. TLS — механизм защищённого соединения — сначала проверяет сертификат своей библиотекой. Затем libcurl может дополнительно разобрать его поля для приложения. Ошибка в обработке некорректной даты позволяла прочитать данные за границей выделенного участка памяти. Наиболее вероятный результат по advisory — падение процесса. При использовании CURLINFO_CERTINFO часть памяти могла вернуться вызывающему приложению. Это не равнозначно автоматической передаче этой памяти удалённому серверу и не подтверждает выполнение кода.
Затронутые версии
Общий диапазон upstream — curl/libcurl 7.32.0–8.9.0, но для актуальных на момент advisory TLS-библиотек начало различается: GnuTLS с 7.42.0, Schannel с 7.50.0, Secure Transport с 7.79.0, mbedTLS с 8.9.0. Изначально код использовал позднее исключённый GSKit. Сборки с другими TLS-библиотеками, включая OpenSSL, этой ошибкой не затронуты. Дефект достигается после успешного TLS-согласования: если TLS-библиотека отвергла некорректную дату раньше, ошибка libcurl не срабатывает.
Исправленные версии
Первое исправление — curl/libcurl 8.9.1. Advisory предупреждает, что окончательный патч дополняет предыдущую неполную попытку исправления. Для пакета поставщика сверяйте именно закрытие CVE-2024-7264; старый номер может сохраняться после backport. Выбирайте поддерживаемое обновление, а не исторический минимум 8.9.1 как универсальную цель.
Что сделать
- 1Проверьте версию curl и название TLS-библиотеки в окружении сетевого задания. Сохраните результат во внутреннем учёте. Для приложения с собственной libcurl отдельно запросите сведения о его сборке: системный curl может быть совсем другим.
- 2Сопоставьте сборку с диапазоном именно её TLS-библиотеки. Разработчику следует проверить использование сведений о сертификате и CURLINFO_CERTINFO. Не испытывайте рабочий процесс повреждёнными сертификатами и не отключайте проверку сертификатов ради воспроизведения.
- 3Запланируйте обновление пакета или приложения до поддерживаемого исправленного выпуска. Сохраните конфигурацию доверенных сертификатов и резервную копию данных задания. На тестовой копии проверьте обычные HTTPS-соединения, внутренние центры сертификации и корпоративный прокси, если он используется.
- 4Производитель допускает сборку с незатронутой TLS-библиотекой. Рассматривайте её только как альтернативу для специалистов: смена библиотеки может изменить доверенные сертификаты и совместимость. Без готовой проверенной сборки безопаснее временно ограничить затронутые обращения, чем самостоятельно менять TLS в рабочем приложении. Ограничение адресов не устраняет дефект.
- 5Разверните обновление и перезапустите потребителей старой libcurl. Для статически включённой библиотеки пересоберите приложение. Заранее подготовьте восстановление предыдущего образа; если он уязвим, не возвращайте неограниченную обработку внешних сертификатов.
- 6Повторите штатные обращения и подтвердите версию реально работающей сборки. Проверьте журналы падений и обработку сведений о сертификате. Не публикуйте дампы памяти: в них могут быть секреты. Отсутствие прежних падений не заменяет обновление.
Почему проверки номера curl недостаточно
Нужна затронутая версия конкретной сборки curl. Дополнительный разбор libcurl может прочитать память за границей поля.
- 1Нужна затронутая версия конкретной сборки curl.
- 2Сборка должна использовать затронутую TLS-библиотеку.
- 3Первичная проверка должна пропустить некорректное поле даты.
- 4Дополнительный разбор libcurl может прочитать память за границей поля.
Примеры конфигурации и проверки
curl -q --versionТерминал Linux/macOS с curl; выполняйте без sudo внутри проверяемого окружения. В первой строке ожидаются curl, libcurl и сведения о TLS-библиотеке, например OpenSSL или GnuTLS. -q первым аргументом исключает стандартный файл настроек. Сетевого запроса и изменения файлов нет, откат не требуется. Сведения относятся к этому исполняемому файлу; для сборок с выбором TLS-библиотеки во время работы и для встроенной libcurl уточните фактически выбранную библиотеку у разработчика. Номер версии не показывает backport-патчи.
Как не подпустить ботов к сайту
BotProtection принимает запросы перед вашим сайтом и фильтрует автоматизированные обращения. Поэтому ботам сложнее добраться до уязвимого компонента и начать его проверять или атаковать, а вероятность успешной автоматизированной атаки становится значительно ниже. Это дополнительный слой защиты: обновление уязвимых компонентов, проверка журналов и реагирование на инциденты остаются обязательными.
Первоисточники
Снизьте шанс атаки до того, как бот дойдёт до сайта
Подключите BotProtection как фильтр перед сайтом: подозрительные автоматизированные запросы отсекаются до обращения к вашему серверу. Это значительно снижает вероятность автоматизированной атаки, но не исправляет саму уязвимость, поэтому обновление и настройка компонентов остаются обязательными.