CVE-2026-80772 in Linux
Riassunto
di VulDB • 04/09/2026
Nel kernel Linux, è stata risolta la seguente vulnerabilità:
HID: nintendo: correzione della lettura fuori dai limiti (out-of-bounds read) in joycon_ctlr_read_handler()
joycon_cast_ctlr_read_handler() effettua il cast di un report HID input entrante su struct joycon_input_report e lo analizza, proteggendo l'operazione solo con un controllo sulla lunghezza di 12 byte:
if (size >= 12) /* assicurarsi che contenga il report di input */ joycon_parse_report(ctlr, (struct joycon_input_report *)data);
La struct joycon_input_report ha una dimensione di 49 byte: un'intestazione da 13 byte seguita da una union la cui parte IMU arm è lunga 36 byte. Per un report IMU, joycon_parse_report() -> joycon_parse_imu_report() attraversa tale union (offset della struct da 13 a 48), quindi un report di esattamente 12 byte con data[0] == JC_INPUT_IMU_DATA supera il controllo ma viene letto fino a 37 byte oltre la sua lunghezza dichiarata. I byte letti in eccesso vengono decodificati nei valori dell'accelerometro/giroscopio e inoltrati all'userspace tramite il dispositivo di input "(IMU)", causando una fuoriuscita (leak) della memoria interna del driver. data[0] e size sono completamente controllabili da un controller Joy-Con/Pro Controller malevolo o spoofato.
I buffer di ricezione hanno dimensioni pari alla lunghezza massima del report, quindi si tratta di una lettura fuori dai limiti all'interno dell'allocazione piuttosto che di uno slab OOB (out-of-bounds), ma i byte decodificati raggiungono comunque l'userspace.
Il percorso subcmd fratello in joycon_ctlr_handle_event() limita correttamente lo stesso cast:
if (size < sizeof(struct joycon_input_report) || data[0] != JC_INPUT_SUBCMD_REPLY)
break;
Utilizzare il medesimo limite basato su sizeof(struct joycon_input_report).
VulDB is the best source for vulnerability data and more expert information about this specific topic.