← voltar
CVE-2023-5217highsob ataqueCWE-787

CVE-2023-5217

83Vexday Risk Score

Priorize a correção. Ela está sob exploração confirmada pelo CISA e tem prova de conceito pública.

ssvc Actcvss 8.8epss 49%
da publicação à arma8 dias
Publicada no NVD28 de set.
1ª PoC+8d
CISA KEV+4d
probabilidade de exploração
49%top 1% das CVEs
exploração observada
simCISA + VulnCheck
4 exploit(s) público(s)
O que os fabricantes declaram (VEX)

Declarações oficiais dos fabricantes em formato CSAF/VEX: se o produto deles está afetado, já corrigido ou descartado — e por quê. É afirmação do fabricante, não juízo do Vexday.

Afetado
2 produtos (9 componentes)
Red Hat Enterprise Linux 9 · Red Hat Enterprise Linux 6
workaround: Mitigation for this issue is either not available or the currently available options don't meet the Red Hat Product Security criteria comprising ease of use and deployment, applicability to widespread installation base or stability.
Corrigido
21 produtos (566 componentes)
Red Hat Enterprise Linux AppStream (v. 9) · Red Hat Enterprise Linux AppStream (v. 8) · Red Hat Enterprise Linux AppStream EUS (v.8.6) · Red Hat Enterprise Linux AppStream EUS (v.9.0) · Red Hat Enterprise Linux AppStream E4S (v.8.4) · e outros 16
Não afetado
1 produto (4 componentes) — porque o código vulnerável não está presente no produto
Red Hat Enterprise Linux 7
Ação exigida pela CISAprazo federal: 2023-10-23

Apply mitigations per vendor instructions or discontinue use of the product if mitigations are unavailable.

Resumo

Falha de heap buffer overflow no codificador VP8 da libvpx, explorável a partir de uma página HTML maliciosa no Chrome (e em qualquer software que use libvpx para codificar VP8, como navegadores baseados em Chromium, clientes WebRTC e pipelines de vídeo). Está no catálogo KEV da CISA como exploração confirmada e tem PoC pública, o que eleva a urgência de patch apesar do vetor exigir interação do usuário.

Detalhamento técnico

O problema está em vp8_change_config(), em vp8/encoder/onyx_if.c. A libvpx aloca as estruturas de multi-threading do encoder VP8 uma única vez, dentro de vp8_create_compressor(), com base na contagem de threads (g_threads) e na resolução vigentes no momento da criação do encoder. O problema é que a API pública (vpx_codec_enc_config_set) permite alterar a contagem de threads e a resolução depois que o encoder já foi criado, sem que essas alocações sejam refeitas — gerando um descompasso entre o tamanho dos buffers alocados e o que o código de codificação multithread escreve neles.

O resultado é um heap buffer overflow (CWE-122 / write out-of-bounds, CWE-787) quando uma sequência de reconfiguração (mudança de resolução seguida de mudança de contagem de threads, ou vice-versa) é executada em um encoder VP8 já inicializado em modo multithread. O atacante controla os parâmetros de configuração do encoder — resolução e número de threads — via chamadas de API expostas ao conteúdo web (WebRTC / WebCodecs), não diretamente memória ou ponteiros.

O fix aplicado (commit 3fbd1dca) não corrige a lógica de realocação; ele restringe o comportamento: vp8_change_config() passa a preservar o valor original de multi_threaded vindo de cpi->oxcf em reconfigurações subsequentes, efetivamente impedindo que a contagem de threads seja alterada após a criação do encoder VP8. É uma correção de superfície de ataque, não uma reescrita do gerenciamento de buffers — o teste de regressão adicionado (encode_api_test.cc) documenta isso explicitamente com um TODO pedindo a correção completa do VP8 futuramente (o mesmo teste foi corrigido de forma completa apenas para VP9).

Como é explorada

O vetor é uma página HTML/JS maliciosa que aciona o pipeline de codificação VP8 da libvpx dentro do navegador — via WebRTC (RTCPeerConnection com renegociação de resolução/threads durante uma sessão de vídeo) ou via WebCodecs VideoEncoder configurado para VP8. O atacante precisa induzir a vítima a abrir a página (UI:R no vetor CVSS) e a sequência de codificação a executar mudanças de configuração (resolução e contagem de threads) que disparam o descompasso de alocação. Não é necessária autenticação nem configuração não padrão do navegador — o requisito real é que o encoder VP8 multithread da libvpx seja acessível a partir de conteúdo web, o que é o caso padrão em navegadores modernos.

