CVE-2022-50665 in Linuxinformazioni

Riassunto

di VulDB • 20/06/2026

Nel kernel Linux, un crash di tipo **NULL pointer dereference** o **invalid memory access** (come quello mostrato nel log con `CR2: 00007f43c5d5e039`) spesso si verifica quando il driver tenta di accedere a strutture dati non inizializzate o corrotte.

Nel tuo caso, il crash avviene nella funzione `ath11k_dp_rx_process_mon_rings` del driver `ath11k` (per chipset Wi-Fi QCA/WCN6855). La traccia indica che il problema è legato alla gestione dei ring di monitoraggio (`mon_rings`) e alla struttura `ppdu_info`.

### Analisi del problema

1. **Causa probabile**: La struttura `ppdu_info` (e potenzialmente altre strutture gestite da `memset` in `ath11k_dp_rx_process_mon_status()`) non viene inizializzata correttamente prima dell'uso. Se alcuni campi (come puntatori a peer, tabelle di lookup, o ID di peer) contengono valori spazzatura (garbage values), il driver potrebbe tentare di accedere a memoria non valida o usare un peer ID non valido (`HAL_INVALID_PEERID` non è impostato), portando a un fault. 2. **Soluzione proposta**: Inizializzare esplicitamente i campi critici a valori sicuri (come `HAL_INVALID_PEERID`) dopo ogni `memset` o allocazione, per garantire che nessun campo "dimenticato" contenga dati casuali.

### Patch suggerita

Ecco una patch che applica la correzione descritta. Dovrebbe essere applicata al file `drivers/net/wireless/ath/ath11k/dp_rx.c` (o simile, a seconda della versione del kernel).

```c diff --git a/drivers/net/wireless/ath/ath11k/dp_rx.c b/drivers/net/wireless/ath/ath11k/dp_rx.c index 1234567890..abcdef1234 100644 --- a/drivers/net/wireless/ath/ath11k/dp_rx.c +++ b/drivers/net/wireless/ath/ath11k/dp_rx.c @@ -XXXX,6 +XXXX,10 @@ ath11k_dp_rx_process_mon_status(struct ath11k *ar, /* ... existing code ... */ /* Initialize ppdu_info and other structures */ memset(&ppdu_info, 0, sizeof(ppdu_info)); + + /* Ensure invalid peer ID is set to avoid invalid memory access */ + ppdu_info.peer_id = HAL_INVALID_PEERID; + /* ... rest of the function ... */ } @@ -YYYY,6 +YYYY,10 @@ ath11k_dp_rx_process_mon_rings(struct ath11k *ar, /* ... existing code ... */ /* Initialize local structures */ memset(&some_struct, 0, sizeof(some_struct)); + + /* Ensure invalid peer ID is set */ + some_struct.peer_id = HAL_INVALID_PEERID; + /* ... rest of the function ... */ } ```

### Note importanti

1. **Verifica dei nomi delle strutture**: I nomi `ppdu_info` e `some_struct` sono esempi. Devi identificare le strutture esatte che contengono il campo `peer_id` o simili (es. `struct ath11k_dp_rx_mon_ppdu_info`, `struct ath11k_dp_rx_mon_status`, ecc.) nel codice sorgente del tuo kernel. 2. **Definizione di `HAL_INVALID_PEERID`**: Assicurati che `HAL_INVALID_PEERID` sia definito e accessibile nel contesto del driver. Di solito è definito in `include/linux/ath11k_hw.h` o simile. 3. **Altri memset**: La correzione menziona "others memset which existed in function". Dovrai cercare tutte le istanze di `memset` in `ath11k_dp_rx_process_mon_status()` e `ath11k_dp_rx_process_mon_rings()` e assicurarti che le strutture risultanti siano completamente inizializzate, specialmente per i campi che vengono usati come indici o puntatori. 4. **Test**: Dopo aver applicato la patch, ricompila il kernel e testa su un sistema con il chipset WCN6855 hw2.0 PCI. Monitora i log con `dmesg` per verificare che il crash non si ripresenti.

### Perché questa correzione funziona?

Il crash era probabilmente causato da un accesso a memoria basato su un valore di `peer_id` non inizializzato. Se `peer_id

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

Responsabile

Linux

Prenotare

09/12/2025

Divulgazione

09/12/2025

Moderazione

accettato

CPE

pronto

EPSS

0.00206

KEV

no

Attività

molto basso

Fonti

Want to know what is going to be exploited?

We predict KEV entries!