Vulnerabilidade de alta severidade encontrada no libcurl e no curl (CVE-2023-38545)
Hadas Bloom
4 de outubro de 2023
0 minutos de leituraAtualização: 11 de outubro de 2023
Hoje, às 06:00 UTC, os mantenedores do cURL lançaram as versões 8.4.0 de curl e libcurl para corrigir um estouro de buffer baseado em heap de alta severidade (prova de conceito e a notificação inicial), que poderia afetar sistemas com uma configuração e pré-requisitos específicos.
Esta vulnerabilidade zero-day está presente em pacotes de vários ecossistemas de código aberto gerenciados e não gerenciados, incluindo, entre outros, C/C++, cargo, cocoapods, npm, NuGet, pip e pub, além de várias distribuições Linux, como Alpine, Debian, RHEL e outras.
Esta é a primeira vulnerabilidade de alta severidade encontrada no curl em vários anos (a anterior foi no início de 2021).

As versões afetadas do curl/libcurl (desde março de 2020) são:
A complexidade da exploração é considerada high e só pode ser acionada em determinadas situações. Como explicado na publicação do mantenedor, Como criei um estouro de heap no curl, para explorar a vulnerabilidade, a biblioteca vulnerável precisa estar se comunicando com um servidor não controlado ou comprometido (para exploração por meio de um redirecionamento HTTP) ou usando uma URL controlada por um invasor por meio de um proxy SOCKS5 com a resolução de nomes de host ativada, o que aciona a condição vulnerável — e, mesmo assim, trata-se de um estouro de heap com conjunto de caracteres limitado. É extremamente difícil transformar estouros de heap em sistemas modernos em execução arbitrária de código (ACE), daí a alta complexidade da exploração.
Agora que a vulnerabilidade foi divulgada e está sendo rastreada, você pode usar o recurso de relatórios da Snyk para encontrar projetos afetados: selecione sua organização e, na barra lateral, escolha Relatórios. Em detalhes do problema, selecione +Adicionar filtro, escolha CVE e informe o número da CVE: CVE-2023-38545

Este blog será atualizado sempre que novas informações estiverem disponíveis.
Atualização: 4 de outubro de 2023
Em 3 de outubro de 2023, Daniel Stenberg, mantenedor de longa data do curl e autor original, publicou uma nota no LinkedIn e no X (antigo Twitter) sobre o lançamento da versão 8.4.0 do curl, que incluirá uma correção para "provavelmente o pior problema de segurança encontrado no curl em muito tempo". Esse problema deve ser levado a sério, já que os mantenedores do curl têm se manifestado para minimizar o risco associado à maioria das vulnerabilidades relatadas no curl no passado (um exemplo recente é o artigo CVE-2020-19909 é tudo o que há de errado com as CVEs). Neste caso excepcional, eles estão chamando atenção especificamente para o risco — e acrescentam: "prepare-se".
Segundo os mantenedores, a versão corrigida, 8.4.0, será lançada em 11 de outubro de 2023, por volta das 06:00 UTC.
Hoje mais cedo (4 de outubro de 2023), as CVEs que serão usadas para registrar as informações sobre a vulnerabilidade foram anunciadas em uma discussão no GitHub.
A CVE-2023-38545 será atribuída ao problema de alta severidade, que afeta tanto o libcurl quanto o curl. Também será corrigido um problema adicional de baixa severidade, identificado como CVE-2023-38546, que afeta apenas o libcurl.
O que sabemos até agora?
O cURL é um projeto popular que oferece a biblioteca libcurl (usada para transferências de URL) e a ferramenta de linha de comando curl (usada para obter e enviar dados por meio de URLs). O cURL foi lançado inicialmente há 27 anos e é usado em toda parte desde 1996.
Muitas, se não todas, as distribuições Linux compatíveis com a Snyk usam libcurl; por isso, o impacto potencial é amplo.
Como se preparar para corrigir o problema
Verifique com antecedência o uso de contêineres e pacotes para avaliar sua exposição
Identifique os hosts com o curl instalado e descubra como ele foi instalado
Confira a versão do curl que você está usando com
curl --version
Avalie sua exposição
Antes do lançamento da versão corrigida do libcurl, você pode usar a Snyk para encontrar rapidamente os projetos de código aberto e as imagens de contêiner que podem ser afetados.
Acesse Dependências na barra lateral da interface do app Snyk. Na visualização Dependências, expanda o filtro Dependências e digite "curl". Selecione versões individualmente ou marque o atalho Selecionar tudo; em seguida, clique fora do filtro para ver os resultados. Você verá todos os projetos que usam as versões selecionadas do libcurl. Explore os projetos e as dependências para avaliar sua exposição e priorizar o que corrigir primeiro.
Identifique os hosts com o curl instalado
Muitos sistemas operacionais vêm com o curl instalado por padrão, mas o local da instalação depende do sistema operacional e do método de instalação. Para verificar rapidamente se o curl está instalado e disponível no seu PATH, execute: curl --version
Se o comando for executado sem erros, ele mostrará a versão do curl encontrada primeiro no seu PATH. Observe que ele pode estar instalado em mais de um local. Por exemplo, em computadores Apple recentes, ele vem instalado por padrão em /usr/bin/curl, mas também pode ter sido instalado pelo homebrew. Para descobrir onde está a versão disponível no seu PATH, execute which curl. Outros locais a verificar em sistemas operacionais baseados em macOS/Linux:
/bin/curl/usr/bin/curl/usr/local/bin/curl/opt/homebrew/opt/curl
Encontre todas as ocorrências que precisam ser atualizadas para se preparar para a nova versão.
Como agir quando a atualização for lançada
No dia do lançamento — previsto para 11 de outubro de 2023, por volta das 06:00 UTC — prepare-se para atualizar para a versão 8.4.0. Quando a nova versão estiver disponível, a Snyk terá mais informações e publicará neste blog detalhes adicionais sobre a vulnerabilidade (e incluirá aqui links para eventuais artigos de acompanhamento).
Atualize pacotes e contêineres vulneráveis
Use as informações que você reuniu durante a preparação para atualizar seus projetos e imagens de contêiner e obter a versão corrigida do libcurl. Diferentes ecossistemas e distribuições Linux podem esperar até esse momento para atualizar os pacotes afetados, e a disponibilidade das correções provavelmente será gradual. Por exemplo, alguns mantenedores podem aguardar correções upstream antes de lançar atualizações para seus pacotes ou imagens de contêiner, enquanto outros podem aplicar a correção diretamente. Em qualquer caso, a Snyk pode ajudar você a encontrar e corrigir os problemas.
Atualize o curl nos seus dispositivos
Quando uma versão corrigida do binário curl estiver disponível, atualize as versões instaladas. Publicaremos algumas dicas úteis para ajudar na atualização em outro artigo: há várias maneiras de instalar o curl, e os métodos de atualização podem variar conforme o sistema operacional.
O que a Snyk está fazendo?
A Snyk publicou um aviso provisório sobre o problema upstream de alta severidade. O conteúdo desse aviso será atualizado conforme novas informações forem descobertas.
Os especialistas em segurança da Snyk estão acompanhando de perto as atualizações de lançamento, as informações sobre vulnerabilidades, as conversas nas redes sociais e muito mais para compartilhar com nossos clientes os dados assim que estiverem disponíveis. Além disso, estamos pesquisando para identificar outros pacotes downstream que possam ser afetados. Atualizaremos este blog conforme necessário.



