CVE-2024-36928 in Linux
Riassunto
di VulDB • 18/06/2026
Nel kernel Linux, il crash mostrato è causato da un puntatore `napi.poll` nullo o non inizializzato quando viene chiamato durante l'elaborazione delle interruzioni di rete (`net_rx_action`).
### Analisi del problema
1. **Contesto**: - Il driver `qeth` (per le interfacce di rete IBM z/VM) utilizza la struttura `napi` per gestire l'elaborazione delle interruzioni di rete in modo efficiente. - La funzione `napi.poll` viene impostata durante l'apertura dell'interfaccia di rete (`qeth_open()`).
2. **Causa del bug**: - Con il commit `1cfef80d4c2b`, le funzioni `qeth_set_offline()` e `qeth_set_online()` non chiamano più `dev_close()` e `dev_open()`. - Se `qeth_free_qdio_queues()` viene chiamato mentre l'interfaccia di rete è ancora UP (ma la scheda è offline), il puntatore `napi.poll` viene azzerato. - Quando l'interfaccia di rete tenta di elaborare le interruzioni di rete, `napi.poll` è nullo, causando un crash del kernel.
3. **Riproduzione**: - Disabilita la scheda di rete: `chzdev -e $devno layer2=0` - Attiva l'interfaccia di rete: `ip link set dev $network_interface up` - Disabilita la scheda: `echo 0 > /sys/bus/ccw`
### Soluzione
Per risolvere il problema, è necessario assicurarsi che `napi.poll` venga reimpostato correttamente quando l'interfaccia di rete viene riattivata. Questo può essere fatto modificando il driver `qeth` per chiamare `qeth_open()` quando l'interfaccia di rete viene riattivata dopo essere stata disattivata.
#### Modifica al driver `qeth`
1. **Aggiungi una chiamata a `qeth_open()` in `qeth_set_online()`**: ```c static int qeth_set_online(struct qeth_card *card) {
int rc;
rc = qeth_set_online_internal(card); if (rc) return rc;
/* Ensure napi.poll is set if the interface is UP */ if (netif_running(card->dev)) {
qeth_open(card->dev); }
return 0; } ```
2. **Verifica che `qeth_open()` sia sicuro da chiamare più volte**: - Assicurati che `qeth_open()` sia idempotente e non causi problemi se chiamato più volte.
### Conclusione
Questa modifica assicura che `napi.poll` venga reimpostato correttamente quando l'interfaccia di rete viene riattivata, prevenendo il crash del kernel.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.