Skip to main content

Buffer overflow no Chromium afeta vários pacotes

Escrito por
Blog illustrations vul profile

23 de novembro de 2020

0 minutos de leitura

Boas-vindas ao Perfil Mensal de Vulnerabilidades da Snyk. Nesta série, a Snyk revisita as vulnerabilidades descobertas por nossa Equipe de Pesquisa de Segurançaou relatadas a ela. Escolhemos uma vulnerabilidade relevante do mês anterior e contamos a história por trás de sua descoberta, pesquisa e divulgação. Destacamos os pesquisadores, desenvolvedores e usuários que ajudam a identificar e corrigir vulnerabilidades na comunidade de código aberto.

Neste mês, analisamos uma vulnerabilidade de buffer overflow descoberta no pacote FreeType usado pelo Chromium e o trabalho realizado pela Snyk para localizar pacotes de código aberto afetados pela inclusão de componentes vulneráveis do Chromium.


Vulnerabilidade: Buffer overflow no FreeType

CVEs atribuídos: CVE-2020-15999

Analista da Snyk: Vários

Descoberta por: Sergei Glazunov, do Google Project Zero

Em 2 de novembro de 2020, a CVE-2020-15999 foi publicada no National Vulnerability Database para uma vulnerabilidade de buffer overflow descoberta no pacote de renderização de fontes FreeType, usado pelo navegador Chromium. De acordo com uma publicação no blog do site do Chromium Project, o relato inicial da vulnerabilidade foi feito em 19 de outubro de 2020. A descrição inicial da vulnerabilidade afirma:

Há uma vulnerabilidade na função `Load_SBit_Png`, que processa imagens PNG incorporadas às fontes. Essa função:

1) Obtém a largura e a altura da imagem no cabeçalho como números inteiros de 32 bits.

2) Trunca os valores obtidos para 16 bits e os armazena em uma estrutura `TT_SBit_Metrics`.

3) Usa os valores truncados para calcular o tamanho do bitmap.

4) Aloca o armazenamento de apoio desse tamanho.

5) Passa `png_struct` e o armazenamento de apoio para uma função da libpng.

O problema é que a libpng usa os valores originais de 32 bits, armazenados em `png_struct`. Portanto, se a largura e/ou a altura original for maior que 65535, o buffer alocado não comportará o bitmap.

Vulnerabilidades de buffer overflow podem permitir que um invasor corrompa ou manipule a memória heap. Isso abre a possibilidade de criar um payload malicioso que resulte na execução de código arbitrário no sistema vulnerável.

Entendendo o impacto no código aberto

A Equipe de Pesquisa de Segurança da Snyk acompanha regularmente os relatos de vulnerabilidades e, quando há possibilidade de impacto na comunidade de código aberto, investiga esse impacto. No caso do navegador Chromium, componentes publicados pelo Chromium Project são usados com frequência em pacotes de código aberto para oferecer funcionalidades web. Por isso, após a divulgação da vulnerabilidade de buffer overflow, a equipe de pesquisa da Snyk começou a buscar pacotes de código aberto que continham versões vulneráveis do componente Chromium.

Com essa pesquisa, a equipe da Snyk identificou seis pacotes, em vários ecossistemas, afetados pela vulnerabilidade no pacote FreeType. Eles estão listados na tabela abaixo:

Pacote

Ecossistema (gerenciador de pacotes)

ID da vulnerabilidade na Snyk

cefsharp.wpf.hwndhost

.Net (NuGet)

SNYK-DOTNET-CEFSHARPWPFHWNDHOST-1023310

cefsharp.wpf

.Net (NuGet)

SNYK-DOTNET-CEFSHARPWPF-1023309

cefsharp.winforms

.Net (NuGet)

SNYK-DOTNET-CEFSHARPWINFORMS-1023307

cefsharp.common

.Net (NuGet)

SNYK-DOTNET-CEFSHARPCOMMON-1023308

electron 

JavaScript (npm)

SNYK-JS-ELECTRON-1021884

org.webjars.npm:electron

Java (Maven)

SNYK-JAVA-ORGWEBJARSNPM-1021885

Os quatro componentes .Net identificados são controles disponibilizados diretamente pelo Chromium Project. Embora tenham sido lançadas versões atualizadas para corrigir as vulnerabilidades, desenvolvedores que usam esses componentes em seus próprios aplicativos ou serviços precisam atualizar para as novas versões para corrigir a vulnerabilidade.

Além disso, a Snyk descobriu que as versões JavaScript e Java do framework Electron também usam componentes vulneráveis do Chromium. Electron é um framework popular, usado em muitos aplicativos conhecidos, incluindo o Discord. O framework Electron recebeu atualizações, e novas versões foram lançadas no fim de outubro. Mais uma vez, desenvolvedores que usam o framework precisam atualizar para a nova versão para remover a vulnerabilidade de seus softwares.

Olhando em retrospecto

A história da descoberta dessa vulnerabilidade de buffer overflow demonstra mais uma forma de atuação da Equipe de Pesquisa de Segurança da Snyk para melhorar a postura de segurança geral da comunidade de código aberto. Investigar onde pacotes vulneráveis de grande visibilidade, como o Chromium, são usados como dependências em outros projetos ajuda a trazer as falhas à tona e permite que os mantenedores de código aberto as corrijam em seus softwares.

Além disso, isso permite que a Snyk garanta que nosso Banco de Dados de Vulnerabilidades tenha as informações mais completas possíveis, para que desenvolvedores possam usar a segurança de código aberto e sejam alertados quando as dependências de seus softwares tiverem vulnerabilidades.

Comece a participar de desafios de Capture the Flag

Aprenda a resolver desafios de Capture the Flag assistindo sob demanda ao nosso workshop virtual introdutó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.