Skip to main content

Linux Kernel EUVDEUVD-2026-24880

| CVE-2026-31503 MEDIUM
2026-04-22 416baaa9-dc9f-4396-8d5f-8c081fb06d67 GHSA-8g49-x5x5-4c9c
5.5
CVSS 3.1 · NVD
Share

Severity by source

NVD PRIMARY
5.5 MEDIUM
AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
SUSE
MEDIUM
qualitative
Red Hat
5.5 MEDIUM
qualitative

Primary rating from NVD.

CVSS VectorNVD

CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Attack Vector
Local
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

Lifecycle Timeline

7
Analysis Generated
Apr 28, 2026 - 15:22 vuln.today
CVSS changed
Apr 28, 2026 - 15:22 NVD
5.5 (MEDIUM)
Patch released
Apr 28, 2026 - 15:07 nvd
Patch available
Patch available
Apr 22, 2026 - 16:33 EUVD
EUVD ID Assigned
Apr 22, 2026 - 14:22 euvd
EUVD-2026-24880
Analysis Generated
Apr 22, 2026 - 14:22 vuln.today
CVE Published
Apr 22, 2026 - 14:16 nvd
MEDIUM 5.5

DescriptionNVD

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

udp: Fix wildcard bind conflict check when using hash2

When binding a udp_sock to a local address and port, UDP uses two hashes (udptable->hash and udptable->hash2) for collision detection. The current code switches to "hash2" when hslot->count > 10.

"hash2" is keyed by local address and local port. "hash" is keyed by local port only.

The issue can be shown in the following bind sequence (pseudo code):

bind(fd1, "[fd00::1]:8888") bind(fd2, "[fd00::2]:8888") bind(fd3, "[fd00::3]:8888") bind(fd4, "[fd00::4]:8888") bind(fd5, "[fd00::5]:8888") bind(fd6, "[fd00::6]:8888") bind(fd7, "[fd00::7]:8888") bind(fd8, "[fd00::8]:8888") bind(fd9, "[fd00::9]:8888") bind(fd10, "[fd00::10]:8888")

/* Correctly return -EADDRINUSE because "hash" is used

  • instead of "hash2". udp_lib_lport_inuse() detects the
  • conflict.

*/ bind(fail_fd, "[::]:8888")

/* After one more socket is bound to "[fd00::11]:8888",

  • hslot->count exceeds 10 and "hash2" is used instead.

*/ bind(fd11, "[fd00::11]:8888") bind(fail_fd, "[::]:8888") /* succeeds unexpectedly */

The same issue applies to the IPv4 wildcard address "0.0.0.0" and the IPv4-mapped wildcard address "::ffff:0.0.0.0". For example, if there are existing sockets bound to "192.168.1.[1-11]:8888", then binding "0.0.0.0:8888" or "[::ffff:0.0.0.0]:8888" can also miss the conflict when hslot->count > 10.

TCP inet_csk_get_port() already has the correct check in inet_use_bhash2_on_bind(). Rename it to inet_use_hash2_on_bind() and move it to inet_hashtables.h so udp.c can reuse it in this fix.

AnalysisAI

Linux kernel UDP socket binding fails to properly detect wildcard address conflicts when hash table collision count exceeds 10, allowing a socket to bind to a wildcard address (such as [::]:8888 or 0.0.0.0:8888) even when specific addresses on that port are already in use. This denial-of-service vulnerability affects local authenticated users who can create UDP sockets, bypassing port conflict checks that should prevent duplicate bindings. The issue stems from improper hash table selection logic in UDP's bind path, which switches from a port-only hash to an address-port hash at a threshold, creating a window where wildcard bindings are incorrectly permitted.

Technical ContextAI

The Linux kernel's UDP implementation uses two separate hash tables for socket collision detection: hash (keyed by local port only) and hash2 (keyed by local address and local port). The bind code path switches from hash to hash2 when hslot->count exceeds 10, intending to improve lookup performance under high collision scenarios. However, the wildcard bind conflict check does not account for this transition correctly. When checking if a wildcard address (IPv6 [::], IPv4 0.0.0.0, or IPv4-mapped ::ffff:0.0.0.0) can bind to a port, the kernel should reject the bind if any specific address on that port is already bound. Before hash2 adoption (count ≤ 10), hash-based lookups correctly detect these conflicts. After the transition (count > 10), hash2-based lookups fail because they only match (address, port) pairs, not the broad wildcard case. The fix involves adopting TCP's inet_use_bhash2_on_bind() logic (renamed to inet_use_hash2_on_bind()) to ensure consistent conflict detection across both hash tables.

RemediationAI

Update to a patched Linux kernel version: 6.1.168 or later for the 6.1.x series, 6.6.131 or later for 6.6.x, 6.12.80 or later for 6.12.x, 6.18.21 or later for 6.18.x, 6.19.11 or later for 6.19.x, or 7.0 final release. Obtain patches from https://git.kernel.org/stable/ or your Linux distribution's security advisory. No workarounds are available; kernel upgrade is required. Systems can reduce exposure by minimizing the number of local users with socket creation privileges and monitoring for unexpected port binding failures via netstat or ss commands, though these are compensating controls only and do not address the root cause.

Vendor StatusVendor

SUSE

Severity: Medium
Product Status
SUSE Linux Enterprise Desktop 15 SP7 Fixed
SUSE Linux Enterprise Desktop 15 SP7 Fixed
SUSE Linux Enterprise High Availability Extension 15 SP7 Fixed
SUSE Linux Enterprise High Availability Extension 15 SP7 Fixed
SUSE Linux Enterprise High Performance Computing 15 SP7 Fixed

Share

EUVD-2026-24880 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy