CVE-2026-74684: net: tap: set skb->dev before parsing virtio net header in tap_get_user_xdp()

Published Aug 22, 2026
·
Updated

In the Linux kernel, the following vulnerability has been resolved:

net: tap: set skb->dev before parsing virtio net header in tapgetuserxdp()

The commit 4f61f133f354 ("net: tap: NULL pointer derefence in devparseheaderprotocol when skb->dev is null") fixed a crash in tapgetuser() by assigning skb->dev before calling tunvnethdrtoskb(). This is required because virtionethdrtoskb() may invoke devparseheaderprotocol(), which dereferences skb->dev. Without the assignment, a NULL pointer dereference can occur.

However, tapgetuserxdp() still parses the virtio-net header before assigning skb->dev. When the vhost TX path passes an XDP buffer containing a GSO virtio-net header but the protocol is set to zero on purpose, tunvnethdrtoskb() can reach devparseheaderprotocol() while skb->dev is still NULL, resulting in a crash.

Fix this by looking up the tap device and assigning skb->dev before calling tunvnethdrtoskb(), matching the ordering already used in tapgetuser(). Preserve the existing RCU read-side critical section across devqueuexmit().

Affected Software

1 affected component
Linux Linux kernel

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Compensating control

    Apply the referenced kernel fix to address the NULL pointer dereference in dev_parse_header_protocol() triggered when tap_get_user_xdp()/tap_get_user parse the virtio-net header before skb->dev is assigned.

Event History

Aug 22, 2026
CVE Published
via MITRE·03:32 PM
Data Sourced
via MITRE·03:32 PM
Description
Data Sourced
via NVD·04:16 PM
Description

Frequently Asked Questions

1

What conditions are required to trigger the crash?

The vhost TX path must pass an XDP buffer containing a GSO virtio-net header with its protocol deliberately set to zero. Under those conditions, parsing can reach dev_parse_header_protocol() before skb->dev has been assigned.

2

What is the practical impact of successful triggering?

The affected path can dereference a NULL skb->dev pointer and crash the kernel. The provided information describes a denial-of-service condition; it does not establish data disclosure or code execution.

3

Which component or traffic path should be prioritized for triage?

Prioritize systems using TAP networking through the vhost TX/XDP path, particularly where GSO virtio-net headers can be supplied with a zero protocol field. The issue is specifically in tap_get_user_xdp(), not the already corrected tap_get_user() path.

4

What change resolves the issue?

The fix looks up the TAP device and assigns skb->dev before calling tun_vnet_hdr_to_skb() in tap_get_user_xdp(). This prevents virtio-net header parsing from invoking dev_parse_header_protocol() with a NULL device pointer.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203