Выпуск 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 отправит часть пароля после символа «@» вместе с доменом для определения имени. Например, при указании пароля «passw@rd123» и имени пользователя «dan», curl сгенерирует URL «https://dan:passw@rd123@example.com/path» вместо «https://dan:passw%40rd123@example.com/path» и отправит запрос на резолвинг хоста «rd123@example.com» вместо «example.com».

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

Источник: http://www.opennet.ru/opennews/art.shtml?num=53239