CVE-2025-68301

CVE-2025-68301

Critical · published December 16, 2025

CVSS v3.1
9.8
EPSS
0%
Percentile
39.4
In the wild
Unconfirmed
What it is

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

net: atlantic: fix fragment overflow handling in RX path

The atlantic driver can receive packets with more than MAX_SKB_FRAGS (17)

fragments when handling large multi-descriptor packets. This causes an

out-of-bounds write in skb_add_rx_frag_netmem() leading to kernel panic.

The issue occurs because the driver doesn't check the total number of

fragments before calling skb_add_rx_frag(). When a packet requires more

than MAX_SKB_FRAGS fragments, the fragment index exceeds the array bounds.

Fix by assuming there will be an extra frag if buff->len > AQ_CFG_RX_HDR_SIZE,

then all fragments are accounted for. And reusing the existing check to

prevent the overflow earlier in the code path.

This crash occurred in production with an Aquantia AQC113 10G NIC.

Stack trace from production environment:

```

RIP: 0010:skb_add_rx_frag_netmem+0x29/0xd0

Code: 90 f3 0f 1e fa 0f 1f 44 00 00 48 89 f8 41 89

ca 48 89 d7 48 63 ce 8b 90 c0 00 00 00 48 c1 e1 04 48 01 ca 48 03 90

c8 00 00 00 <48> 89 7a 30 44 89 52 3c 44 89 42 38 40 f6 c7 01 75 74 48

89 fa 83

RSP: 0018:ffffa9bec02a8d50 EFLAGS: 00010287

RAX: ffff925b22e80a00 RBX: ffff925ad38d2700 RCX:

fffffffe0a0c8000

RDX: ffff9258ea95bac0 RSI: ffff925ae0a0c800 RDI:

0000000000037a40

RBP: 0000000000000024 R08: 0000000000000000 R09:

0000000000000021

R10: 0000000000000848 R11: 0000000000000000 R12:

ffffa9bec02a8e24

R13: ffff925ad8615570 R14: 0000000000000000 R15:

ffff925b22e80a00

FS: 0000000000000000(0000)

GS:ffff925e47880000(0000) knlGS:0000000000000000

CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033

CR2: ffff9258ea95baf0 CR3: 0000000166022004 CR4:

0000000000f72ef0

PKRU: 55555554

Call Trace:

<IRQ>

aq_ring_rx_clean+0x175/0xe60 [atlantic]

? aq_ring_rx_clean+0x14d/0xe60 [atlantic]

? aq_ring_tx_clean+0xdf/0x190 [atlantic]

? kmem_cache_free+0x348/0x450

? aq_vec_poll+0x81/0x1d0 [atlantic]

? __napi_poll+0x28/0x1c0

? net_rx_action+0x337/0x420

```

Changes in v4:

- Add Fixes: tag to satisfy patch validation requirements.

Changes in v3:

- Fix by assuming there will be an extra frag if buff->len > AQ_CFG_RX_HDR_SIZE,

then all fragments are accounted for.

The record
Technical detail
CVSS v3.1
9.8 · CRITICAL
Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00467 · 39.4th percentile
Published
2025-12-16T21:16Z
References (7)
EPSS history
Timeline
  • 16 DEC 15:06Z
    net: atlantic: fix fragment overflow handling in RX path
    cvelistv5