Выпуск curl 7.71.0 с устранением двух уязвимостей

Доступна новая версия утилиты для получения и отправки данных по сети — curl 7.71.0, предоставляющей возможность гибкого формирования запроса с заданием таких параметров, как cookie, user_agent, referer и любых других заголовков. cURL поддерживает HTTP, HTTPS, HTTP/2.0, HTTP/3, SMTP, IMAP, POP3, Telnet, FTP, LDAP, RTSP, RTMP и другие сетевые протоколы. Одновременно вышло обновление параллельно развиваемой библиотеки libcurl, предоставляющей API для задействования всех функций curl в программах на таких языках, как Си, Perl, PHP, Python.

В новом выпуске добавлена опция «—retry-all-errors» для осуществления повторных попыток выполнения операций при возникновении любых ошибок и устранено две уязвимости:

  • Уязвимость CVE-2020-8177 позволяет перезаписать локальный файл в системе при обращении к подконтрольному атакующему серверу. Проблема проявляется только при одновременном использовании опций «-J» («—remote-header-name») и «-i» («—head»). Опция «-J» позволяет сохранить файл с именем, указанным в заголовке
    «Content-Disposition». В случае если файл с таким именем уже существует, программа curl в штатном режиме отказывается выполнить перезапись, но в случае наличия опции «-i» логика проверки нарушается и файл перезаписывается (проверка осуществляется на этапе получения тела ответа, но при опции «-i» вначале выводятся HTTP-заголовки и они успевают сохраниться до начала обработки тела ответа). В файл записываются только HTTP-заголовки, но сервер может отдать вместо заголовков произвольные данные и они будут записаны.

  • Уязвимость CVE-2020-8169 может привести к утечке на сервер DNS части некоторых паролей доступа к сайту (Basic, Digest, NTLM и т.п.). При использовании символа «@» в пароле, который также используется в качестве разделителя пароля в URL, при срабатывании HTTP-перенаправления curl отправит часть пароля после символа «@» вместе с доменом для определения имени. Например, при указании пароля «[email protected]» и имени пользователя «dan», curl сгенерирует URL «https://dan:[email protected]@example.com/path» вместо «https://dan:passw%[email protected]/path» и отправит запрос на резолвинг хоста «[email protected]» вместо «example.com».

    Проблема проявляется при включении поддержки относительных HTTP-редиректорв (отключаются через CURLOPT_FOLLOWLOCATION). В случает использования традиционных DNS информацию о части пароля может узнать провадер DNS и атакующий, имеющий возможность перехвата транзитного сетевого трафика (даже если исходный запрос был по HTTPS, так как DNS-трафик не шифруется). При применении DNS-over-HTTPS (DoH) утечка ограничивается оператором DoH.

Источник: opennet.ru