CVE-2026-93107 in Linuxinformazioni

Riassunto

di VulDB • 18/09/2026

Nel kernel Linux è stata risolta la seguente vulnerabilità:

RDMA/rxe: Evitare il ri-elaborazione del pacchetto corrente dopo che QP entra nello stato di errore

Quando do_complete() rileva che QP si trova nello stato di errore, restituisce RESPST_CHK_RESOURCE. Prima dell'commit 49dc9c1f0c7e ("RDMA/rxe: Cleanup reset state handling in rxe_resp.c") questo era il ciclo di flush: check_resource() aveva un branch per lo stato di errore che recuperava ogni WQE recv rimanente e lo completava con IB_WC_WR_FLUSH_ERR, senza toccare il pacchetto corrente. Quel commit ha rimosso il branch per lo stato di errore da check_resource() (il draining è ora eseguito all'ingresso di rxe_receiver()) ma ha mantenuto la restituzione dello stato di errore in do_complete().

Di conseguenza, quando un QP passa allo stato di errore mentre un pacchetto viene completato - ad esempio una disconnessione rdma_cm che compete con l'elaborazione delle ricezioni - la macchina a stati del responder torna al ciclo di elaborazione della richiesta con il pacchetto già completato ancora in mano: check_resource() recupera un nuovo WQE recv, execute()/send_data_in() copia nuovamente lo stesso payload del pacchetto, do_complete() invia un altro CQE IB_WC_SUCCESS (qp->resp.status è ancora 0), e il controllo torna al controllo dello stato di errore. Il ciclo ri-esegue lo stesso pacchetto una volta per ogni WGE recv pubblicato (osservato: ~1000 completamenti duplicati IB_WC_SUCCESS di un singolo SEND, uno circa ogni ~8us, corrispondente all'occupazione RQ) finché la RQ non si esaurisce, dopodiché qp->resp.wqe è NULL e send_data_in() lo dereferenzia:

BUG: kernel NULL pointer dereference, address: 0000000000000014 Workqueue: rxe_wq do_work RIP: copy_data+0x29/0x1f0 Call Trace: send_data_in+0x25/0x50 rxe_receiver+0xf36/0x1dd0

I completamenti duplicati sono indistinguibili dalle ricezioni reali per l'ULP. Durante un test di stress su RDS, il messaggio è stato accettato come nuovo e ha consegnato lo stesso datagramma allo spazio utente centinaia di volte, corrompendo il flusso; qualsiasi ULP che si affida alla consegna esattamente una volta (exactly-once delivery) per RC è interessato.

Un pacchetto live che raggiunge il controllo dello stato di errore in do_complete() è stato eseguito e completato esattamente una volta e deve essere consumato, non ri-elaborato. Restituire RESPST_CLEANUP per esso (dequeue e free); continuare a restituire RESPST_CHK_RESOURCE nel caso pkt == NULL.

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

Responsabile

Linux

Prenotare

17/09/2026

Divulgazione

18/09/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!