In the Linux kernel, the following vulnerability has been resolved:
net: mana: Fix Rx DMA datasize and skboverpanic
managetrxbufcfg() aligns the RX buffer's DMA datasize to be multiple of 64. So a packet slightly bigger than mtu+14, say 1536, can be received and cause skbover_panic.
Sample dmesg: [ 5325.237162] skbuff: skboverpanic: text:ffffffffc043277a len:1536 put:1536 head:ff1100018b517000 data:ff1100018b517100 tail:0x700 end:0x6ea dev:<NULL> [ 5325.243689] ------------[ cut here ]------------ [ 5325.245748] kernel BUG at net/core/skbuff.c:192! [ 5325.247838] invalid opcode: 0000 [#1] PREEMPT SMP NOPTI [ 5325.258374] RIP: 0010:skbpanic+0x4f/0x60 [ 5325.302941] Call Trace: [ 5325.304389] <IRQ> [ 5325.315794] ? skbpanic+0x4f/0x60 [ 5325.317457] ? asmexcinvalidop+0x1f/0x30 [ 5325.319490] ? skbpanic+0x4f/0x60 [ 5325.321161] skbput+0x4e/0x50 [ 5325.322670] manapoll+0x6fa/0xb50 [mana] [ 5325.324578] _napipoll+0x33/0x1e0 [ 5325.326328] netrxaction+0x12e/0x280
As discussed internally, this alignment is not necessary. To fix this bug, remove it from the code. So oversized packets will be marked as CQERXTRUNCATED by NIC, and dropped.
[
{
"signature_type": "Line",
"deprecated": false,
"id": "CVE-2024-35901-07e2b29f",
"digest": {
"line_hashes": [
"273137049220939907472092794130486038687",
"174750153652335012397975543787576081782",
"150349385459555686618353869011101191050",
"289978224698744768367781214841933919510"
],
"threshold": 0.9
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@c0de6ab920aafb56feab56058e46b688e694a246",
"signature_version": "v1",
"target": {
"file": "drivers/net/ethernet/microsoft/mana/mana_en.c"
}
},
{
"signature_type": "Function",
"deprecated": false,
"id": "CVE-2024-35901-35618b32",
"digest": {
"length": 280.0,
"function_hash": "226716340844671573272404845719073321529"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@c0de6ab920aafb56feab56058e46b688e694a246",
"signature_version": "v1",
"target": {
"file": "drivers/net/ethernet/microsoft/mana/mana_en.c",
"function": "mana_get_rxbuf_cfg"
}
},
{
"signature_type": "Function",
"deprecated": false,
"id": "CVE-2024-35901-656f28b3",
"digest": {
"length": 280.0,
"function_hash": "226716340844671573272404845719073321529"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@ca58927b00385005f488b6a9905ced7a4f719aad",
"signature_version": "v1",
"target": {
"file": "drivers/net/ethernet/microsoft/mana/mana_en.c",
"function": "mana_get_rxbuf_cfg"
}
},
{
"signature_type": "Line",
"deprecated": false,
"id": "CVE-2024-35901-69391055",
"digest": {
"line_hashes": [
"273137049220939907472092794130486038687",
"174750153652335012397975543787576081782",
"150349385459555686618353869011101191050",
"289978224698744768367781214841933919510"
],
"threshold": 0.9
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@ca58927b00385005f488b6a9905ced7a4f719aad",
"signature_version": "v1",
"target": {
"file": "drivers/net/ethernet/microsoft/mana/mana_en.c"
}
}
]