PT-2026-102353 · Zephyr · Zephyr
CVSS v3.1
7.8
Alta
| Vetor | AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
Nome do Software Vulnerável e Versões Afetadas
Zephyr (versões afetadas não especificadas)
Descrição
O driver ADI MAX32 não valida corretamente o tamanho do buffer de destino para sequências de amostragem. A função
start read() em drivers/adc/adc max32.c compara a contagem de bytes buffer size com uma contagem de amostras sem considerar o tamanho de um uint16 t, permitindo a aceitação de buffers com metade do tamanho necessário. Isso resulta em uma gravação fora dos limites quando as amostras são armazenadas via Wrap MXC ADC GetData() em adc max32 start channel() para leituras síncronas ou adc max32 isr() para leituras assíncronas.Em compilações com
CONFIG USERSPACE, onde adc read() e adc read async() são chamadas de sistema, uma thread de modo de usuário não privilegiada com acesso a um dispositivo ADC MAX32 pode controlar channels, buffer, buffer size e options->extra samplings. Isso permite que o driver escreva além do limite do buffer no modo kernel, ignorando as restrições da MPU e corrompendo a memória adjacente do kernel, outras partições ou pilhas de threads. Isso pode resultar em escalonamento de privilégios ou negação de serviço.Recomendações
Atualize a função
start read() para utilizar o auxiliar adc sequence validate buffer() em drivers/adc/adc common.c para validar corretamente o tamanho do buffer com base no tamanho de amostra uint16 t.Exploit
Correção
Memory Corruption
Encontrou algum problema na descrição? Tem algo a acrescentar? Fique à vontade para nos escrever 👾
Enumeração de Fraquezas
Identificadores relacionados
Produtos afetados
Zephyr