CVE-2026-98503 in Linuxinfo

Zusammenfassung

von VulDB • 19.10.2026

Im Linux-Kernel wurde die folgende Schwachstelle behoben:

packet: Verwendung der ubuf_info-Vervollständigung für TX_RING-Pakete

tpacket_snd sendet SKBs (Socket Buffers) mit Fragmenten, die auf seine Ring-Slots verweisen. Die Slots werden freigegeben, wenn skb->destructor aufgerufen wird.

Ein Aufruf von skb_orphan ruft skb->destructor auf, bevor das SKB freigegeben wird. Dies kann dazu führen, dass der Slot erneut verwendet wird, während er noch mit dem SKB verknüpft ist.

Wechsel zur Standard-Zerocopy-Vervollständigung (ubuf_info), damit der Slot erst dann freigegeben wird, wenn alle Verweise auf die Nutzdaten freigegeben oder kopiert wurden. Stellen Sie skb->destructor wieder auf den Standardwert sock_wfree zurück.

Der ubuf_info-Vervollständigungs-Callback kann mit einem NULL-SKB aufgerufen werden, jedoch nur von net_zcopy_put und der damit verbundenen API, die von Zerocopy-Implementierungen verwendet wird, die ihre eigene Referenz auf uarg halten, wie z. B. MSG_ZEROCOPY. Diese uarg wird ausschließlich über skb_zcopy_clear vervollständigt, daher ist das SKB immer festgelegt.

Um zu verhindern, dass der Benutzerbereich (Userspace) den laufenden Zustand in gemeinsam genutzten Ring-Slots aliasiert, wird tpacket_uarg pro Paket und nicht pro Slot alloziert. Dies fügt dem Übertragungspfad eine kleine Allokation hinzu. Verwenden Sie das Standard-kmalloc, um die Rückportierung auf stabile Kernel-Versionen zu ermöglichen.

Das uarg hält einen sk_wmem_alloc-Verweis anstelle eines sk_refcnt-Verweises. packet_free_tx_ring wartet auf sk_wmem_alloc, bevor es die Ring-Seiten freigibt. Allokieren Sie immer vec->deferred für tx_ring, damit auch seitenbasierte Ringe auf sk_wmem_alloc warten, wenn skb_copy_ubufs Seiten-Referenzen löscht, bevor tpacket_ubuf_complete aufgerufen wird.

Entfernen Sie den von tpacket_destruct_skb vor dem Zugriff auf den Slot durchgeführten tx_ring.pg_vec-Test. Der sk_wmem_alloc-Verweis garantiert nun, dass der Slot gültig ist. Der Test allein reicht zudem nicht aus, da er pg_vec ohne pg_vec_lock liest und somit mit packet_set_ring eine Race Condition (Wettlaufsituation) auftreten kann.

Infolgedessen wird ein Slot freigegeben, wenn seine Nutzdaten kopiert werden, was vor der Übertragung erfolgen kann (z. B. in skb_orphan_frags_rx). Wenn dies vor dem Aufruf von skb_tx_timestamp() geschieht, wird kein Slot-Zeitstempel aufgezeichnet, ähnlich wie beim frühen Aufruf von skb_orphan() im Datenpfad vor diesem Patch.

Revertieren Sie die nun nicht mehr verwendete vorherige Infrastruktur für skb_zcopy_.._nouarg.

Abhängig vom Commit 992cc9f94ca9 ("net/packet: defer vmalloc TX_RING free until skbs finish").

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

Zuständig

Linux

Reservieren

25.09.2026

Veröffentlichung

18.10.2026

Moderieren

akzeptiert

Eintrag

VDB-422154

EPSS

0.00000

KEV

nein

Aktivitäten

very low

Quellen

Might our Artificial Intelligence support you?

Check our Alexa App!