A presença no catálogo KEV da CISA confirma exploração ativa antes da correção. A cobertura da época (ligada ao lote de zero-days em bibliotecas de imagem/vídeo de setembro-outubro de 2023, incluindo a falha relacionada em libwebp) tratou esse conjunto de vulnerabilidades como usado por atores sofisticados contra alvos específicos, não como exploração massiva e indiscriminada — mas a fonte primária aqui apenas confirma exploração via KEV, sem detalhar campanha específica.

O impacto final, segundo o CVSS (C:H/I:H/A:H), é potencial execução de código no processo renderer/GPU que hospeda o codificador, ou ao menos corrupção de heap explorável para além de um crash simples — consistente com heap overflow em código nativo de mídia, historicamente usado como primitiva para escape de sandbox quando encadeado com outras falhas.

Versões

Afetadas
Google Chrome anterior a 117.0.5938.132; Google libvpx anterior a 1.13.1 (qualquer versão com o encoder VP8 multithread afetado por vp8_change_config antes do commit de correção).
Corrigidas em
Google Chrome 117.0.5938.132 e posteriores; libvpx 1.13.1 ('Ugly Duckling') e posteriores.

Como se proteger

A correção definitiva é atualizar. Google Chrome para 117.0.5938.132 ou superior; qualquer software que embuta libvpx diretamente (outros navegadores baseados em Chromium, Firefox, servidores de mídia, stacks WebRTC, builds de ffmpeg com libvpx) deve atualizar a biblioteca para 1.13.1 ou superior, que incorpora o mesmo commit de correção.

Não há flag de configuração exposta ao usuário final que mitigue o problema sem atualizar — a própria correção do fornecedor consiste em bloquear internamente a troca de contagem de threads após a criação do encoder VP8, comportamento que não é controlável externamente em versões vulneráveis. Como paliativo real, apenas restringir ou desabilitar o acesso de páginas web ao WebRTC/WebCodecs com codificação VP8 (ex.: políticas de enterprise que bloqueiam captura de mídia e RTCPeerConnection) reduz a superfície, ao custo de quebrar videoconferência e afins — não é uma mitigação recomendada como solução, apenas um controle compensatório temporário até o patch.

Não funciona como mitigação: desabilitar aceleração de hardware de vídeo, isso não afeta o encoder de software VP8 da libvpx; tampouco ajustar manualmente configurações de qualidade de vídeo em conferências, pois o atacante controla a sequência de reconfiguração via script, não a vítima.

Como detectar

Não há assinatura de rede confiável: a exploração ocorre inteiramente no lado do cliente, dentro do processo de codificação de vídeo do navegador, sem tráfego distintivo. O sinal mais direto é o comportamento de crash — relatórios de crash do Chrome (chrome://crashes ou telemetria corporativa) apontando para falhas dentro de vp8/encoder/onyx_if.c ou em rotinas de multithreading do encoder VP8 da libvpx, especialmente em processos associados a sessões WebRTC ou uso de WebCodecs com VP8.

Em ambientes que rodam builds instrumentados com ASan/heap sanitizers (uso interno de QA, não produção), o padrão esperado é um heap-buffer-overflow write disparado após sequência de vpx_codec_enc_config_set com mudança de resolução e contagem de threads. Em produção, a ausência de crashes reproduzíveis não garante ausência de exploração, já que heap corruption pode ser silenciosa ou controlada pelo atacante para evitar crash imediato.

Pesquisado e redigido com IA a partir do advisory do fornecedor e de análises públicas, com as fontes acima. Confira sempre a versão corrigida no advisory oficial antes de agir.
Heap buffer overflow in vp8 encoding in libvpx in Google Chrome prior to 117.0.5938.132 and libvpx 1.13.1 allowed a remote attacker to potentially exploit heap corruption via a crafted HTML page. (Chromium security severity: High)
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
⚠ Recursos públicos, para você avaliar a exposição de sistemas que controla ou está autorizado a testar. Teste apenas com autorização.