Buffer overflow no Chromium afeta vários pacotes
23 de novembro de 2020
0 minutos de leituraBoas-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.



