Выпуск 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@[email protected]/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