CVE-2023-27533
curl TELNET: пользовательские параметры могли стать управляющими командами
Если программа передаёт пользовательское имя или настройки в TELNET через curl/libcurl 7.7–7.88.1, проверьте обработку этих данных. Служебные байты могли изменить согласование соединения; исправление появилось в 8.0.0.
Кому нужно проверить
Администраторам старых интеграций и разработчикам программ, которые обращаются к оборудованию по TELNET через curl. Владельцу системы следует выяснить, кто может задавать имя и параметры соединения. Важна не только марка продукта, но и конкретная версия, способ установки, операционная система и конфигурация.
В чём риск
Протокол отличает обычный текст от служебных команд с помощью специальных байтов. Уязвимая версия передавала имя и параметры без нужной очистки. Пользователь мог подмешать управляющие данные, из-за чего программа отправляла не то, что намеревалась отправить. Дальнейшее поведение зависит от принимающей стороны и прав соединения; нельзя по одному этому CVE заключить, что сервер уже захвачен.
Затронутые версии
Затронуты curl/libcurl 7.7–7.88.1 при использовании TELNET и передаче имени пользователя или telnet options, содержащих специально сформированные данные. TELNET — протокол удалённого терминального общения. Особенно важен сценарий, в котором приложение принимает такие значения от пользователя и передаёт их библиотеке без собственной проверки. Поддержка TELNET в сборке сама по себе не доказывает использование уязвимого пути.
Исправленные версии
Первое исправление — curl/libcurl 8.0.0: ограничен приём аргументов ASCII-символами. Устанавливайте поддерживаемую исправленную сборку. Поставщик ОС может перенести исправление в старую ветку, сохранив её номер; сверяйте бюллетень по этому CVE.
Что сделать
- 1Найдите приложения и задания с TELNET и уточните версию используемой ими libcurl. Определите, поступают ли имя и параметры из формы, API или другого недоверенного источника.
- 2Попросите разработчика проверить передачу имени пользователя и TELNET options, включая проверку допустимых символов. Не проверяйте ошибку управляющими последовательностями на рабочем оборудовании.
- 3Сохраните конфигурацию соединений и подготовьте отдельный тестовый стенд с вымышленными данными. Проверьте, что после обновления штатные значения работают, а недопустимые отвергаются.
- 4Обновите curl/libcurl до поддерживаемого пакета с исправлением. Если библиотека включена в приложение, обновите или пересоберите приложение и согласуйте его перезапуск.
- 5До обновления проект рекомендует собственную фильтрацию имени и TELNET options. Реализуйте согласованный разрешённый набор значений на границе ввода; при невозможности проверки временно отключите ввод этих параметров пользователем. Это ограничение не заменяет исправление библиотеки.
- 6Проверьте журналы штатных соединений и работу оборудования после обновления. Для отката храните конфигурацию и проверенную сборку; если вернулась уязвимая версия, не возобновляйте недоверенный ввод до восстановления защиты.
Граница между текстовым параметром и управлением протоколом
Статичная текстовая последовательность показывает механизм без опасных байтов. Движение и цвет не используются; клавиатурного управления и специальной версии reduced motion не требуется.
- 1Пользователь задаёт имя или параметры TELNET.
- 2Приложение передаёт их уязвимой libcurl без проверки.
- 3Специальные байты попадают в служебное согласование.
- 4Сервер получает управление, которого приложение не намеревалось отправлять.
- 5Исправление ограничивает приём аргументов; приложение также проверяет ввод.
Примеры конфигурации и проверки
curl -q --versionЗапускайте обычным пользователем в терминале Linux/macOS внутри нужного окружения с установленным curl. В выводе ожидаются версии и строка Protocols; telnet означает поддержку в этом исполняемом файле. Команда не выполняет сетевой запрос, не меняет файлы, откат не нужен. Она не показывает, принимает ли приложение недоверенные параметры, не проверяет встроенную в него libcurl и не выявляет backport-патчи.
Как не подпустить ботов к сайту
BotProtection принимает запросы перед вашим сайтом и фильтрует автоматизированные обращения. Поэтому ботам сложнее добраться до уязвимого компонента и начать его проверять или атаковать, а вероятность успешной автоматизированной атаки становится значительно ниже. Это дополнительный слой защиты: обновление уязвимых компонентов, проверка журналов и реагирование на инциденты остаются обязательными.
Первоисточники
Снизьте шанс атаки до того, как бот дойдёт до сайта
Подключите BotProtection как фильтр перед сайтом: подозрительные автоматизированные запросы отсекаются до обращения к вашему серверу. Это значительно снижает вероятность автоматизированной атаки, но не исправляет саму уязвимость, поэтому обновление и настройка компонентов остаются обязательными.