Skip to main content

Vulnerabilidade crítica de segurança CVE-2023-4863 no WebP afeta todo o ecossistema de software

feature insights context

28 de setembro de 2023

0 minutos de leitura

Neste mês, a Apple Security Engineering and Architecture (SEA) e o The Citizen Lab da Munk School, da Universidade de Toronto, divulgaram duas vulnerabilidades Critical relacionadas a imagens WebP maliciosamente manipuladas, que poderiam ser usadas para explorar o navegador Chrome e a biblioteca webmproject/libwebp, do Google.

Em 27 de setembro de 2023, os CVEs conhecidos que rastreiam ativamente essa vulnerabilidade da libwebp incluem:

  • CVE-2023-4863: divulgado em 11 de setembro de 2023, com pontuação CVSS de 9,6. Pontuação EPSS de 31,86% (percentil 97*). Observação: a pontuação original desse CVE era 8,8 ("Alta"), antes da divulgação de mais detalhes. 

  • CVE-2023-5129: divulgado em 25 de setembro de 2023, com pontuação CVSS de 10 (a máxima possível). Foi rejeitado posteriormente, em 27 de setembro de 2023, pelo Google, a Autoridade de Numeração de CVE responsável, por ser uma duplicata.

A vulnerabilidade identificada na biblioteca WebP libwebp afeta muito mais do que apenas navegadores e aplicativos baseados no Chrome (por exemplo, 1Password para macOS). Isso é especialmente relevante porque a biblioteca libwebp é usada por muitos sistemas operacionais e frameworks de aplicativos populares para renderizar imagens .webp, incluindo o popular framework Electron. Portanto, a vulnerabilidade da libwebp também afeta softwares de uso geral, como o Pillow, e outros aplicativos, como ffmpeg e Gimp. Vale lembrar que alguns desses aplicativos e componentes de software são incluídos em imagens de contêiner.

As versões da webmproject/libwebp da 0.5.0 até a 1.3.1, inclusive, são afetadas. Para corrigir a vulnerabilidade, verifique se o sistema operacional e os projetos de software exigem pelo menos a versão 1.3.2. No entanto, vale lembrar que a libwebp costuma ser usada indiretamente por outros softwares que a incluem, ampliando o impacto dessa vulnerabilidade em todo o ecossistema de software.

Em resposta ao CVE inicial, o Google e outros fornecedores lançaram rapidamente correções para os principais navegadores. 

O Snyk está monitorando essa vulnerabilidade e atualizará este artigo quando surgirem novas informações. Também atualizaremos o Snyk Vulnerability Database com os dados mais recentes. Continue executando suas verificações regularmente para manter seus projetos seguros. Essa vulnerabilidade da libwebp mostra mais uma vez como é essencial verificar se há vulnerabilidades nos seus aplicativos e imagens de contêiner — e fazer isso com frequência para manter sua cadeia de suprimentos de software segura.

Volte a esta página ou siga-nos no X (@snyksec) para acompanhar as últimas notícias e novidades. Continue lendo abaixo para saber mais.

O EPSS apresenta diretamente os resultados do modelo EPSS. Essas pontuações dão uma visão geral da ameaça de exploração no mundo real. O percentil mede a probabilidade indicada pelo EPSS em relação a todas as pontuações EPSS conhecidas. Neste caso, a probabilidade de exploração da CVE-2023-4863 é maior do que a de 97% de todas as vulnerabilidades avaliadas — ou seja, é mais provável que um agente mal-intencionado explore essa vulnerabilidade do que a maioria das outras. Esses dados são atualizados diariamente com base na versão mais recente disponível do modelo EPSS. Consulte a documentação do EPSS para saber mais.

O que usa a libwebp?

É provável que a vulnerabilidade esteja disseminada nos ecossistemas de desenvolvimento, já que linguagens de programação de alto nível costumam usar a biblioteca subjacente libwebp. Por exemplo, a engine de jogos GoDot, usada para criar jogos 2D e 3D, depende da biblioteca libwebp, assim como o utilitário FFmpeg, amplamente utilizado, que também usa a biblioteca libwebp. 

Especialistas em segurança ainda estão determinando toda a extensão do uso dessa biblioteca nos aplicativos, pois a vulnerabilidade provavelmente afeta componentes de software que usam codecs de imagem .webp e renderizam seu conteúdo, como navegadores e ferramentas de design.

Entenda a vulnerabilidade da libwebp

A biblioteca libwebp processa imagens no formato .webp. Criada pelo Google há mais de uma década, ela é usada na maioria dos aplicativos que renderizam imagens .webp. A vulnerabilidade pode ser explorada por meio de um arquivo .webp sem perdas criado maliciosamente, que faz a biblioteca vulnerável transbordar.

