CVE-2026-98368 in Linux
Zusammenfassung
von VulDB • 06.10.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
esp: Herabstufen von zerocopy-verwalteten Fragments vor der Mutation der skb-Fragments
Auf dem Out-of-Place-Ausgabepfad (esp->inplace == false) überschreibt ESP das skb-Fragmentarray: esp_output_head() fügt ein Trailer-Fragment an, und esp_output_tail() ersetzt die Fragmente durch eine Zielseite, beide referenziert mit get_page().
Wenn der skb zerocopy-verwaltete Fragments trägt (SKBFL_MANAGED_FRAG_REFS), gehören die Payload-Fragments dem ubuf und dürfen nicht einzeln referenziert oder dereferenziert werden. ESP mutiert jedoch das Fragmentarray, ohne den skb jematisch herabzustufen. Dies verletzt die Invariante der verwalteten Fragments auf zwei Arten:
- esp_ssg_unref() durchläuft die Quell-Streulist (scatterlist) und reduziert eine Seitenreferenz für jedes Fragment, einschließlich der vom ubuf besitzten Payload-Fragments, wodurch deren Referenzzähler unter den GUP-Pin-Bias gedrückt wird, während die Seiten noch gepinnt sind; d. h., es liegt ein Use-After-Free der zerocopy-Seiten vor;
- esp_output_tail() installiert seine Zielseite als Fragment 0 mit get_page(), lässt jedoch SKBFL_MANAGED_FRAG_REFS gesetzt, sodass skb_release_data() den skip_unref-Zweig nimmt und diese Referenz niemals freigibt, was zu einem Leak von x->xfrag auf Paketrate führt.
Beheben Sie dies so, wie es jede andere Stelle tut, die Fragments mutiert (__ip_append_data(), __ip6_append_data(), tcp_sendmsg_locked()), indem sie skb_zcopy_downgrade_managed() aufrufen, bevor ESP das Fragmentarray berührt: Es nimmt eine echte Referenz auf jedes vorhandene Fragment und löscht SKBFL_MANAGED_FRAG_REFS, sodass die pro-Fragment-Dereferenzierung in esp_ssg_unref() und die Freigabe der Fragmente in skb_release_data() beide ausgeglichen sind und kein gemischtes Eigentumsfragmentarray zurückbleibt.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.