Você usa curl? Você deve atualizar agora! A nova versão 7.71.0 corrige dois bugs graves

Agora disponível a nova versão de atualização de “cURL 7.71.0”, no qual se concentraram em resolver dois bugs sérios que permitem senhas de acesso e também a capacidade de sobrescrever arquivos. É por isso que o convite para atualizar para a nova versão é feito.

Para quem não sabe este utilitário, eles deveriam saber que serve para receber e enviar dados pela rede, oferece a capacidade de formar uma solicitação de maneira flexível, definindo parâmetros como cookie, user_agent, referer e qualquer outro cabeçalho.

cURL suporta HTTP, HTTPS, HTTP / 2.0, HTTP / 3, SMTP, IMAP, POP3, Telnet, FTP, LDAP, RTSP, RTMP e outros protocolos de rede. Ao mesmo tempo, uma atualização paralela foi lançada para a biblioteca libcurl, que fornece uma API para usar todas as funções curl em programas em linguagens como C, Perl, PHP, Python.

Principais mudanças em cURL 7.71.0

Esta nova versão é uma atualização e conforme mencionado no início trata-se de solucionar dois bugs, que são os seguintes:

  • Vulnerabilidade CVE-2020-8177- Isso permite que um invasor sobrescreva um arquivo local no sistema ao acessar um servidor de ataque controlado. O problema só se manifesta quando as opções "-J" ("–remote-header-name") e "-i" ("–head") são usadas simultaneamente.

a opção "-J" permite que você salve o arquivo com o nome especificado no cabeçalho "Content-Disposition". Seu já existo um arquivo com o mesmo nome, o programa curl normalmente se recusa a sobrescrever, mas se a opção "-I" está presente, a lógica de verificação foi violada e substituída o arquivo (a verificação é feita no estágio de recepção do corpo da resposta, mas com a opção "-i" os cabeçalhos HTTP saem primeiro e têm tempo para persistir antes de processar o corpo da resposta). Apenas os cabeçalhos HTTP são gravados no arquivo.

  • A vulnerabilidade CVE-2020-8169: isso poderia causar um vazamento no servidor DNS de algumas senhas de acesso ao site (Basic, Digest, NTLM, etc.).

Cuando se usa el carácter «@» en una contraseña, que también se usa como delimitador de contraseña en la URL, cuando se activa una redirección HTTP, curl enviará una parte de la contraseña después del carácter «@» junto con el dominio para determinar o nome.

Por exemplo, se você especificar a senha "passw @ passw" e o nome de usuário "user", curl irá gerar a URL "https: // user: passw @ passw @ example.com / path" em vez de "https: user: passw % 40passw@example.com/path "e envie uma solicitação para resolver o host" pasww@example.com "em vez de" example.com ".

O problema se manifesta ao ativar o suporte para redirecionadores HTTP Relativo (desativado por meio de CURLOPT_FOLLOWLOCATION).

No caso de usar DNS tradicional, o provedor de DNS e o invasor podem encontrar informações sobre uma parte da senha, que pode interceptar o tráfego de rede em trânsito (mesmo se a solicitação original foi feita por HTTPS, já que o tráfego DNS não é criptografado). Ao usar DNS sobre HTTPS (DoH), o vazamento é limitado à instrução DoH.

Finalmente, outra das alterações que está integrada na nova versão é a adição da opção "–retry-all-errors" para tentativas repetidas de realizar operações quando ocorre um erro.

Como instalar cURL no Linux?

Para aqueles que estão interessados ​​em poder instalar esta nova versão do cURL Eles podem fazer isso baixando o código-fonte e compilando-o.

Para fazer isso, a primeira coisa que vamos fazer é baixar o pacote cURL mais recente com a ajuda de um terminal, nele vamos digitar:

wget https://curl.haxx.se/download/curl-7.71.0.tar.xz

Em seguida, vamos descompactar o pacote baixado com:

tar -xzvf curl-7.71.0.tar.xz

Entramos na pasta recém-criada com:

cd curl-7.71.0

Entramos como root com:

sudo su

E nós digitamos o seguinte:

./configure --prefix=/usr \
--disable-static \
--enable-threaded-resolver \
--with-ca-path=/etc/ssl/certs &&
make
make install &&
rm -rf docs/examples/.deps &&
find docs \( -name Makefile\* -o -name \*.1 -o -name \*.3 \) -exec rm {} \; &&
install -v -d -m755 /usr/share/doc/curl-7.71.0 &&
cp -v -R docs/* /usr/share/doc/curl-7.71.0

Finalmente, podemos verificar a versão com:

curl --version

Se você quiser saber mais sobre isso, você pode consultar o seguinte link.