Skip to main content

Como atualizar o cURL

11 de outubro de 2023

0 minutos de leitura

Em 3 de outubro de 2023, a equipe do curl anunciou antecipadamente uma correção iminente para uma vulnerabilidade de alta gravidade que afeta tanto libcurl quanto curl. 

Os produtos da Snyk ajudam você a identificar e corrigir pacotes e contêineres vulneráveis, mas esta vulnerabilidade afeta o curl, uma ferramenta de linha de comando usada diariamente por muitos desenvolvedores. Ela também é distribuída com vários sistemas operacionais, então achamos útil compartilhar algumas dicas para atualizar a ferramenta no seu sistema.

Como atualizar o cURL no seu sistema operacional

Nesta seção, apresentamos instruções para verificar a versão e atualizar diferentes sistemas operacionais. Saber disso com antecedência ajudará você a fazer a atualização quando a versão 8.4.0 for lançada.

Como atualizar o cURL no macOS

Observação: Esta seção explica como usar a versão mais recente do curl na versão mais recente do macOS em Macs com chip M1. Os resultados podem variar em Macs com Intel ou em versões mais antigas do macOS.

No macOS Ventura (13.5.2) e versões posteriores, o curl vem instalado por padrão. No entanto, é uma versão antiga do curl (8.1.2). A Snyk recomenda instalar uma versão mais recente e defini-la como padrão, pois a versão integrada do curl tem vulnerabilidades conhecidas.

A boa notícia é que, se você atualizar para a versão mais recente seguindo estas instruções, estará pronto para atualizar novamente quando o curl 8.4.0 for lançado.

O gerenciador de pacotes de terceiros mais popular para macOS é o Homebrew. A versão mais recente do curl no Homebrew é a 8.3.0, lançada em meados de setembro.

Instale o curl com o Homebrew executando o seguinte comando:

brew install curl

Ainda não acabou. Esse tipo de instalação é chamado de “keg only”. O Homebrew evita substituir ou sobrescrever os utilitários que vêm instalados por padrão no macOS. Portanto, você precisa indicar explicitamente que quer usar a versão do curl instalada pelo Homebrew em vez da versão padrão do sistema. Para isso, verifique se o caminho do executável do Homebrew aparece primeiro no PATH do sistema. O local padrão das instalações do Homebrew no macOS é /opt/homebrew (você pode verificar o caminho do Homebrew com o comando brew --prefix). Para colocar a versão do Homebrew no início do PATH, use o comando a seguir (com o prefixo do Homebrew):

echo 'export PATH="/opt/homebrew/opt/curl/bin:$PATH"' >> ~/.zshrc

Observação: versões anteriores do Homebrew usavam outro caminho, e versões antigas do macOS usavam bash em vez de zsh.

Para confirmar que está usando a versão correta do curl, abra uma nova janela do terminal e execute:

curl --version

Você deverá ver algo parecido com isto:

curl 8.3.0 (aarch64-apple-darwin22.6.0) libcurl/8.3.0 (SecureTransport) OpenSSL/3.1.3 zlib/1.2.11 brotli/1.1.0 zstd/1.5.5 libidn2/2.3.4 libssh2/1.11.0 nghttp2/1.56.0 librtmp/2.3 OpenLDAP/2.6.6
Release-Date: 2023-09-13

Quando o Homebrew for atualizado com a versão 8.4.0 do curl, basta executar novamente o comando brew install curl para obter a versão mais recente. 

Atualizaremos esta publicação quando a versão 8.4.0 for lançada para o Homebrew.

Como atualizar o cURL no Windows

O Windows 10 (build 1803) e versões posteriores vêm com o curl pré-instalado, mas em uma versão antiga. Para verificar se você tem o curl e qual versão está usando, abra o Prompt de Comando. Clique no menu Iniciar e digite cmd no teclado. No Prompt de Comando, digite curl --version para conferir se o curl está instalado e qual é a versão. Se for anterior à 8.4.0, será necessário atualizar.

C:\Users\bc>curl --version
curl 8.0.1 (Windows) libcurl/8.0.1 Schannel WinIDN
Release-Date: 2023-03-20
Protocols: dict file ftp ftps http https imap imaps pop3 pop3s smtp smtps telnet tftp
Features: AsynchDNS HSTS HTTPS-proxy IDN IPv6 Kerberos Largefile NTLM SPNEGO SSL SSPI threadsafe Unicode UnixSockets

