In the Linux kernel, the following vulnerability has been resolved:
net: fix memory leak in tcpconnrequest()
If inetcskreqskqueuehashadd() return false, tcpconnrequest() will return without free the dst memory, which allocated in afops->route_req.
Here is the kmemleak stack:
unreferenced object 0xffff8881198631c0 (size 240): comm "softirq", pid 0, jiffies 4299266571 (age 1802.392s) hex dump (first 32 bytes): 00 10 9b 03 81 88 ff ff 80 98 da bc ff ff ff ff ................ 81 55 18 bb ff ff ff ff 00 00 00 00 00 00 00 00 .U.............. backtrace: [<ffffffffb93e8d4c>] kmemcachealloc+0x60c/0xa80 [<ffffffffba11b4c5>] dstalloc+0x55/0x250 [<ffffffffba227bf6>] rtdstalloc+0x46/0x1d0 [<ffffffffba23050a>] _mkrouteoutput+0x29a/0xa50 [<ffffffffba23456b>] iprouteoutputkeyhash+0x10b/0x240 [<ffffffffba2346bd>] iprouteoutputflow+0x1d/0x90 [<ffffffffba254855>] inetcskroutereq+0x2c5/0x500 [<ffffffffba26b331>] tcpconnrequest+0x691/0x12c0 [<ffffffffba27bd08>] tcprcvstateprocess+0x3c8/0x11b0 [<ffffffffba2965c6>] tcpv4dorcv+0x156/0x3b0 [<ffffffffba299c98>] tcpv4rcv+0x1cf8/0x1d80 [<ffffffffba239656>] ipprotocoldeliverrcu+0xf6/0x360 [<ffffffffba2399a6>] iplocaldeliverfinish+0xe6/0x1e0 [<ffffffffba239b8e>] iplocaldeliver+0xee/0x360 [<ffffffffba239ead>] iprcv+0xad/0x2f0 [<ffffffffba110943>] _netifreceiveskbone_core+0x123/0x140
Call dstrelease() to free the dst memory when inetcskreqskqueuehashadd() return false in tcpconnrequest().
[
{
"deprecated": false,
"target": {
"file": "net/ipv4/tcp_input.c",
"function": "tcp_conn_request"
},
"digest": {
"length": 3714.0,
"function_hash": "317743988528838579543793512429466599188"
},
"id": "CVE-2024-57841-1860217c",
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@4f4aa4aa28142d53f8b06585c478476cfe325cfc",
"signature_version": "v1"
},
{
"deprecated": false,
"target": {
"file": "net/ipv4/tcp_input.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"35476430589454895447930882589118206736",
"105531550058982733352556786301445357483",
"239838563904237506878874538180348081560",
"13453558726710665171276145597739617788"
]
},
"id": "CVE-2024-57841-483374af",
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@2af69905180b3fea12f9c1db374b153a06977021",
"signature_version": "v1"
},
{
"deprecated": false,
"target": {
"file": "net/ipv4/tcp_input.c",
"function": "tcp_conn_request"
},
"digest": {
"length": 3206.0,
"function_hash": "114659606243529913952119829107552837181"
},
"id": "CVE-2024-57841-483a037f",
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@de3f999bf8aee16e9da1c1224191abdc69e97c9d",
"signature_version": "v1"
},
{
"deprecated": false,
"target": {
"file": "net/ipv4/tcp_input.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"35476430589454895447930882589118206736",
"105531550058982733352556786301445357483",
"239838563904237506878874538180348081560",
"13453558726710665171276145597739617788"
]
},
"id": "CVE-2024-57841-7ae59745",
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@de3f999bf8aee16e9da1c1224191abdc69e97c9d",
"signature_version": "v1"
},
{
"deprecated": false,
"target": {
"file": "net/ipv4/tcp_input.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"35476430589454895447930882589118206736",
"105531550058982733352556786301445357483",
"239838563904237506878874538180348081560",
"13453558726710665171276145597739617788"
]
},
"id": "CVE-2024-57841-89a3e91d",
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@4f4aa4aa28142d53f8b06585c478476cfe325cfc",
"signature_version": "v1"
},
{
"deprecated": false,
"target": {
"file": "net/ipv4/tcp_input.c",
"function": "tcp_conn_request"
},
"digest": {
"length": 3206.0,
"function_hash": "114659606243529913952119829107552837181"
},
"id": "CVE-2024-57841-8df6fe12",
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9d38959677291552d1b0ed2689a540af279b5bf8",
"signature_version": "v1"
},
{
"deprecated": false,
"target": {
"file": "net/ipv4/tcp_input.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"35476430589454895447930882589118206736",
"105531550058982733352556786301445357483",
"239838563904237506878874538180348081560",
"13453558726710665171276145597739617788"
]
},
"id": "CVE-2024-57841-9061bbdf",
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9d38959677291552d1b0ed2689a540af279b5bf8",
"signature_version": "v1"
},
{
"deprecated": false,
"target": {
"file": "net/ipv4/tcp_input.c",
"function": "tcp_conn_request"
},
"digest": {
"length": 3205.0,
"function_hash": "276977694965967583010798579410542441920"
},
"id": "CVE-2024-57841-fe5cd535",
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@2af69905180b3fea12f9c1db374b153a06977021",
"signature_version": "v1"
}
]