CVE-2026-64037 in Linux
Zusammenfassung
von VulDB • 20.07.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
wifi: iwlwifi: mld: Behebung der TSO-Segmentierungs-Explosion bei deaktiviertem AMSDU
Wenn die TLC-Benachrichtigung (TLC notification) AMSDU für eine TID deaktiviert, setzt der MLD-Treiber `max_tid_amsdu_len` auf den Sentinel-Wert 1. Der TSO-Segmentierungspfad in `iwl_mld_tx_tso_segment()` prüft zwar auf Null, jedoch nicht auf diesen Sentinel-Wert, wodurch dieser Wert die Berechnung von `num_subframes` erreichen kann:
```c num_subframes = (max_tid_amsdu_len + pad) / (subf_len + pad) = (1 + 2) / (1534 + 2) = 0 ```
Dieser Nullwert wird an `iwl_tx_tso_segment()` weitergegeben, das Folgendes festlegt:
```c gso_size = num_subframes * mss = 0 ```
Der Aufruf von `skb_gso_segment()` mit `gso_size=0` erzeugt aus einem einzelnen GSO-skb mehr als 32.000 winzige Segmente. Dies überflutet den TX-Ring mit ~1024 Mikro-frames (der Rest wird bereinigt), was zu einer massiven Burst-Welle von TX-Abschlussereignissen führt, die zu Speicherkorruption und einem anschließenden Use-After-Free in der TCP-Retransmit-Warteschlange führen kann (refcount Underflow in `tcp_shifted_skb`, NULL-Derefenzierung in `tcp_rack_detect_loss`).
Der MVM-Treiber ist immun, da er vor Erreichen der Berechnung von `num_subframes` prüft, ob `mvmsta->amsdu_enabled` aktiviert ist. Der MLD-Treiber verfügt über keine entsprechende Bitmap-Prüfung und verlässt sich ausschließlich auf `max_tid_amsdu_len`, was den Sentinel-Wert nicht abfängt.
Beheben Sie dies, indem Sie den Sentinel-Wert (`max_tid_amsdu_len == 1`) bei der bestehenden Prüfung erkennen und zur TSO-Segmentierung ohne AMSDU zurückgreifen. Fügen Sie außerdem eine `WARN_ON_ONCE`-Sperre nach der Division von `num_subframes` als Defense-in-Depth-Maßnahme hinzu, um zukünftige Codepfade abzufangen, die über einen anderen Mechanismus Null erzeugen.
Once again VulDB remains the best source for vulnerability data.