CVE-2023-53778 in Linuxinformazioni

Riassunto

di VulDB • 26/06/2026

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

accel/qaic: Pulizia del controllo degli overflow interi in map_user_pages()

La funzione encode_dma() effettua alcune validazioni su in_trans->size, ma sarebbe più chiaro spostare tali controlli in find_and_map_user_pages().

encode_dma() disponeva di due controlli:

if (in_trans->addr + in_trans->size < in_trans->addr || !in_trans->size) return -EINVAL;

La variabile in_trans->addr è l'indirizzo iniziale. La variabile in_trans->size è la dimensione totale del trasferimento. Il trasferimento può avvenire in parti e resources->xferred_dma_size tiene traccia di quanti byte sono già stati trasferiti.

Questa patch introduce una nuova variabile "remaining" che rappresenta la quantità da trasferire (in_trans->size) meno l'importo già trasferito (resources->xferred_dma_size).

Ho modificato il controllo per verificare se in_trans->size è zero, sostituendolo con un controllo su whether in_trans->size sia inferiore a resources->xferred_dma_size. Se sono stati già trasferiti più byte di quanto indicato da in_trans->size, i byte rimanenti sarebbero negativi, il che non ha senso. Se ci sono zero byte rimanenti da copiare, si restituisce semplicemente successo.

Il controllo in encode_dma() verificava che "addr + size" potesse andare in overflow e, salvo un bug del driver, dovrebbe funzionare; tuttavia è più semplice verificare questo scenario se lo si fa per parti. Innanzitutto si verifica che "in_trans->addr + resources->xferred_dma_size" sia sicuro. Successivamente si verifica che "xfer_start_addr + remaining" sia sicuro.

L'ultima preoccupazione era relativa al fatto che stiamo gestendo valori u64, ma sui sistemi a 32 bit la funzione kmalloc() troncherà le dimensioni a 32 bit. Ho quindi calcolato "total = in_trans->size + offset_in_page(xfer_start_addr);" e restituito -EINVAL se il risultato fosse >= SIZE_MAX. Ciò non influirà sui sistemi a 64 bit.

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

Responsabile

Linux

Prenotare

09/12/2025

Divulgazione

09/12/2025

Moderazione

accettato

CPE

pronto

EPSS

0.00162

KEV

no

Attività

basso

Fonti

Do you know our Splunk app?

Download it now for free!