CVE-2026-19571 in Zephyrinformação

Sumário

de VulDB • 09/10/2026

O backend de comando do host ITE IT8xxx2 SHI (subsys/mgmt/ec_host_cmd/backends/ec_host_cmd_backend_shi_ite.c) copiava o cabeçalho de solicitação de 8 bytes do host diretamente para o buffer de recebimento compartilhado data->in_msg a partir do FIFO Rx, e somente depois verificava a versão do protocolo e o comprimento derivado do pacote. O manipulador de interrupção também aceitava uma asserção de chip-select (seleção de chip) e uma interrupção RVLI (Rx-valid-length/comprimento válido de recepção) em qualquer estado do driver que não fosse SHI_STATE_DISABLED, permitindo assim a análise de um novo cabeçalho enquanto o thread de comando do host ainda processava a solicitação anterior no mesmo buffer.

O processador do host é o controlador SPI e aciona tanto o chip select quanto o relógio. Após enviar uma solicitação bem-formada, ele pode imediatamente desasserir o chip select — o que retorna o driver ao estado pronto (ready) e reativa o FIFO — e iniciar uma segunda transação com um cabeçalho contendo data_len = 0xFFFF. Esses oito bytes são escritos em in_msg antes que o comprimento excessivo seja rejeitado, caindo assim em um buffer cujos conteúdos já foram validados por verify_rx() em subsys/mgmt/ec_host_cmd/ec_host_cmd_handler.c. Se isso ocorrer na janela de tempo antes do thread de comando do host executar args.input_buf_size = rx_header->data_len, a estrutura (framework) passa ao manipulador de comandos registrado um comprimento de entrada de 65535 bytes sobre um buffer de apenas 256 bytes.

O resultado é uma leitura fora dos limites (out-of-bounds read) de até aproximadamente 64 KiB além do buffer da solicitação: os manipuladores de comando que copiam ou ecoam input_buf_size bytes revelam memória adjacente do controlador embarcado ao host ou transbordam o buffer de resposta, e uma leitura após o final da SRAM causa falha no controlador. A mesma condição de corrida (race condition) também permite a troca dos valores cmd_id e cmd_ver após a verificação da soma de verificação (checksum) e após a busca do manipulador. A exploração requer a capacidade de acionar o barramento SHI inter-processadores (um sistema operacional host comprometido ou acesso físico às linhas SPI) e vencer uma corrida temporal, que o controlador SPI pode tentar indefinidamente.

A correção analisa o cabeçalho em uma struct local ec_host_cmd_request_header e copia-o para in_msg apenas após o comprimento ter sido limitado por sizeof(data->in_msg), além de ignorar interrupções de chip-select e RVLI fora dos estados SHI_STATE_READY_TO_RECV/SHI_STATE_RECEIVING. Uma condição de corrida residual, porém limitada, permanece: uma interrupção de fim de transação ainda redefine o estado para pronto enquanto o thread do comando do host possui posse do buffer, permitindo que uma segunda solicitação válida sobrescreva os conteúdos da solicitação em trânsito, ao contrário do backend NPCX, que fica parado no estado SHI_STATE_CNL_RESP_NOT_RDY enquanto o buffer está em uso.

If you want to get best quality of vulnerability data, you may have to visit VulDB.

Responsável

Zephyr

Reservar

11/08/2026

Divulgação

09/10/2026

Moderação

aceite

Entrada

VDB-415745

EPSS

0.00000

KEV

não

Atividades

baixo

Fontes

Do you know our Splunk app?

Download it now for free!