Os ataques que exploram essa vulnerabilidade podem variar de negação de serviço (DoS) até possível execução remota de código (RCE). Por exemplo, ataques relacionados, como o exploit de dia zero BLASTPASS (Apple CVE-2023-41064,CVE-2023-41061), mostraram que imagens .webp maliciosas enviadas pelo iMessage poderiam comprometer o dispositivo iOS da vítima sem qualquer interação por parte dela.

Acesse a página do Snyk Vulnerability Database para saber mais e conferir links para análises detalhadas e exemplos de prova de conceito.

Como detectar a vulnerabilidade da libwebp com o Snyk

Há várias maneiras de detectar a vulnerabilidade da libwebp com o Snyk. Com a Snyk CLI, você pode testar seus projetos localmente, importar projetos para o Snyk usando nossas integrações com SCM ou usar os relatórios do Snyk para pesquisar rapidamente por libwebp em todos os projetos que você já importou para o Snyk. 

Teste seus projetos com a Snyk CLI

O Snyk Container pode alertar você sobre pacotes do sistema operacional que dependem de versões vulneráveis da libwebp.  O Snyk pode monitorar seus contêineres ou arquivos Docker pela interface web, ou você pode iniciar uma verificação manualmente com o comando da CLI: snyk container test.

O exemplo a seguir mostra a Snyk CLI verificando a imagem de contêiner Docker python:3.11.1 para saber se ela está vulnerável à falha de segurança de dia zero na libwebp:

$ snyk container test python:3.11.1

Testing python:3.11.1...
…
✗ Critical severity vulnerability found in libwebp/libwebpdemux2
  Description: Improper Input Validation
  Info: https://security.snyk.io/vuln/SNYK-DEBIAN11-LIBWEBP-5918870
  Introduced through: libwebp/libwebp-dev@0.6.1-2.1, imagemagick@8:6.9.11.60+dfsg-1.3, meta-common-packages@meta
  From: libwebp/libwebp-dev@0.6.1-2.1 > libwebp/libwebpdemux2@0.6.1-2.1
  From: imagemagick@8:6.9.11.60+dfsg-1.3 > imagemagick/imagemagick-6.q16@8:6.9.11.60+dfsg-1.3 > imagemagick/libmagickcore-6.q16-6@8:6.9.11.60+dfsg-1.3 > libwebp/libwebpdemux2@0.6.1-2.1
  From: libwebp/libwebp-dev@0.6.1-2.1 > libwebp/libwebpmux3@0.6.1-2.1
  and 3 more...
  Fixed in: 0.6.1-2.1+deb11u2
…

Tested 1 dependency for known issues, found 1 issue.

Teste projetos C++ com a CLI

O Snyk Open Source pode alertar você sobre uma versão vulnerável da libwebp nas dependências do seu aplicativo C/C++. O Snyk pode monitorar seus aplicativos pela interface web, ou você pode iniciar manualmente uma verificação das dependências de código aberto com o comando da CLI: snyk test --unmanaged.

$ snyk test --unmanaged

Testing /Users/developer/myapp...

Issues:

 ✗ [Critical] Heap-based Buffer Overflow
   Introduced through: https://github.com|webmproject/libwebp@1.3.1
   URL: https://security.snyk.io/vuln/SNYK-UNMANAGED-WEBMPROJECTLIBWEBP-5918283

Tested 1 dependency for known issues, found 1 issue.

Consulte a Documentação do usuário do Snyk para saber mais sobre os recursos de verificação de C/C++.

Teste seus projetos com a integração de SCM

Ao importar seu projeto para o Snyk usando uma das integrações de SCM compatíveis (GitHub, Bitbucket, GitLab, Azure Repos), uma verificação será iniciada automaticamente. Assim, você poderá usar a interface do Snyk para identificar, priorizar e corrigir a vulnerabilidade da libwebp nos seus projetos. 

Use os relatórios do Snyk para detectar a vulnerabilidade da libwebp nos seus projetos

Clientes do Snyk com acesso aos relatórios do Snyk (plano Enterprise) podem identificar rapidamente a libwebp nos projetos que já importaram e monitoram com o Snyk. No relatório Detalhes dos problemas, filtre pelos CVEs: CVE-2023-5129 AND CVE-2023-4863.

Relatório de detalhes de problemas do Snyk filtrado por CVEs abertas, exibindo 55 problemas por gravidade e uma tabela de vulnerabilidades com a CVE-2023-4863.

Copie a URL para compartilhar essa visualização com outras pessoas da equipe ou exporte-a em PDF para que mais pessoas da empresa tenham acesso.

Se você encontrar o problema, poderá ver exatamente onde ele está sendo usado. Em seguida, clique no projeto para ver mais informações sobre o problema e as instruções de correção.

Priorize as correções 

É provável que você encontre vários problemas relacionados à libwebp nos seus projetos, o que pode dificultar a decisão de por onde começar. O Snyk oferece vários recursos para ajudar a priorizar as correções.

Use a pontuação de prioridade do Snyk

