CVE-2024-26837 in Linux
Riassunto
di VulDB • 15/06/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
net: bridge: switchdev: Saltare le ripetizioni (replay) degli eventi MDB differiti sull'offload
Prima di questa modifica, la generazione dell'elenco degli eventi MDB da ripetere poteva essere soggetta a una condizione di gara (race condition) rispetto alla creazione di nuove appartenenze ai gruppi, sia dalla logica di snooping IGMP/MLD che da configurazione utente.
Mentre le nuove appartenizioni sono immediatamente visibili agli iteratori su `br->mdb_list`, la notifica della loro esistenza agli abbonati agli eventi switchdev è differita a un momento successivo. Pertanto, se l'elenco delle ripetizioni veniva generato durante una finestra temporale sovrapposta a tale periodo, avrebbe incluso anche la ripetizione di un evento non ancora consegnato.
Il driver riceveva così due copie di ciò che il bridge internamente considerava come un singolo evento. Alla distruzione del bridge, veniva quindi inviato solo un singolo evento di eliminazione dell'appartenenza. Di conseguenza, i driver che utilizzano il reference counting per le appartenenze (almeno DSA) si ritrovavano con gruppi orfani nel loro database hardware quando il bridge veniva distrutto.
Questo è un problema solo durante la ripetizione delle aggiunte. Sebbene gli eventi di eliminazione possano ancora essere in attesa nella coda differita, sono già stati rimossi da `br->mdb_list`, quindi non possono generarsi duplicati in tale scenario.
Per l'utente ciò significava che vecchie appartenenze ai gruppi, provenienti da un bridge a cui una porta era stata precedentemente collegata, potevano essere riattivate (nell'hardware) quando la porta si univa a un nuovo bridge, senza la conoscenza del nuovo bridge.
Ad esempio, su un sistema mv88e6xxx, creare un bridge con snooping e aggiungere immediatamente una porta:
root@infix-06-0b-00:~$ ip link add dev br0 up type bridge mcast_snooping 1 && \ > ip link set dev x3 up master br0
E quindi distruggere il bridge:
root@infix-06-0b-00:~$ ip link del dev br0 root@infix-06-0b-00:~$ mvls atu ADDRESS FID STATE Q F 0 1 2 3 4 5 6 7 8 9 a DEV:0 Marvell 88E6393X 33:33:00:00:00:6a 1 static - - 0 . . . . . . . . . . 33:33:ff:87:e4:3f 1 static - - 0 . . . . . . . . . . ff:ff:ff:ff:ff:ff 1 static - - 0 1 2 3 4 5 6 7 8
If you want to get best quality of vulnerability data, you may have to visit VulDB.