Skip to main content

Boteraser | Website and Server Security Solutions

🛡️ CVE-2024-57974 — kernel

🟡 CVSS 4.7 — Medium ✅ No Known Exploit NVD
4.7
CVSS Score
0 Low4 Medium7 High9 Critical10

Description

udp: Deal with race between UDP socket address change and rehash

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

udp: Deal with race between UDP socket address change and rehash

If a UDP socket changes its local address while it's receiving

datagrams, as a result of connect(), there is a period during which

a lookup operation might fail to find it, after the address is changed

but before the secondary hash (port and address) and the four-tuple

hash (local and remote ports and addresses) are updated.

Secondary hash chains were introduced by commit 30fff9231fad ("udp:

bind() optimisation") and, as a result, a rehash operation became

needed to make a bound socket reachable again after a connect().

This operation was introduced by commit 719f835853a9 ("udp: add

rehash on connect()") which isn't however a complete fix: the

socket will be found once the rehashing completes, but not while

it's pending.

This is noticeable with a socat(1) server in UDP4-LISTEN mode, and a

client sending datagrams to it. After the server receives the first

datagram (cf. _xioopen_ipdgram_listen()), it issues a connect() to

the address of the sender, in order to set up a directed flow.

Now, if the client, running on a different CPU thread, happens to

send a (subsequent) datagram while the server's socket changes its

address, but is not rehashed yet, this will result in a failed

lookup and a port unreachable error delivered to the client, as

apparent from the following reproducer:

LEN=$(($(cat /proc/sys/net/core/wmem_default) / 4))

dd if=/dev/urandom bs=1 count=${LEN} of=tmp.in

while :; do

taskset -c 1 socat UDP4-LISTEN:1337,null-eof OPEN:tmp.out,create,trunc &

sleep 0.1 || sleep 1

taskset -c 2 socat OPEN:tmp.in UDP4:localhost:1337,shut-null

wait

done

where the client will eventually get ECONNREFUSED on a write()

(typically the second or third one of a given iteration):

2024/11/13 21:28:23 socat[46901] E write(6, 0x556db2e3c000, 8192): Connection refused

This issue was first observed as a seldom failure in Podman's tests

checking UDP functionality while using pasta(1) to connect the

container's network namespace, which leads us to a reproducer with

the lookup error resulting in an ICMP packet on a tap device:

LOCAL_ADDR="$(ip -j -4 addr show|jq -rM '.[] | .addr_info[0] | select(.scope == "global").local')"

while :; do

./pasta --config-net -p pasta.pcap -u 1337 socat UDP4-LISTEN:1337,null-eof OPEN:tmp.out,create,trunc &

sleep 0.2 || sleep 1

socat OPEN:tmp.in UDP4:${LOCAL_ADDR}:1337,shut-null

wait

cmp tmp.in tmp.out

done

Once this fails:

tmp.in tmp.out differ: char 8193, line 29

we can finally have a look at what's going on:

$ tshark -r pasta.pcap

1 0.000000 :: ? ff02::16 ICMPv6 110 Multicast Listener Report Message v2

2 0.168690 88.198.0.161 ? 88.198.0.164 UDP 8234 60260 ? 1337 Len=8192

3 0.168767 88.198.0.161 ? 88.198.0.164 UDP 8234 60260 ? 1337 Len=8192

4 0.168806 88.198.0.161 ? 88.198.0.164 UDP 8234 60260 ? 1337 Len=8192

5 0.168827 c6:47:05:8d:dc:04 ? Broadcast ARP 42 Who has 88.198.0.161? Tell 88.198.0.164

6 0.168851 9a:55:9a:55:9a:55 ? c6:47:05:8d:dc:04 ARP 42 88.198.0.161 is at 9a:55:9a:55:9a:55

7 0.168875 88.198.0.161 ? 88.198.0.164 UDP 8234 60260 ? 1337 Len=8192

8 0.168896 88.198.0.164 ? 88.198.0.161 ICMP 590 Destination unreachable (Port unreachable)

9 0.168926 88.198.0.161 ? 88.198.0.164 UDP 8234 60260 ? 1337 Len=8192

10 0.168959 88.198.0.161 ? 88.198.0.164 UDP 8234 60260 ? 1337 Len=8192

11 0.168989 88.198.0.161 ? 88.198.0.164 UDP 4138 60260 ? 1337 Len=4096

12 0.169010 88.198.0.161 ? 88.198.0.164 UDP 42 60260 ? 1337 Len=0

On the third datagram received, the network namespace of the container

initiates an ARP lookup to deliver the ICMP message.

In another variant of this reproducer, starting the client with:

strace -f pasta --config-net -u 1337 socat UDP4-LISTEN:1337,null-eof OPEN:tmp.out,create,tru

---truncated---

How this vulnerability can be exploited

This issue can be reached with local access to the system, attack complexity is high, an attacker needs low-level privileges on the target. No user interaction is required. The scope is unchanged, so the impact stays within the vulnerable component. Rated impact: confidentiality none, integrity none, availability high.

CVSS metrics in full

The score comes from this vector: CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H

  • Attack vector: Local — a local account, shell or session on the host is needed.
  • Attack complexity: High — the attacker first has to win a race, learn a secret or otherwise prepare the target.
  • Privileges required: Low — an ordinary user account is enough.
  • User interaction: None — nobody has to be tricked into anything.
  • Scope: Unchanged — the damage stays inside the vulnerable component.
  • Confidentiality impact: None.
  • Integrity impact: None.
  • Availability impact: High — total loss, or loss the attacker controls.

Affected software

CVE-2024-57974 is recorded against 2 packages.

  • kernel (from 6.13.0 up to 6.13.2)
  • linux-kernel (from 6.13 up to 6.13.2)

Timeline and source

Published on 27 February 2025 and last revised on 12 August 2026. No public exploit is currently recorded for this entry. A vendor advisory or fix has been published. Record sourced from NVD.

References

git.kernel.org (Web)
git.kernel.org (Web)
git.kernel.org (Web)
github.com (Advisory)
nvd.nist.gov (Advisory)
git.kernel.org (Package)

Other advisories for this package

kernel has other advisories on record. If you are patching this one, these are worth checking on the same host:

Details

Severity Medium
CVSS Score 4.7
CVSS Vector CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H
CWE N/A
Public Exploit ✅ No
Source NVD
Published 2025-02-27
Updated 2026-08-20
Modified 2026-08-12

Affected Packages

Software From version Fixed in
kernel 6.13.0 6.13.2
linux-kernel 6.13 6.13.2

Similar Threats

Vulnerability Monitoring

Track new vulnerabilities in kernel

CVE-2024-57974 is rated CVSS 4.7 Medium. BotEraser monitors your WordPress installation and notifies you when software you use appears in our vulnerability database.

Set Up Free Alerts →

No credit card required  ·  Results in minutes

ⓘ Data Notice: The information presented above has been compiled from publicly available internet sources. Boteraser aggregates this data solely for informational purposes and does not independently classify, evaluate, or endorse any findings about the vulnerabilities listed. The accuracy and completeness of this information is the sole responsibility of the original publishers. Boteraser and its operators accept no liability for any decisions made based on this data.

Browse related advisories

All advisoriesCVECVE 2024
✓