A pontuação de prioridade do Snyk calcula diversos fatores de risco para ajudar você a identificar rapidamente quais problemas devem ser resolvidos primeiro. Ela considera sinais como EPSS, maturidade do exploit, CVSS, tendências nas redes sociais e outros fatores. Com ela, você pode analisar rapidamente a lista de vulnerabilidades e priorizar as correções. No caso da libwebp, é natural que a pontuação seja alta na maioria dos casos. 

A pontuação é exibida para cada problema relacionado à libwebp na página Projetos e também fica disponível nos relatórios do Snyk.

pontuação de prioridade da Snyk para o problema do libwebp

Use o Insights no Snyk

Se você é cliente do Snyk e usa o Insights, pode aproveitar o contexto adicional dos seus aplicativos para entender quais problemas representam mais risco. 

O Insights agrega e correlaciona dados de toda a plataforma Snyk para criar uma visão 360° do seu aplicativo, incluindo todos os componentes usados para criá-lo e o contexto de como ele é implantado em produção. Essa visão ajuda você a avaliar melhor o risco de um problema relacionado à libwebp, respondendo a perguntas como: o problema afeta seu ambiente? O código que o introduziu está implantado? 

Abra a aba Insights e use os filtros de CVE e o funil no topo da página para encontrar rapidamente os problemas mais arriscados relacionados à libwebp nos seus projetos. 

No exemplo abaixo, dois problemas relacionados à libwebp são sinalizados como aplicáveis ao sistema operacional em uso. Eles estão associados a um contêiner implantado em produção e com um caminho configurado para a internet, o que representa mais risco.

captura de tela do painel de relatório de insights do Snyk sobre a vulnerabilidade libwebp

Para entender exatamente como o risco foi introduzido e como ele se relaciona ao aplicativo, abra o gráfico de evidências para ver mais contexto:

captura de tela do gráfico de evidências da Snyk para a vulnerabilidade libwebp

Para saber mais sobre o Insights, como configurá-lo e usá-lo, consulte nossa documentação online.

Como corrigir a vulnerabilidade da libwebp

Corrija a libwebp nas imagens base de contêiner

Atualize sua imagem base para uma tag mais recente que já contenha a correção da vulnerabilidade. Para os ecossistemas compatíveis, você pode iniciar diretamente no Snyk pull requests com as correções necessárias.

Por exemplo, o Snyk recomenda imagens base de contêiner alternativas pela interface ou pela CLI. Ao importar seu repositório de código-fonte por meio de um SCM como o GitHub, você também pode automatizar a correção da imagem de contêiner, criando um pull request que atualiza a entrada FROM do Dockerfile:

A Snyk recomenda imagens base alternativas para contêineres e permite sugerir a correção automaticamente, abrindo um pull request que atualiza a instrução FROM do Dockerfile

O Snyk Container recomendará correções para a maioria das imagens base oficiais do Docker Hub assim que forem disponibilizadas:

Testing python:3.11.1-bullseye...
…

Base image:        python:3.11.1-bullseye

Tested 427 dependencies for known issues, found 395 issues.

Base Image              Vulnerabilities  Severity
python:3.11.1-bullseye  395              7 critical, 22 high, 71 medium, 295 low

Recommendations for base image upgrade:

Minor upgrades
Base Image                 Vulnerabilities  Severity
python:3.12.0rc3-bullseye  300              1 critical, 2 high, 2 medium, 295 lowpython:3.11.5-bullseye  300              1 critical, 2 high, 2 medium, 295 low

Alternative image types
Base Image                      Vulnerabilities  Severity
python:3.12.0rc2-slim-bullseye  63               0 critical, 0 high, 0 medium, 63 low
python:3.12.0rc2-slim           41               0 critical, 0 high, 1 medium, 40 low
python:3.12.0rc1-slim-bookworm  41               0 critical, 0 high, 1 medium, 40 low
python:3.11.4-bookworm          175              1 critical, 1 high, 3 medium, 170 low

Corrija a libwebp em projetos C e C++

Atualize todas as dependências webmproject/libwebp do seu projeto para a versão 1.3.2 ou mais recente e recompile o aplicativo.

Próximas etapas para responder à vulnerabilidade da ‘libwebp’

  1. Teste seus projetos com o Snyk usando os métodos apresentados neste artigo. Para começar, crie uma conta gratuita no Snyk e depois importe e verifique todos os projetos potencialmente afetados usando o assistente de importação.

  2. Identifique as correções de maior prioridade para a vulnerabilidade da libwebp usando a pontuação de prioridade ou o Insights (disponível para clientes do plano Snyk Enterprise).

  3. Aplique as correções atualizando a biblioteca libwebp para a versão 1.3.2 ou mais recente nas dependências de código aberto dos seus projetos ou nas imagens de contêiner.

  4. Continue acompanhando o desenrolar dessa situação, siga-nos no X (@snyksec) e volte ao Blog do Snyk para conferir as novidades. As equipes de segurança do Snyk atualizarão nossos recursos regularmente com as informações mais recentes.