lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Message-ID: <2025121643-CVE-2025-68301-be31@gregkh>
Date: Tue, 16 Dec 2025 16:06:55 +0100
From: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
To: linux-cve-announce@...r.kernel.org
Cc: Greg Kroah-Hartman <gregkh@...nel.org>
Subject: CVE-2025-68301: net: atlantic: fix fragment overflow handling in RX path

From: Greg Kroah-Hartman <gregkh@...nel.org>

Description
===========

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 Linux kernel CVE team has assigned CVE-2025-68301 to this issue.


Affected and fixed versions
===========================

	Issue introduced in 5.10.118 with commit cd66ab20a8f84474564a68fffffd37d998f6c340 and fixed in 5.10.247 with commit 34147477eeab24077fcfe9649e282849347d760c
	Issue introduced in 5.15.42 with commit 948ddbdc56636773401f2cb9c7a932eb9c43ccfd and fixed in 5.15.197 with commit b0c4d5135b04ea100988e2458c98f2d8564cda16
	Issue introduced in 5.18 with commit 6aecbba12b5c90b26dc062af3b9de8c4b3a2f19f and fixed in 6.1.159 with commit 5d6051ea1b0417ae2f06a8440d22e48fbc8f8997
	Issue introduced in 5.18 with commit 6aecbba12b5c90b26dc062af3b9de8c4b3a2f19f and fixed in 6.6.119 with commit 3be37c3c96b16462394fcb8e15e757c691377038
	Issue introduced in 5.18 with commit 6aecbba12b5c90b26dc062af3b9de8c4b3a2f19f and fixed in 6.12.61 with commit 3fd2105e1b7e041cc24be151c9a31a14d5fc50ab
	Issue introduced in 5.18 with commit 6aecbba12b5c90b26dc062af3b9de8c4b3a2f19f and fixed in 6.17.11 with commit 64e47cd1fd631a21bf5a630cebefec6c8fc381cd
	Issue introduced in 5.18 with commit 6aecbba12b5c90b26dc062af3b9de8c4b3a2f19f and fixed in 6.18 with commit 5ffcb7b890f61541201461580bb6622ace405aec
	Issue introduced in 5.17.10 with commit dd4fb02847e737cc38ca75e708b1a836fba45faf

Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.

Unaffected versions might change over time as fixes are backported to
older supported kernel versions.  The official CVE entry at
	https://cve.org/CVERecord/?id=CVE-2025-68301
will be updated if fixes are backported, please check that for the most
up to date information about this issue.


Affected files
==============

The file(s) affected by this issue are:
	drivers/net/ethernet/aquantia/atlantic/aq_ring.c


Mitigation
==========

The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes.  Individual
changes are never tested alone, but rather are part of a larger kernel
release.  Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all.  If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
	https://git.kernel.org/stable/c/34147477eeab24077fcfe9649e282849347d760c
	https://git.kernel.org/stable/c/b0c4d5135b04ea100988e2458c98f2d8564cda16
	https://git.kernel.org/stable/c/5d6051ea1b0417ae2f06a8440d22e48fbc8f8997
	https://git.kernel.org/stable/c/3be37c3c96b16462394fcb8e15e757c691377038
	https://git.kernel.org/stable/c/3fd2105e1b7e041cc24be151c9a31a14d5fc50ab
	https://git.kernel.org/stable/c/64e47cd1fd631a21bf5a630cebefec6c8fc381cd
	https://git.kernel.org/stable/c/5ffcb7b890f61541201461580bb6622ace405aec

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