Orientação sobre recentes vulnerabilidades críticas da libwebp e da libvpx
Histórico
Nas últimas semanas, o Google lançou atualizações para o Google Chrome, incluindo correções para CVE-2023-4863 e CVE-2023-5217. Ambas as vulnerabilidades foram descobertas como vulnerabilidades de dia zero exploradas em ambiente real, sendo que as entradas CVE foram atualizadas para ampliar a abrangência para além do Google Chrome e incluir suas bibliotecas subjacentes: libwebp e libvpx. Ambas as CVEs aparecem no Catálogo de vulnerabilidades exploradas conhecidas da CISA.
Nesta publicação do blog, compartilhamos os detalhes de ambas as vulnerabilidades e damos recomendações de como detectar aplicações vulneráveis em sua rede. Como essas vulnerabilidades estão passando por pesquisas contínuas, esta publicação pode ser atualizada no futuro com mais insights e orientações.
CVE-2023-4863 – libwebp
Essa vulnerabilidade foi relatada pela equipe de Engenharia e Arquitetura de Segurança, ou SEAR (Security Engineering and Architecture),da Apple e pelo The Citizen Lab. Com base nesse relatório, os pesquisadores correlacionaram essa vulnerabilidade com o ataque BLASTPASS, uma invasão do tipo zero clique e dia zero do Grupo NSO para iPhones.
A vulnerabilidade em si é um estouro de pilha no libwebp, que se encontra no processo de decodificação de imagens webp no formato sem perdas. Ben Hawkes escreveu uma análise técnica muito detalhada sobre a vulnerabilidade.
Libwebp é uma biblioteca desenvolvida pelo Google para codificar e decodificar imagens no formato WebP (também desenvolvido pelo Google). A vulnerabilidade está na análise de imagens com compressão sem perdas da biblioteca, que usa tabelas Huffman. Basicamente, um invasor pode manipular as tabelas para fazer com que a biblioteca aloque menos memória para as tabelas do que seu tamanho real, causando um estouro de pilha e uma gravação fora de limites.
Existem muitas maneiras e configurações para alcançar esses resultados, então não há uma prova de conceito (PoC) que englobe todas, mas dê uma olhada na PoCda @mistymntncop para obter um exemplo de implementação da exploração.
CVE-2023-5217 – libvpx
Essa vulnerabilidade foi descoberta por Clément Lecigne do Grupo de análise de ameaças do Google. Essa vulnerabilidade também foi usada por um fornecedor de vigilância comercial.
A libvpx também faz parte do projeto WebP. Especificamente, a biblioteca lida com os formatos VP8 e VP9 para codificação e decodificação de vídeo. Há menos detalhes sobre essa vulnerabilidade, mas sabe-se que também é uma vulnerabilidade de corrupção de heap.
O que está vulnerável?
Inicialmente, apenas navegadores foram relatados como vulneráveis, uma vez que as vulnerabilidades estavam no Chromium. No entanto, como a vulnerabilidade está nas bibliotecas libwebp e libvpx subjacentes, o escopo do impacto é muito mais amplo: aplicações que usam versões da libwebp de 0.5.0. a 1.3.1 e aplicações que usam versão da libvpx anterior a 1.13.1 são afetadas.
Compilamos uma lista de aplicações que dependem de uma das bibliotecas, com base em relatórios publicamente disponíveis. Também incluímos programas que usam a biblioteca e que detectamos usando nossas "Insight queries". Isso não significa que sejam necessariamente vulneráveis.
Para um programa ser vulnerável, tem que usar a capacidade sem perdas WebP da libwebp ou os codecs V8 ou V9 com a libvpx. Como essas bibliotecas podem ser usadas para recursos e funcionalidades completamente diferentes, o uso delas nem sempre equivale a uma vulnerabilidade.
Sabemos que navegadores da Web usam esses recursos, mas dependemos da decisão do fornecedor de nos dizer se outros programas estão usando esses recursos. Descobrimos que os seguintes navegadores e outras aplicações usam as bibliotecas afetadas:
- Fedora (37–39)
- Debian (10–12)
- Google Chrome
- Firefox
- Microsoft Edge
- Opera
- Tor
- Brave
- Vivaldi
- Telegram
- Discord
- 1Password
- Electron
- GIMP
- Slack
- LibreOffice
- Skype
- Grafana
- KeePassXC
- VLC
Além disso, uma pessoa anônima analisou os repositórios de pacotes do Ubuntu e carregou uma lista de todos os pacotes que dependem da libvpx7.
Exposição à vulnerabilidade – OSquery
Como a biblioteca pode ser encontrada em muitos lugares diferentes, e cabe aos fornecedores de software atualizar seus produtos, é crucial detectar o escopo de vulnerabilidade e a taxa de exposição das máquinas em sua rede. Desenvolvemos várias consultas OSquery para ajudar com isso. Os clientes da Akamai Guardicore Segmentation podem usar o recurso Insight para executar essas consultas em suas redes.
libweb e libvpx carregadas em memória
Como bibliotecas podem vir com qualquer aplicação, localizá-los no disco rígido não é viável. Em vez disso, podemos verificar os módulos carregados (arquivos DLL ou SO) em cada processo em execução usando a tabela OSquery process_memory_map e tentar obter a versão usando a tabela do arquivo.
Como os metadados da versão são adicionados durante o processo de compilação, eles não estarão necessariamente disponíveis, pois a biblioteca pode ser compilada sem ele. Mesmo quando os metadados da versão estão disponíveis, eles podem não ser precisos, pois os fornecedores podem anexar seu próprio controle de versão de software. O usuário deve usar o próprio discernimento para evitar falsos positivos ou verdadeiros negativos.
SELECT DISTINCT
procs.name AS process_name,
pmm.path AS lib_path,
file.file_version,
CASE
WHEN file_version = '' THEN 'unknown version, potentially vulnerable'
WHEN pmm.path LIKE '%libwebp%' AND file_version < '1.3.2' THEN 'vulnerable version'
WHEN pmm.path LIKE '%libwebp%' AND file_version >= '1.3.2' THEN 'not vulnerable version'
WHEN pmm.path LIKE '%libvpx%' AND file_version <= '1.13.1' THEN 'vulnerable version'
WHEN pmm.path LIKE '%libvpx%' AND file_version > '1.13.1' THEN 'not vulnerable version'
ELSE 'unknown version, potentially vulnerable'
END is_vulnerable
FROM process_memory_map AS pmm
JOIN processes AS procs USING(pid)
JOIN FILE ON file.path = pmm.path
WHERE pmm.path LIKE '%libwebp%' OR pmm.path LIKE '%libvpx%'
Localizar navegadores da Web
Incluímos uma consulta para detectar navegadores instalados, já que o relatório inicial para os CVEs e o caso de uso vieram do Chromium. Esta consulta pode ajudar a localizar ativos na rede que executam navegadores e que podem exigir mais investigação. É possível, então, comparar a versão instalada com a lista de versões vulneráveis do navegador no Banco de dados nacional de vulnerabilidades (NVD).
SELECT name, version FROM programs
WHERE LOWER(name) LIKE "%chrome%"
OR LOWER(name) LIKE "%firefox%"
OR LOWER(name) LIKE "%microsoft edge%"
OR LOWER(name) LIKE "%thunderbird%"
OR LOWER(name) LIKE "%brave%"
OR LOWER(name) LIKE "%opera%"
Localizar programas instalados
Para verificar se um dos programas da lista acima está instalado, use a seguinte consulta; basta substituir <program_name> pelo nome real do programa.
SELECT name, version FROM programs
WHERE name LIKE "%<program_name>%"
Mitigação
Mapeamento de aplicações e ativos vulneráveis
Usando a lista compilada de aplicações e as consultas OSquery fornecidas nesta publicação do blog é possível mapear aplicações potencialmente vulneráveis em sua rede e derivar uma lista de ativos potencialmente vulneráveis.
Os clientes Akamai Hunt receberam um relatório detalhando a exposição de seus ambientes à vulnerabilidade. Os relatórios Hunt foram baseados em consultas semelhantes às desta publicação do blog,e foram enviados em algumas horas após o início do incidente. As consultas detectaram milhares de ativos vulneráveis em todo o mundo.
Aplicação de patches
Existem muitos parâmetros que são levados em conta ao se tentar avaliar a vulnerabilidade de uma aplicação: Que versão da libwebp ou libvpx ele carrega? A aplicação faz uso de compressão sem perdas WebP ou de codecs VP8/VP9? Devido às várias combinações possíveis, muitas aplicações estão suscetíveis à exploração, e o impacto pode ser amplo.
Infelizmente, não há um patch que mitigue essa vulnerabilidade. A correção por patch também depende de os fornecedores de software liberarem os patches para seus programas, o que pode levar tempo. As organizações precisam avaliar ao longo do tempo quais cargas de trabalho estão vulneráveis e permanecem sem patches.
Sensibilidade de alerta de ameaça
Como os patches para todos os programas afetados ainda não estão necessariamente disponíveis, pode ser prudente aumentar sua sensibilidade de alerta sobre as cargas de trabalho que possam estar potencialmente vulneráveis e sem patches. Assim, mesmo que a vulnerabilidade seja explorada e não detectada, ainda será possível conhecer os efeitos posteriores.
No entanto, isso pode aumentar a fadiga de alerta. Como resultado, recomendamos ajustar a sensibilidade de alerta de acordo com a importância da carga de trabalho afetada para a rede ou seu impacto.
Resumo
Nesta publicação, analisamos as informações disponíveis sobre as vulnerabilidades críticas na libwebp e na libvpx que foram exploradas em ambiente real.
Para os defensores, o mais importante é determinar a vulnerabilidade das cargas de trabalho em sua rede. Tentamos ajudar oferecendo consultas OSquery para detectar programas que usam as bibliotecas. Também discutimos o que fazer para mitigar alguns dos riscos (ou seja, ajustar sua sensibilidade de alerta de ameaças) quando o patch não estiver disponível.
Esta publicação apresenta uma visão geral da nossa compreensão atual e nossas recomendações com base nas informações disponíveis. Nossa revisão está em andamento e todas as informações aqui incluídas estão sujeitas a alterações. Você também pode visitar nossa conta do Twitter para obter atualizações em tempo real.