CVE-2024-35884: udp: do not accept non-tunnel GSO skbs landing in a tunnel

Published May 19, 2024
·
Updated

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

udp: do not accept non-tunnel GSO skbs landing in a tunnel

The Linux kernel CVE team has assigned CVE-2024-35884 to this issue.

Upstream advisory: https://lore.kernel.org/linux-cve-announce/2024051946-CVE-2024-35884-d4a4@gregkh/T

Other sources

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

udp: do not accept non-tunnel GSO skbs landing in a tunnel

When rx-udp-gro-forwarding is enabled UDP packets might be GROed when being forwarded. If such packets might land in a tunnel this can cause various issues and udpgroreceive makes sure this isn't the case by looking for a matching socket. This is performed in udp4/6grolookupskb but only in the current netns. This is an issue with tunneled packets when the endpoint is in another netns. In such cases the packets will be GROed at the UDP level, which leads to various issues later on. The same thing can happen with rx-gro-list.

We saw this with geneve packets being GROed at the UDP level. In such case gsosize is set; later the packet goes through the geneve rx path, the geneve header is pulled, the offset are adjusted and fraglist skbs are not adjusted with regard to geneve. When those skbs hit skbfragment, it will misbehave. Different outcomes are possible depending on what the GROed skbs look like; from corrupted packets to kernel crashes.

One example is a BUGON[1] triggered in skbsegment while processing the fraglist. Because gsosize is wrong (geneve header was pulled) skbsegment thinks there is "geneve header size" of data in fraglist, although it's in fact the next packet. The BUGON itself has nothing to do with the issue. This is only one of the potential issues.

Looking up for a matching socket in udpgroreceive is fragile: the lookup could be extended to all netns (not speaking about performances) but nothing prevents those packets from being modified in between and we could still not find a matching socket. It's OK to keep the current logic there as it should cover most cases but we also need to make sure we handle tunnel packets being GROed too early.

This is done by extending the checks in udpunexpectedgso: GSO packets lacking the SKBGSOUDPTUNNEL/CSUM bits and landing in a tunnel must be segmented.

[1] kernel BUG at net/core/skbuff.c:4408! RIP: 0010:skbsegment+0xd2a/0xf70 udpgsosegment+0xaa/0x560

NVD

Affected Software

15 affected componentsFixes available
debian/linux
5.10.223-15.10.234-16.1.129-16.1.135-16.12.25-16.12.27-1
redhat/kernel<5.10.215
5.10.215
redhat/kernel<5.15.154
5.15.154
redhat/kernel<6.1.85
6.1.85
redhat/kernel<6.6.26
6.6.26
redhat/kernel<6.8.5
6.8.5
redhat/kernel<6.9
6.9
Linux Linux kernel>=5.6<5.10.215
Linux Linux kernel>=5.11<5.15.154
Linux Linux kernel>=5.16<6.1.85
Linux Linux kernel>=6.2<6.6.26
Linux Linux kernel>=6.7<6.8.5
Linux Linux kernel=6.9-rc1
Linux Linux kernel=6.9-rc2
Debian Debian Linux=10.0

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade debian/linux to a version that resolves this vulnerability.

    Fixed in 5.10.223-1Fixed in 5.10.234-1Fixed in 6.1.129-1Fixed in 6.1.135-1Fixed in 6.12.25-1Fixed in 6.12.27-1
  2. Upgrade

    Upgrade redhat/kernel to a version that resolves this vulnerability.

    Fixed in 5.10.215
  3. Upgrade

    Upgrade redhat/kernel to a version that resolves this vulnerability.

    Fixed in 5.15.154
  4. Upgrade

    Upgrade redhat/kernel to a version that resolves this vulnerability.

    Fixed in 6.1.85
  5. Upgrade

    Upgrade redhat/kernel to a version that resolves this vulnerability.

    Fixed in 6.6.26
  6. Upgrade

    Upgrade redhat/kernel to a version that resolves this vulnerability.

    Fixed in 6.8.5
  7. Upgrade

    Upgrade redhat/kernel to a version that resolves this vulnerability.

    Fixed in 6.9
  8. Upgrade

    Upgrade Linux kernel to a version that resolves this vulnerability.

    Patch CVE-2024-35884

Event History

May 19, 2024
CVE Published
via MITRE·08:34 AM
Data Sourced
via MITRE·08:34 AM
DescriptionSeverity
Data Sourced
via NVD·09:15 AM
DescriptionSeverity
Data Sourced
via NVD·09:15 AM
RemedyWeaknessAffected Software
May 20, 2024
Data Sourced
via Red Hat·12:08 PM
DescriptionSeverityAffected Software
Jul 11, 2024
Data Sourced
via Launchpad·07:46 PM
Description
Apr 27, 2025
Data Sourced
via Ubuntu·12:21 AM
RemedyDescriptionSeverityAffected Software

Frequently Asked Questions

1

What is the severity of CVE-2024-35884?

CVE-2024-35884 has a severity rating that highlights its potential impact on the Linux kernel's UDP handling.

2

How do I fix CVE-2024-35884?

To fix CVE-2024-35884, update your Linux kernel to versions 5.10.215, 5.15.154, 6.1.85, 6.6.26, 6.8.5, 6.9, or any remedial version provided by your distribution.

3

Which versions of the kernel are affected by CVE-2024-35884?

CVE-2024-35884 affects various kernel versions including those prior to 5.10.215, 5.15.154, 6.1.85, 6.6.26, 6.8.5, and 6.9.

4

Is CVE-2024-35884 limited to Red Hat distributions?

No, CVE-2024-35884 affects both Red Hat and Debian distributions where the vulnerable kernel versions are utilized.

5

What type of vulnerability is CVE-2024-35884?

CVE-2024-35884 is a vulnerability in the Linux kernel related to UDP handling that may allow non-tunnel GSO skbs landing in a tunnel.

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