Skip to main content

Vulnerabilidade de alta severidade encontrada no libcurl e no curl (CVE-2023-38545)

Escrito por
Headshot of Hadas Bloom

Hadas Bloom

feature curl vuln

4 de outubro de 2023

0 minutos de leitura

Atualizaçã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).

Captura de tela da tabela de vulnerabilidades do cURL e libcurl, com barras de gravidade identificadas por cores nas versões recentes e o total de ocorrências.
Captura de tela da tabela de vulnerabilidades do cURL

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

Relatório de detalhes de problemas do Snyk com o filtro CVE aberto e CVE-2023-38545 selecionado no menu suspenso
Filtre a visualização para exibir apenas a 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.

Leia mais

Blog

Modelos de ponta encontraram as vulnerabilidades. Só o atacante encontrou as cadeias.

A análise estática encontrou as falhas, mas só os testes de ataque em aplicações ativas provaram como elas poderiam ser encadeadas para causar invasões. Uma comparação entre Evo COS, Claude Security e Claude Code Security.

feature insights context
Blog

Os ataques autônomos já chegaram. A defesa precisa acompanhar o ritmo.

Os atacantes autônomos estão reduzindo o tempo disponível para a defesa. Saiba como a descoberta, a correção, a validação e a prevenção contínuas ajudam as equipes de segurança a acompanhar esse ritmo.

Blog

Seu backlog de vulnerabilidades não é mais uma dívida técnica — é uma superfície de ataque

Um backlog crescente de vulnerabilidades é mais do que uma dívida técnica: ele é uma superfície de ataque. Entenda por que suposições de risco desatualizadas, atacantes automatizados e descobertas encadeadas exigem uma nova abordagem.