Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1359 CNY

100%

CVE-2025-22058— udp: Fix memory accounting leak.

Quick assessment

Affected
Linux Linux
Exploitation
No confirmed in-the-wild exploitation; assess based on exposure
Recommended action
Check the vendor advisory and references for a fixed version. If immediate upgrade is impossible, restrict exposure and increase monitoring.

Linux kernel是美国Linux基金会的开源操作系统Linux所使用的内核。 Linux kernel存在安全漏洞,该漏洞源于内存计数泄漏,可能导致间歇性丢包。

AI Predicted 5.3 Difficulty: Moderate EPSS 0.23% · P13

Possible ATT&CK Techniques 1 AI

T1496 · Resource Hijacking

Affected Version Matrix 20

VendorProduct Version RangeStatus
Linux Linux f970bd9e3a06f06df8d8ecf1f8ad2c8615cc17eb< 13550273171f5108b1ac572d8f72f4256ab92854 affected
f970bd9e3a06f06df8d8ecf1f8ad2c8615cc17eb< d9c8266ce536e8314d84370e983afcaa36fb19cf affected
f970bd9e3a06f06df8d8ecf1f8ad2c8615cc17eb< c3ad8c30b6b109283d2643e925f8e65f2e7ab34e affected
f970bd9e3a06f06df8d8ecf1f8ad2c8615cc17eb< 9122fec396950cc866137af7154b1d0d989be52e affected
f970bd9e3a06f06df8d8ecf1f8ad2c8615cc17eb< aeef6456692c6f11ae53d278df64f1316a2a405a affected
f970bd9e3a06f06df8d8ecf1f8ad2c8615cc17eb< a116b271bf3cb72c8155b6b7f39083c1b80dcd00 affected
f970bd9e3a06f06df8d8ecf1f8ad2c8615cc17eb< c4bac6c398118fba79e32b1cd01db22dbfe29fbf affected
f970bd9e3a06f06df8d8ecf1f8ad2c8615cc17eb< 3836029448e76c1e6f77cc5fe0adc09b018b5fa8 affected
… +12 more rows
Get alerts for future matching vulnerabilities Log in to subscribe

I. Basic Information for CVE-2025-22058

Vulnerability Information

Have questions about the vulnerability? See if Shenlong's analysis helps!
View Shenlong Deep Dive ↗

Although we use advanced large model technology, its output may still contain inaccurate or outdated information.Shenlong tries to ensure data accuracy, but please verify and judge based on the actual situation.

Vulnerability Title
udp: Fix memory accounting leak.
Source: CVE Program / CVE List V5
Vulnerability Description
In the Linux kernel, the following vulnerability has been resolved: udp: Fix memory accounting leak. Matt Dowling reported a weird UDP memory usage issue. Under normal operation, the UDP memory usage reported in /proc/net/sockstat remains close to zero. However, it occasionally spiked to 524,288 pages and never dropped. Moreover, the value doubled when the application was terminated. Finally, it caused intermittent packet drops. We can reproduce the issue with the script below [0]: 1. /proc/net/sockstat reports 0 pages # cat /proc/net/sockstat | grep UDP: UDP: inuse 1 mem 0 2. Run the script till the report reaches 524,288 # python3 test.py & sleep 5 # cat /proc/net/sockstat | grep UDP: UDP: inuse 3 mem 524288 <-- (INT_MAX + 1) >> PAGE_SHIFT 3. Kill the socket and confirm the number never drops # pkill python3 && sleep 5 # cat /proc/net/sockstat | grep UDP: UDP: inuse 1 mem 524288 4. (necessary since v6.0) Trigger proto_memory_pcpu_drain() # python3 test.py & sleep 1 && pkill python3 5. The number doubles # cat /proc/net/sockstat | grep UDP: UDP: inuse 1 mem 1048577 The application set INT_MAX to SO_RCVBUF, which triggered an integer overflow in udp_rmem_release(). When a socket is close()d, udp_destruct_common() purges its receive queue and sums up skb->truesize in the queue. This total is calculated and stored in a local unsigned integer variable. The total size is then passed to udp_rmem_release() to adjust memory accounting. However, because the function takes a signed integer argument, the total size can wrap around, causing an overflow. Then, the released amount is calculated as follows: 1) Add size to sk->sk_forward_alloc. 2) Round down sk->sk_forward_alloc to the nearest lower multiple of PAGE_SIZE and assign it to amount. 3) Subtract amount from sk->sk_forward_alloc. 4) Pass amount >> PAGE_SHIFT to __sk_mem_reduce_allocated(). When the issue occurred, the total in udp_destruct_common() was 2147484480 (INT_MAX + 833), which was cast to -2147482816 in udp_rmem_release(). At 1) sk->sk_forward_alloc is changed from 3264 to -2147479552, and 2) sets -2147479552 to amount. 3) reverts the wraparound, so we don't see a warning in inet_sock_destruct(). However, udp_memory_allocated ends up doubling at 4). Since commit 3cd3399dd7a8 ("net: implement per-cpu reserves for memory_allocated"), memory usage no longer doubles immediately after a socket is close()d because __sk_mem_reduce_allocated() caches the amount in udp_memory_per_cpu_fw_alloc. However, the next time a UDP socket receives a packet, the subtraction takes effect, causing UDP memory usage to double. This issue makes further memory allocation fail once the socket's sk->sk_rmem_alloc exceeds net.ipv4.udp_rmem_min, resulting in packet drops. To prevent this issue, let's use unsigned int for the calculation and call sk_forward_alloc_add() only once for the small delta. Note that first_packet_length() also potentially has the same problem. [0]: from socket import * SO_RCVBUFFORCE = 33 INT_MAX = (2 ** 31) - 1 s = socket(AF_INET, SOCK_DGRAM) s.bind(('', 0)) s.setsockopt(SOL_SOCKET, SO_RCVBUFFORCE, INT_MAX) c = socket(AF_INET, SOCK_DGRAM) c.connect(s.getsockname()) data = b'a' * 100 while True: c.send(data)
Source: CVE Program / CVE List V5
CVSS Information
N/A
Source: CVE Program / CVE List V5
Vulnerability Type
N/A
Source: CVE Program / CVE List V5
Vulnerability Title
Linux kernel 安全漏洞
Source: CNNVD (China National Vulnerability Database)
Vulnerability Description
Linux kernel是美国Linux基金会的开源操作系统Linux所使用的内核。 Linux kernel存在安全漏洞,该漏洞源于内存计数泄漏,可能导致间歇性丢包。
Source: CNNVD (China National Vulnerability Database)
CVSS Information
N/A
Source: CNNVD (China National Vulnerability Database)
Vulnerability Type
N/A
Source: CNNVD (China National Vulnerability Database)