Outra coisa a verificar é se você está usando a versão do curl pré-instalada no Windows ou uma instalação separada. Para conferir, digite where curl no Prompt de Comando. Se o caminho exibido no resultado incluir C:\Windows\System32, ele aponta para a versão pré-instalada do curl:

C: \Users\bc>where curl
C: \Windows\System32\curl.exe

Depois de identificar se o curl está instalado, qual versão você está usando e se ela é a versão pré-instalada ou uma instalação separada, você terá todas as informações necessárias para atualizar para a versão mais recente. A versão pré-instalada do curl é fornecida e gerenciada pela Microsoft e, portanto, só deve ser atualizada com segurança por meio de uma atualização do Windows publicada pela Microsoft. Para verificar se há uma atualização oficial do Windows, clique no menu Iniciar, digite “Windows Update” e selecione “Verificar se há atualizações”. O aplicativo Configurações será aberto na tela do Windows Update. Clique no botão “Verificar se há atualizações” para buscar as atualizações mais recentes lançadas pela Microsoft. É provável que uma delas inclua a versão corrigida do curl.

Além de uma atualização oficial do Windows, há algumas opções para atualizar para a versão mais recente e usá-la no lugar da versão pré-instalada. Todas essas opções envolvem modificar as variáveis de ambiente PATH. Se você não se sentir à vontade para fazer isso, aguarde uma atualização oficial do Windows, conforme indicado acima.

Há algumas maneiras de instalar uma versão mais recente do curl no Windows: 

A maneira mais rápida e fácil de instalar ou atualizar o curl no Windows é usar o Winget.

Como instalar o cURL com o Winget

No Prompt de Comando, execute winget install curl.curl. O curl será instalado no diretório nativo de pacotes do winget e adicionado à variável de ambiente User Path. No entanto, ao executar curl --version,, o sistema usará por padrão o curl pré-instalado, e não a versão recém-instalada. 

Encontre o valor do curl que o Winget adicionou à variável User Path e copie-o. Em seguida, adicione-o à variável System Path com prioridade máxima (acima de “C:\Windows\system32”). O resultado deve ser parecido com este:

Caixa de diálogo “Editar variável de ambiente” do Windows mostrando entradas PATH, incluindo uma pasta de instalação do cURL selecionada.

Depois disso, volte ao Prompt de Comando e execute refreshenv para que as alterações na variável de ambiente sejam aplicadas. Quando o processo terminar, execute curl --version para confirmar que agora você está usando a versão mais recente do curl instalada pelo Winget.

Como instalar o cURL com o Chocolatey

Primeiro, instale o Chocolatey, caso ainda não tenha feito isso. Consulte a documentação do Chocolatey para saber mais. Depois de instalar e preparar tudo, você pode executar o seguinte comando no Prompt de Comando ou terminal como administrador:

choco install curl
Prompt de Comando do Administrador do Windows mostrando o Chocolatey instalando o curl e solicitando a execução do script de instalação do pacote

Mas ainda não acabou. Se você executar curl --version, verá que o sistema ainda informa a versão anterior. Para corrigir isso, atualize as variáveis de ambiente do sistema. Clique no menu Iniciar, digite Editar as variáveis de ambiente do sistema e selecione a primeira opção. Quando a janela Propriedades do Sistema abrir, clique no botão Variáveis de Ambiente…. Uma nova janela chamada Variáveis de Ambiente será aberta. Nela, procure a seção Variáveis do sistema e encontre a entrada Path na coluna Variável.

Janela de variáveis do sistema do Windows, com a variável Path selecionada e seu valor separado por ponto e vírgula exibido.

Clique no botão Editar… e encontre a entrada do chocolatey: C:\ProgramData\chocolatey\bin. Selecione essa entrada e use o botão Mover para Cima para levá-la ao início da lista. Em seguida, clique em OK.

Agora, volte ao Prompt de Comando ou terminal e digite refreshenv para aplicar as alterações feitas nas variáveis de ambiente. Depois, execute curl --version novamente. Você deverá ver que a versão atualizada está sendo usada. Também é possível executar where curl para ver as duas instâncias do curl instaladas na sua máquina: a primeira deve ser o local da nova versão, e a segunda, o local da instalação do sistema. Pronto: você já pode começar a usar a nova versão do curl.

