CVE-2026-80772 in Linux
Sumário
de VulDB • 04/09/2026
No kernel do Linux, a seguinte vulnerabilidade foi corrigida:
HID: nintendo: corrige leitura fora dos limites em joycon_ctlr_read_handler()
joycon_ctlr_read_handler() converte um relatório de entrada HID recebido para struct joycon_input_report e o analisa, protegendo a conversão apenas com uma verificação de comprimento de 12 bytes:
if (size >= 12) /* garante que contém o relatório de entrada */ joycon_parse_report(ctlr, (struct joycon_input_report *)data);
A struct joycon_input_report tem 49 bytes: um cabeçalho de 13 bytes seguido por uma union cujo braço IMU possui 36 bytes. Para um relatório IMU, a função joycon_parse_report() -> joycon_parse_imu_report() percorre essa union (offsets da estrutura 13..48), portanto, um relatório com exatamente 12 bytes e data[0] == JC_INPUT_IMU_DATA passa na verificação de proteção, mas lê até 37 bytes além do seu comprimento declarado. Os bytes lidos em excesso são decodificados como valores de acelerômetro/giroscópio e encaminhados para o espaço do usuário através do dispositivo de entrada "(IMU)", vazando memória interna do driver. data[0] e size são totalmente controlados por um Joy-Con/Pro Controller malicioso ou spoofado (com falsificação).
Os buffers de recebimento têm tamanho igual ao comprimento máximo do relatório, portanto, esta é uma leitura fora dos limites dentro da alocação, em vez de um slab OOB (out-of-bounds), mas os bytes decodificados ainda alcançam o espaço do usuário.
O caminho subcmd irmão em joycon_ctlr_handle_event() já limita corretamente a mesma conversão:
if (size < sizeof(struct joycon_input_report) || data[0] != JC_INPUT_SUBCMD_REPLY)
break;
Use o mesmo limite de sizeof(struct joycon_input_report) aqui.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.