CVE-2025-38463
NoneCVSS
—
EPSS
0.2%
Published
Jul 25, 2025
CISA due date
—
Cloudanix analysis
A calculation error in the Linux kernel's networking code can let attackers corrupt memory and gain elevated access on affected systems.
- Exploitation
- Local Privilege
- Attacker needs
- Local User
- Complexity
- Moderate
- Impact
- Denial Of Service
- Component
- OS kernel
- Class
- Memory Corruption
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Signedness error in TCP skb remaining space calculation converts size_goal to unsigned before subtraction, zero-extending the result into ssize_t copy and allowing sk->sk_forward_alloc to receive a large positive value that overflows to negative on subsequent allocations.
Why it matters to the business
Linux kernel memory corruption can lead to container escapes or local privilege escalation on affected systems; high ecosystem prevalence increases exposure for cloud and server workloads, though low EPSS and no KEV status reduce immediate ransomware urgency.
How an attack unfolds
An attacker crafts TCP send operations (via TCP_REPAIR or tcp_bound_to_half_wnd reducing size_goal below skb->len) so the flawed subtraction yields an oversized copy value; tcp_wmem_schedule then wraps sk_forward_alloc around INT_MAX, enabling further memory requests to trigger negative values and memory corruption. Named threat actors including Advanced Spyware Campaign and Linux Kernel Privilege Escalation groups have targeted similar kernel memory issues in container environments.
How to fix it
Apply the upstream fix in commit 81373cd1d72d87c7d844d4454a526b8f53e72d00; rebuild and deploy the patched kernel across all affected Linux distributions and container hosts.
How to confirm the fix worked
Verify the running kernel contains commit 81373cd1d72d87c7d844d4454a526b8f53e72d00 or later equivalent; inspect /proc/version or kernel build logs for the fix hash and re-run syzkaller reproducer to confirm absence of overflow.
Typical attack path
- Establish TCP connection and prepare write queue with existing skb
- Trigger condition via TCP_REPAIR or tcp_bound_to_half_wnd to make size_goal < skb->len
- Perform send that executes flawed copy = size_goal - skb->len arithmetic
- Allow tcp_wmem_schedule to set sk_forward_alloc near INT_MAX
- Issue additional allocations that cause wrap to negative and corrupt kernel memory structures
How to detect it
Search kernel logs and audit records for TCP_REPAIR socket operations followed by large memory allocation failures; correlate with container breakout attempts or privilege escalation traces reported by threat actors exploiting analogous kernel memory flaws.
What your security team should do
- Prioritize kernel upgrades to the fixed commit on all production and container hosts within the next maintenance window
- Monitor EPSS trend and threat actor activity for any increase in exploitation attempts against similar memory issues
- Harden container runtimes with seccomp and user namespaces to limit impact of kernel memory corruption
- Include the fixed commit in golden images and CI build pipelines
The record
In the Linux kernel, the following vulnerability has been resolved: tcp: Correct signedness in skb remaining space calculation Syzkaller reported a bug [1] where sk->sk_forward_alloc can overflow. When we send data, if an skb exists at the tail of the write queue, the kernel will attempt to append the new data to that skb. However, the code that checks for available space in the skb is flawed: ''' copy = size_goal - skb->len ''' The types of the variables involved are: ''' copy: ssize_t (s64 on 64-bit systems) size_goal: int skb->len: unsigned int ''' Due to C's type promotion rules, the signed size_goal is converted to an unsigned int to match skb->len before the subtraction. The result is an unsigned int. When this unsigned int result is then assigned to the s64 copy variable, it is zero-extended, preserving its non-negative value. Consequently, copy is always >= 0. Assume we are sending 2GB of data and size_goal has been adjusted to a value smaller than skb->len. The subtraction will result in copy holding a very large positive integer. In the subsequent logic, this large value is used to update sk->sk_forward_alloc, which can easily cause it to overflow. The syzkaller reproducer uses TCP_REPAIR to reliably create this condition. However, this can also occur in real-world scenarios. The tcp_bound_to_half_wnd() function can also reduce size_goal to a small value. This would cause the subsequent tcp_wmem_schedule() to set sk->sk_forward_alloc to a value close to INT_MAX. Further memory allocation requests would then cause sk_forward_alloc to wrap around and become negative. [1]: https://syzkaller.appspot.com/bug?extid=de6565462ab540f50e47
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| AlmaLinux:10 | kernel | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-64k | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-64k-core | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-64k-debug | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-64k-debug-core | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-64k-debug-devel | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-64k-debug-devel-matched | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-64k-debug-modules | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-64k-debug-modules-core | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-64k-debug-modules-extra | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-64k-devel | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-64k-devel-matched | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-64k-modules | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-64k-modules-core | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-64k-modules-extra | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-abi-stablelists | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-core | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-cross-headers | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-debug | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-debug-core | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-debug-devel | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-debug-devel-matched | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-debug-modules | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-debug-modules-core | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-debug-modules-extra | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-debug-uki-virt | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-devel | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-devel-matched | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-doc | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-headers | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-modules | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-modules-core | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-modules-extra | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-rt | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-rt-64k | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-rt-64k-core | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-rt-64k-debug | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-rt-64k-debug-core | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-rt-64k-debug-devel | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-rt-64k-debug-modules | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-rt-64k-debug-modules-core | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-rt-64k-debug-modules-extra | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-rt-64k-devel | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-rt-64k-modules | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-rt-64k-modules-core | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-rt-64k-modules-extra | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-rt-core | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-rt-debug | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-rt-debug-core | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-rt-debug-devel | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-rt-debug-kvm | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-rt-debug-modules | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-rt-debug-modules-core | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-rt-debug-modules-extra | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-rt-devel | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-rt-kvm | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-rt-modules | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-rt-modules-core | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-rt-modules-extra | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-tools | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-tools-libs | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-tools-libs-devel | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-uki-virt | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-uki-virt-addons | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-zfcpdump | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-zfcpdump-core | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-zfcpdump-devel | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-zfcpdump-devel-matched | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-zfcpdump-modules | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-zfcpdump-modules-core | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | kernel-zfcpdump-modules-extra | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | libperf | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | perf | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | python3-perf | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | rtla | 0 | 6.12.0-55.33.1.el10_0 |
| AlmaLinux:10 | rv | 0 | 6.12.0-55.33.1.el10_0 |
| Debian:13 | linux | 0 | 6.12.41-1 |
| Debian:14 | linux | 0 | No fix |
| Debian:14 | linux | 0 | 6.16.3-1 |
| Linux | Kernel | 6.5.0 | 6.6.99 |
| Mageia:9 | kernel | 0 | 6.6.101-1.mga9 |
| Mageia:9 | kernel-linus | 0 | 6.6.101-1.mga9 |
| Mageia:9 | kmod-virtualbox | 0 | 7.1.10-7.mga9 |
| Mageia:9 | kmod-xtables-addons | 0 | 3.24-83.mga9 |
| Mageia:9 | wireless-regdb | 0 | 20250710-1.mga9 |
| SUSE:Linux Enterprise High Availability Extension 15 SP6 | kernel-default | 0 | 6.4.0-150600.23.65.1 |
| SUSE:Linux Enterprise Live Patching 15 SP6 | kernel-default | 0 | 6.4.0-150600.23.65.1 |
| SUSE:Linux Enterprise Live Patching 15 SP6 | kernel-livepatch-SLE15-SP6-RT_Update_14 | 0 | 1-150600.1.5.1 |
| SUSE:Linux Enterprise Live Patching 15 SP6 | kernel-livepatch-SLE15-SP6_Update_14 | 0 | 1-150600.13.3.4 |
| SUSE:Linux Enterprise Live Patching 15 SP7 | kernel-livepatch-SLE15-SP7-RT_Update_3 | 0 | 1-150700.1.5.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP6 | kernel-64kb | 0 | 6.4.0-150600.23.65.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP6 | kernel-default | 0 | 6.4.0-150600.23.65.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP6 | kernel-default-base | 0 | 6.4.0-150600.23.65.1.150600.12.28.4 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP6 | kernel-source | 0 | 6.4.0-150600.23.65.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP6 | kernel-zfcpdump | 0 | 6.4.0-150600.23.65.1 |
| SUSE:Linux Enterprise Module for Confidential Computing Technical Preview 15 SP6 | kernel-coco | 0 | 6.4.0-15061.28.coco15sp6.1 |
| SUSE:Linux Enterprise Module for Confidential Computing Technical Preview 15 SP6 | kernel-coco_debug | 0 | 6.4.0-15061.28.coco15sp6.1 |
| SUSE:Linux Enterprise Module for Confidential Computing Technical Preview 15 SP6 | kernel-source-coco | 0 | 6.4.0-15061.28.coco15sp6.1 |
| SUSE:Linux Enterprise Module for Confidential Computing Technical Preview 15 SP6 | kernel-syms-coco | 0 | 6.4.0-15061.28.coco15sp6.1 |
| SUSE:Linux Enterprise Module for Development Tools 15 SP6 | kernel-docs | 0 | 6.4.0-150600.23.65.1 |
| SUSE:Linux Enterprise Module for Development Tools 15 SP6 | kernel-obs-build | 0 | 6.4.0-150600.23.65.1 |
| SUSE:Linux Enterprise Module for Development Tools 15 SP6 | kernel-source | 0 | 6.4.0-150600.23.65.1 |
| SUSE:Linux Enterprise Module for Development Tools 15 SP6 | kernel-syms | 0 | 6.4.0-150600.23.65.1 |
| SUSE:Linux Enterprise Module for Legacy 15 SP6 | kernel-default | 0 | 6.4.0-150600.23.65.1 |
| SUSE:Linux Enterprise Module for Public Cloud 15 SP6 | kernel-azure | 0 | 6.4.0-150600.8.48.1 |
| SUSE:Linux Enterprise Module for Public Cloud 15 SP6 | kernel-source-azure | 0 | 6.4.0-150600.8.48.1 |
| SUSE:Linux Enterprise Module for Public Cloud 15 SP6 | kernel-syms-azure | 0 | 6.4.0-150600.8.48.1 |
| SUSE:Linux Enterprise Workstation Extension 15 SP6 | kernel-default | 0 | 6.4.0-150600.23.65.1 |
| SUSE:Real Time Module 15 SP6 | kernel-rt | 0 | 6.4.0-150600.10.49.1 |
| SUSE:Real Time Module 15 SP6 | kernel-rt_debug | 0 | 6.4.0-150600.10.49.1 |
| SUSE:Real Time Module 15 SP6 | kernel-source-rt | 0 | 6.4.0-150600.10.49.1 |
| SUSE:Real Time Module 15 SP6 | kernel-syms-rt | 0 | 6.4.0-150600.10.49.1 |
| SUSE:Real Time Module 15 SP7 | kernel-rt | 0 | 6.4.0-150700.7.13.1 |
| SUSE:Real Time Module 15 SP7 | kernel-source-rt | 0 | 6.4.0-150700.7.13.1 |
| SUSE:Real Time Module 15 SP7 | kernel-syms-rt | 0 | 6.4.0-150700.7.13.1 |
| openSUSE:Leap 15.6 | dtb-aarch64 | 0 | 6.4.0-150600.23.65.1 |
| openSUSE:Leap 15.6 | kernel-64kb | 0 | 6.4.0-150600.23.65.1 |
| openSUSE:Leap 15.6 | kernel-azure | 0 | 6.4.0-150600.8.48.1 |
| openSUSE:Leap 15.6 | kernel-debug | 0 | 6.4.0-150600.23.65.1 |
| openSUSE:Leap 15.6 | kernel-default | 0 | 6.4.0-150600.23.65.1 |
| openSUSE:Leap 15.6 | kernel-default-base | 0 | 6.4.0-150600.23.65.1.150600.12.28.4 |
| openSUSE:Leap 15.6 | kernel-docs | 0 | 6.4.0-150600.23.65.1 |
| openSUSE:Leap 15.6 | kernel-kvmsmall | 0 | 6.4.0-150600.23.65.1 |
| openSUSE:Leap 15.6 | kernel-obs-build | 0 | 6.4.0-150600.23.65.1 |
| openSUSE:Leap 15.6 | kernel-obs-qa | 0 | 6.4.0-150600.23.65.1 |
| openSUSE:Leap 15.6 | kernel-rt | 0 | 6.4.0-150600.10.49.1 |
| openSUSE:Leap 15.6 | kernel-rt_debug | 0 | 6.4.0-150600.10.49.1 |
| openSUSE:Leap 15.6 | kernel-source | 0 | 6.4.0-150600.23.65.1 |
| openSUSE:Leap 15.6 | kernel-source-azure | 0 | 6.4.0-150600.8.48.1 |
| openSUSE:Leap 15.6 | kernel-source-rt | 0 | 6.4.0-150600.10.49.1 |
| openSUSE:Leap 15.6 | kernel-syms | 0 | 6.4.0-150600.23.65.1 |
| openSUSE:Leap 15.6 | kernel-syms-azure | 0 | 6.4.0-150600.8.48.1 |
| openSUSE:Leap 15.6 | kernel-syms-rt | 0 | 6.4.0-150600.10.49.1 |
| openSUSE:Leap 15.6 | kernel-zfcpdump | 0 | 6.4.0-150600.23.65.1 |
| openSUSE:Leap 16.0 | dtb-aarch64 | 0 | 6.12.0-160000.6.1 |
| openSUSE:Leap 16.0 | kernel-64kb | 0 | 6.12.0-160000.6.1 |
| openSUSE:Leap 16.0 | kernel-default | 0 | 6.12.0-160000.6.1 |
| openSUSE:Leap 16.0 | kernel-default-base | 0 | 6.12.0-160000.6.1.160000.2.4 |
| openSUSE:Leap 16.0 | kernel-docs | 0 | 6.12.0-160000.6.1 |
| openSUSE:Leap 16.0 | kernel-kvmsmall | 0 | 6.12.0-160000.6.1 |
| openSUSE:Leap 16.0 | kernel-obs-build | 0 | 6.12.0-160000.6.1 |
| openSUSE:Leap 16.0 | kernel-obs-qa | 0 | 6.12.0-160000.6.1 |
| openSUSE:Leap 16.0 | kernel-rt | 0 | 6.12.0-160000.6.1 |
| openSUSE:Leap 16.0 | kernel-source | 0 | 6.12.0-160000.6.1 |
| openSUSE:Leap 16.0 | kernel-syms | 0 | 6.12.0-160000.6.1 |
| openSUSE:Leap 16.0 | kernel-zfcpdump | 0 | 6.12.0-160000.6.1 |
Related vulnerabilities
- CVE-2025-68285 In the Linux kernel, the following vulnerability has been resolved: libceph: fix… Also affects kernel
- CVE-2025-68287 In the Linux kernel, the following vulnerability has been resolved: usb: dwc3: Fix race… Also affects kernel
- CVE-2025-40277 In the Linux kernel, the following vulnerability has been resolved: drm/vmwgfx: Validate… Also affects kernel
- CVE-2025-40240 In the Linux kernel, the following vulnerability has been resolved: sctp: avoid NULL… Also affects kernel
- CVE-2025-40185 In the Linux kernel, the following vulnerability has been resolved: ice: ice_adapter… Also affects kernel
- CVE-2025-40176 In the Linux kernel, the following vulnerability has been resolved: tls: wait for pending… Also affects kernel
- CVE-2025-40058 In the Linux kernel, the following vulnerability has been resolved: iommu/vt-d: Disallow… Also affects kernel
- CVE-2025-40047 In the Linux kernel, the following vulnerability has been resolved: io_uring/waitid… Also affects kernel