C:\Users\bc>where curl
C:\ProgramData\chocolatey\bin\curl.exe
C:\Windows\System32\curl.exe

Como atualizar o cURL no Linux

Se você executar curl --version e descobrir que está usando uma versão vulnerável, poderá atualizar o sistema assim que a versão corrigida estiver disponível.

A atualização do curl no Linux depende principalmente do gerenciador de pacotes usado pela distribuição, mas estes comandos dão uma ideia de como proceder. Em geral, você deve pedir ao gerenciador de pacotes para atualizar o índice de pacotes e, em seguida, instalar uma nova versão. Veja os comandos para cada distribuição:

  • Para distribuições baseadas em apt, como Debian ou Ubuntu:

    • Atualizar os índices: apt-get update

    • Instalar a versão mais recente: apt-get upgrade curl

  • Para pacotes snap (principalmente no Ubuntu):

    • Instalar a versão mais recente: snap install curl

  • Para distribuições que usam dnf, como RHEL, Rocky e Fedora:

    • Verificar se há atualizações: dnf check-update

    • Instalar a versão mais recente: dnf install curl

  • E, para apk no Alpine:

    • Atualizar os índices: apk update

    • Instalar a versão mais recente: apk add curl

A disponibilidade de uma versão atualizada depende de as distribuições atualizarem seus repositórios de pacotes. Se, depois de executar o comando adequado para sua distribuição, você executar curl --version, e não vir a versão 8.4.0, verifique o PATH para garantir que nenhuma outra versão esteja à frente dela. Outra opção é acessar curl - Download para encontrar um binário compilado para sua plataforma.

$ curl --version
curl 7.81.0 …

$ which curl
/home/ubuntu/bin/curl

$ echo $PATH
/home/ubuntu/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

$ /usr/bin/curl --version
curl 8.4.0 …

No exemplo acima, há uma cópia da versão antiga em ~/bin/curl. Como esse caminho aparece primeiro no meu PATH, é essa cópia que está sendo usada. Remova a versão antiga ou tire-a do PATH para resolver o problema.

Está se sentindo corajoso? Compile o curl você mesmo!

A compilação mais recente a partir do código-fonte resulta na versão 8.4.0-DEV. Embora não haja garantia de que o código mais recente já inclua a correção para a vulnerabilidade de alta gravidade, se você se sentir à vontade para compilar a partir do código-fonte, poderá obter a versão mais recente assim que ela for disponibilizada, em 11 de outubro.

Nesta seção, vamos mostrar como compilar em um Mac com chip M1 e macOS Ventura. A equipe de desenvolvimento, liderada por Daniel Stenberg (badger no GitHub), fez um trabalho notável para facilitar a compilação do curl em diferentes sistemas operacionais.

A documentação de instalação tem uma seção sobre compilação e instalação no Mac que funcionou sem nenhum ajuste para nós. Observação: você precisará instalar as ferramentas de linha de comando do Xcode para que isso funcione.

Executei o seguinte para compilar o curl:

autoreconf -fi
export ARCH=arm64
export SDK=macosx
export DEPLOYMENT_TARGET=13.0
export CFLAGS="-arch $ARCH -isysroot $(xcrun -sdk $SDK --show-sdk-path) -m$SDK-version-min=$DEPLOYMENT_TARGET"
./configure --host=$ARCH-apple-darwin --prefix $(pwd)/artifacts --with-secure-transport
make -j8

Em seguida, confirmei a compilação com:

./src/.libs/curl --version

curl 8.4.0-DEV (aarch64-apple-darwin) libcurl/8.4.0-DEV SecureTransport zlib/1.2.11
Release-Date: [unreleased]

Você pode colocar o curl recém-compilado em um diretório local ~/bin ou em outro diretório que apareça antes do curl padrão no PATH, até que sua distribuição ou sistema operacional disponibilize uma atualização. Quando ela estiver disponível, recomendamos adotá-la e remover as cópias avulsas para evitar problemas com vulnerabilidades futuras.

Comece a jogar Capture the Flag

Aprenda a resolver desafios de Capture the Flag assistindo sob demanda ao nosso workshop virtual introdutório.