| From bippy-5f407fcff5a0 Mon Sep 17 00:00:00 2001 |
| From: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| To: <linux-cve-announce@vger.kernel.org> |
| Reply-to: <cve@kernel.org>, <linux-kernel@vger.kernel.org> |
| Subject: CVE-2024-57841: net: fix memory leak in tcp_conn_request() |
| |
| Description |
| =========== |
| |
| In the Linux kernel, the following vulnerability has been resolved: |
| |
| net: fix memory leak in tcp_conn_request() |
| |
| If inet_csk_reqsk_queue_hash_add() return false, tcp_conn_request() will |
| return without free the dst memory, which allocated in af_ops->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>] kmem_cache_alloc+0x60c/0xa80 |
| [<ffffffffba11b4c5>] dst_alloc+0x55/0x250 |
| [<ffffffffba227bf6>] rt_dst_alloc+0x46/0x1d0 |
| [<ffffffffba23050a>] __mkroute_output+0x29a/0xa50 |
| [<ffffffffba23456b>] ip_route_output_key_hash+0x10b/0x240 |
| [<ffffffffba2346bd>] ip_route_output_flow+0x1d/0x90 |
| [<ffffffffba254855>] inet_csk_route_req+0x2c5/0x500 |
| [<ffffffffba26b331>] tcp_conn_request+0x691/0x12c0 |
| [<ffffffffba27bd08>] tcp_rcv_state_process+0x3c8/0x11b0 |
| [<ffffffffba2965c6>] tcp_v4_do_rcv+0x156/0x3b0 |
| [<ffffffffba299c98>] tcp_v4_rcv+0x1cf8/0x1d80 |
| [<ffffffffba239656>] ip_protocol_deliver_rcu+0xf6/0x360 |
| [<ffffffffba2399a6>] ip_local_deliver_finish+0xe6/0x1e0 |
| [<ffffffffba239b8e>] ip_local_deliver+0xee/0x360 |
| [<ffffffffba239ead>] ip_rcv+0xad/0x2f0 |
| [<ffffffffba110943>] __netif_receive_skb_one_core+0x123/0x140 |
| |
| Call dst_release() to free the dst memory when |
| inet_csk_reqsk_queue_hash_add() return false in tcp_conn_request(). |
| |
| The Linux kernel CVE team has assigned CVE-2024-57841 to this issue. |
| |
| |
| Affected and fixed versions |
| =========================== |
| |
| Issue introduced in 5.15.162 with commit 527bec1f56ac7a2fceb8eb77eb0fc2678ecba394 and fixed in 5.15.176 with commit 9d38959677291552d1b0ed2689a540af279b5bf8 |
| Issue introduced in 6.1.97 with commit c14f3c3793f7a785763e353df7fc40426187f832 and fixed in 6.1.124 with commit de3f999bf8aee16e9da1c1224191abdc69e97c9d |
| Issue introduced in 6.6.37 with commit fdae4d139f4778b20a40c60705c53f5f146459b5 and fixed in 6.6.70 with commit 2af69905180b3fea12f9c1db374b153a06977021 |
| Issue introduced in 6.10 with commit ff46e3b4421923937b7f6e44ffcd3549a074f321 and fixed in 6.12.9 with commit b0b190218c78d8aeecfba36ea3a90063b3ede52d |
| Issue introduced in 6.10 with commit ff46e3b4421923937b7f6e44ffcd3549a074f321 and fixed in 6.13 with commit 4f4aa4aa28142d53f8b06585c478476cfe325cfc |
| Issue introduced in 6.9.8 with commit 360892e60710427229fc1f7bb2218cf4d578229b |
| |
| 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-2024-57841 |
| 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: |
| net/ipv4/tcp_input.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/9d38959677291552d1b0ed2689a540af279b5bf8 |
| https://git.kernel.org/stable/c/de3f999bf8aee16e9da1c1224191abdc69e97c9d |
| https://git.kernel.org/stable/c/2af69905180b3fea12f9c1db374b153a06977021 |
| https://git.kernel.org/stable/c/b0b190218c78d8aeecfba36ea3a90063b3ede52d |
| https://git.kernel.org/stable/c/4f4aa4aa28142d53f8b06585c478476cfe325cfc |