Affected Products

Vendor Product Affected Versions CPE Subscribe
Linux Linux f970bd9e3a06f06df8d8ecf1f8ad2c8615cc17eb ~ 13550273171f5108b1ac572d8f72f4256ab92854 -
Linux Linux 4.10 -

II. Public POCs for CVE-2025-22058

# POC Description Source Link Shenlong Link
AI-Generated POC Premium

No public POC found.

Login to generate AI POC

III. Intelligence Information for CVE-2025-22058

请登录查看更多情报信息。

Patches & Fixes for CVE-2025-22058 (2)

Other References for CVE-2025-22058 (6)

Same Patch Batch · Linux · 2025-04-16 · 127 CVEs total

CVE-2025-22021 10.0 CRITICAL netfilter: socket: Lookup orig tuple for IPv6 SNAT
CVE-2025-22110 9.8 CRITICAL netfilter: nfnetlink_queue: Initialize ctx to avoid memory allocation error
CVE-2025-22077 9.8 CRITICAL Revert "smb: client: fix TCP timers deadlock after rmmod"
CVE-2025-22088 9.8 CRITICAL RDMA/erdma: Prevent use-after-free in erdma_accept_newconn()
CVE-2025-22118 8.8 HIGH ice: validate queue quanta parameters to prevent OOB access
CVE-2025-22040 8.8 HIGH ksmbd: fix session use-after-free in multichannel connection
CVE-2025-22041 8.8 HIGH ksmbd: fix use-after-free in ksmbd_sessions_deregister()
CVE-2025-22039 8.8 HIGH ksmbd: fix overflow in dacloffset bounds check
CVE-2024-58096 8.8 HIGH wifi: ath11k: add srng->lock for ath11k_hal_srng_* in monitor mode
CVE-2025-22086 8.8 HIGH RDMA/mlx5: Fix mlx5_poll_one() cur_qp update flow
CVE-2025-22074 8.8 HIGH ksmbd: fix r_count dec/increment mismatch
CVE-2025-23133 8.8 HIGH wifi: ath11k: update channel list in reg notifier instead reg worker
CVE-2025-22117 8.7 HIGH ice: fix using untrusted value of pkt_len in ice_vc_fdir_parse_raw()
CVE-2025-22108 8.6 HIGH bnxt_en: Mask the bd_cnt field in the TX BD properly
CVE-2025-22080 8.4 HIGH fs/ntfs3: Prevent integer overflow in hdr_first_de()
CVE-2025-22121 8.4 HIGH ext4: fix out-of-bound read in ext4_xattr_inode_dec_ref_all()
CVE-2025-22038 8.3 HIGH ksmbd: validate zero num_subauth before sub_auth is accessed
CVE-2025-22042 8.1 HIGH ksmbd: add bounds check for create lease context
CVE-2025-22043 8.1 HIGH ksmbd: add bounds check for durable handle context
CVE-2025-22045 7.8 HIGH x86/mm: Fix flush_tlb_range() when used for zapping normal PMDs

Showing top 20 of 127 CVEs. View all on vendor page &rarr; →

IV. Related Vulnerabilities

V. Comments for CVE-2025-22058

No comments yet


Leave a comment