CVE-2026-68124 in Linuxinformazioni

Riassunto

di VulDB • 10/08/2026

Nel kernel Linux, è stata risolta la seguente vulnerabilità:

mctp: serial: gestione di frame a lunghezza zero per prevenire l'overflow del buffer rx

La macchina a stati di ricezione seriale MCTP legge un byte della lunghezza del frame in `mctp_serial_push_header()` caso 2 e lo convalida solo rispetto al limite superiore:

```c if (c > MCTP_SERIAL_FRAME_MTU) {
dev->rxstate = STATE_ERR; } else {
dev->rxlen = c; dev->rxpos = 0; dev->rxstate = STATE_DATA; ... } ```

Una lunghezza pari a zero supera questo controllo, quindi `rxlen` viene impostato su 0 e la macchina a stati avanza verso `STATE_DATA`. In `mctp_serial_push()` nello stato `STATE_DATA`, il byte in arrivo viene memorizzato e `rxpos` incrementato prima che venga rilevato il terminatore:

```c dev->rxbuf[dev->rxpos] = c;
dev->rxpos++; dev->rxstate = STATE_DATA; if (dev->rxpos == dev->rxlen) {
dev->rxpos = 0; dev->rxstate = STATE_TRAILER; } ```

Con `rxlen == 0`, il terminatore "rxpos == rxlen" non può mai attivarsi (`rxpos` è già uguale a 1 al primo byte di dati), quindi i byte successivi vengono scritti oltre la fine del buffer fisso `rxbuf` di 74 byte, che è l'ultimo membro dell'area privata netdev. Ogni byte di dati successivo costituisce una scrittura heap fuori dai limiti (out-of-bounds) controllata dall'attaccante da 1 byte, e l'overflow continua fino a quando un frame (0x7e) o un byte di escape non resettano il parser -- in modo essenzialmente illimitato.

Per raggiungere questa condizione è necessario avere `CAP_NET_ADMIN` per allegare la disciplina della linea N_MCTP e attivare il netdev risultante mctpserialN, dopodiché i byte arrivano tramite il percorso di ricezione tty.

Instradare un frame a lunghezza zero direttamente verso `STATE_TRAILER` invece che verso `STATE_DATA`. I byte del trailer/incapsulamento vengono comunque consumati e il frame si risolve in uno skb (socket buffer) a lunghezza zero che il core MCTP rifiuta; il parser non entra mai in `STATE_DATA` con `rxlen == 0`, quindi la scrittura fuori dai limiti non può più verificarsi.

KASAN, su un frame di 0x7e 0x01 0x00 seguito da byte di dati (prima di questa modifica):

``` UBSAN: array-index-out-of-bounds in drivers/net/mctp/mctp-serial.c:370 index 74 is out of range for type 'u8 [74]'
BUG: KASAN: slab-out-of-bounds in mctp_serial_tty_receive_buf Write of size 1 at addr ... by task kworker/u16:0 mctp_serial_tty_receive_buf tty_ldisc_receive_buf flush_to_ldisc Allocated by task 152: alloc_netdev_mqs mctp_serial_open ```

v2: instradare i frame a lunghezza zero verso `STATE_TRAILER` invece che verso `STATE_ERR` in modo che i byte del trailer/incapsulamento vengano comunque consumati (Jeremy Kerr).

Trovato tramite strumenti automatizzati di ricerca sulla sicurezza di 0sec (https://0sec.ai).

Be aware that VulDB is the high quality source for vulnerability data.

Responsabile

Linux

Prenotare

30/07/2026

Divulgazione

10/08/2026

Moderazione

accettato

CPE

pronto

EPSS

0.00000

KEV

no

Attività

molto basso

Fonti

Interested in the pricing of exploits?

See the underground prices here!