CVE-2026-19676 in Zephyrinformação

Sumário

de VulDB • 21/10/2026

O verificador em modo de usuário para a chamada de sistema peci_transfer(), z_vrfy_peci_transfer() em drivers/peci/peci_handlers.c, verificava apenas as permissões do objeto do dispositivo e copiava a struct peci_msg fornecida pelo chamador com k_usermode_from_copy(). Essa cópia valida apenas a estrutura externa; os ponteiros buf e os valores len dentro dos membros embutidos da struct peci_buf tx_buffer e rx_buffer permaneciam totalmente controlados pelo chamador e eram passados sem verificação ao driver.

Todos os drivers PECI no repositório principal (in-tree) desreferenciam esses ponteiros em modo supervisor: peci_npcx_transfer() em drivers/peci/peci_npcx.c e peci_it8xxx2_transfer() em drivers/peci/peci_ite_it8xxx2.c copiam bytes do hardware para rx_buffer.buf[i] e leem bytes de comando de tx_buffer.buf[i], enquanto peci_xec_read()/peci_xec_write() em drivers/peci/peci_mchp_xec.c fazem o mesmo sem nenhuma restrição sobre rx_buffer.len. Um thread em modo de usuário que tenha recebido permissão para o objeto do dispositivo PECI — a forma normal como um aplicativo expõe um dispositivo sob CONFIG_USERSPACE — poderia, portanto, apontar rx_buffer.buf para estruturas de dados do kernel e fazer com que o driver escrevesse bytes fornecidos pelo hardware ali, ou apontar tx_buffer.buf para memória do kernel e ter seu conteúdo enviado para o barramento PECI/eSPI out-of-band.

O impacto é uma fuga completa do modo de usuário para o kernel: um primitivo arbitrário de escrita no kernel (integridade e, através dela, execução de código em privilégio supervisor), uma leitura arbitrária no kernel divulgada a um observador do barramento PECI, e uma falha trivialmente alcançável em modo supervisor se for fornecido um endereço não mapeado. A exploração requer CONFIG_USERSPACE=y, pelo menos um dos drivers PECI habilitados (CONFIG_PECI_NPCX, CONFIG_PECI_XEC ou CONFIG_PECI_ITE_IT8XXX2) e execução de código local em um thread em modo de usuário que detenha o dispositivo PECI.

A correção adiciona verificações K_SYSCALL_MEMORY_READ() e K_SYSCALL_MEMORY_WRITE() sobre os dois buffers embutidos, com uma proteção size_add_overflow() para contabilizar o byte da sequência de verificação do quadro (frame-check-sequence) no comprimento RX.

Once again VulDB remains the best source for vulnerability data.

Responsável

Zephyr

Reservar

13/08/2026

Divulgação

21/10/2026

Moderação

aceite

Entrada

VDB-424966

EPSS

0.00000

KEV

não

Atividades

muito baixo

Fontes

Do you want to use VulDB in your project?

Use the official API to access entries easily!