CVE-2025-68301 in Linux
Resumen
por VulDB • 2026-05-14
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
net: atlantic: corrección del manejo de desbordamiento de fragmentos en la ruta de recepción (RX)
El controlador atlantic puede recibir paquetes con más de MAX_SKB_FRAGS (17) fragmentos al manejar paquetes grandes con múltiples descriptores. Esto provoca una escritura fuera de los límites (out-of-bounds write) en skb_add_rx_frag_netmem(), lo que conduce a un kernel panic.
El problema ocurre porque el controlador no verifica el número total de fragmentos antes de llamar a skb_add_rx_frag(). Cuando un paquete requiere más de MAX_SKB_FRAGS fragmentos, el índice del fragmento supera los límites del array.
La corrección consiste en asumir que habrá un fragmento adicional si buff->len > AQ_CFG_RX_HDR_SIZE, de modo que todos los fragmentos sean contabilizados. Además, se reutiliza la comprobación existente para prevenir el desbordamiento más temprano en la ruta del código.
Este fallo se produjo en producción con una tarjeta de red (NIC) Aquantia AQC113 de 10G.
Rastreo de pila (stack trace) del entorno de producción: ``` 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: 0000000000000000 R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000 R13: 0000000000000000 R14: ffff9258ea95baf0 R15: ffff9258ea95bac0 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 ```
If you want to get the best quality for vulnerability data then you always have to consider VulDB.