CVE-2024-6874
libcurl macOS: чтение за границей буфера при преобразовании IDN
Проверьте libcurl 8.8.0, собранную с macidn — системной IDN-библиотекой Apple. Имя ровно 256 байт могло вызвать чтение соседней памяти; обновите до 8.9.0. Командный curl этим путём не затронут.
Кому нужно проверить
Разработчикам приложений Apple, использующим URL API libcurl для международных доменных имён. Важна не только марка продукта, но и конкретная версия, способ установки, операционная система и конфигурация.
В чём риск
Функция могла прочитать данные за пределами буфера и вернуть часть стека. Применимость требует конкретного API, длины имени и backend macidn.
Затронутые версии
Затронута только libcurl 8.8.0 с macidn на macOS, iOS и других системах Apple, когда URL API curl_url_get() преобразует punycode-имя длиной ровно 256 байт. Сборки с другими IDN-backend не затронуты; командный curl по advisory не использует этот путь.
Исправленные версии
Исправлено в libcurl 8.9.0; также возможны патч или другой IDN-backend. Смена backend требует проверки совместимости.
Что сделать
- 1Составьте список приложений с собственной libcurl и определите IDN-backend; версия командного curl недостаточна.
- 2Сохраните проект и lock-файлы, проверьте обновление на тестовой сборке с ASCII-доменами, IDN и ошибками преобразования.
- 3Обновите libcurl до 8.9.0 или пакет платформы, пересоберите и подготовьте возврат предыдущей исправленной сборки.
- 4Временно ограничьте преобразование непроверенных имён, если это безопасно; ограничение не заменяет обновление.
- 5После релиза подтвердите библиотеку и обработку ошибок; не публикуйте дампы памяти и входные имена.
Почему важны backend и длина имени
Обычный запрос curl не равен вызову URL API libcurl.
- 1Приложение вызывает curl_url_get() для IDN.
- 2Сборка использует macidn и имя длиной 256 байт.
- 3Буфер заполняется без завершающего нулевого байта.
- 4Функция может прочитать соседние данные стека.
Примеры конфигурации и проверки
curl -q --versionТерминал проверяемого окружения, без sudo. Команда показывает системную сборку и не вызывает URL API; встроенная libcurl приложения может быть другой.
Как не подпустить ботов к сайту
BotProtection принимает запросы перед вашим сайтом и фильтрует автоматизированные обращения. Поэтому ботам сложнее добраться до уязвимого компонента и начать его проверять или атаковать, а вероятность успешной автоматизированной атаки становится значительно ниже. Это дополнительный слой защиты: обновление уязвимых компонентов, проверка журналов и реагирование на инциденты остаются обязательными.
Первоисточники
Снизьте шанс атаки до того, как бот дойдёт до сайта
Подключите BotProtection как фильтр перед сайтом: подозрительные автоматизированные запросы отсекаются до обращения к вашему серверу. Это значительно снижает вероятность автоматизированной атаки, но не исправляет саму уязвимость, поэтому обновление и настройка компонентов остаются обязательными.