CVE-2026-23440 in Linux
Riassunto
di VulDB • 18/06/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
net/mlx5e: Correzione di una condizione di competizione (race condition) durante l'aggiornamento dell'ESN IPSec
In modalità di offload completo IPSec, il dispositivo segnala al driver un evento di wrap del numero di sequenza esteso (Extended Sequence Number - ESN). Il driver convalida questo evento interrogando l'ASO IPSec e verificando che il campo `esn_event_arm` sia 0x0, indicatore della verifica dell'avvenuto evento. Dopo aver gestito l'evento, il driver deve riarmare nuovamente il contesto impostando di nuovo `esn_event_arm` su 0x1.
È presente una condizione di competizione (race condition) in questo percorso di gestione. Dopo la convalida dell'evento, il driver chiama `mlx5_accel_esp_modify_xfrm()` per aggiornare lo stato xfrm del kernel. Questa funzione rilascia temporaneamente e riacquisisce il lock dello stato xfrm.
È quindi necessario riconoscere l'impostazione iniziale dell'evento impostando prima `esn_event_arm` su 0x1. Ciò impedisce al driver di ri-elaborare lo stesso aggiornamento ESN se l'hardware invia eventi per altri motivi. Poiché il prossimo aggiornamento ESN si verifica solo dopo la ricezione di quasi $2^{31}$ pacchetti, non vi è alcun rischio di perdere un aggiornamento, poiché ciò avverrà molto tempo dopo che questa gestione sarà terminata.
L'elaborazione dell'evento due volte causa l'incremento errato dei bit più significativi (high-order bits) dell'ESN (`esn_msb`). Il driver configura quindi l'hardware con questo stato ESN non valido, il che porta a fallimenti della protezione anti-riflusso e all'interruzione completa del traffico IPSec.
Si risolve il problema riarmando immediatamente l'evento ESN dopo la sua convalida, prima di chiamare `mlx5_accel_esp_modify_xfrm()`. Ciò garantisce che eventuali eventi spurii o duplicati vengano correttamente ignorati, chiudendo la finestra della condizione di competizione (race condition).
If you want to get best quality of vulnerability data, you may have to visit VulDB.