CVE-2023-52487
Severity CVSS v4.0:
Pending analysis
Type:
CWE-476
NULL Pointer Dereference
Publication date:
11/03/2024
Last modified:
12/12/2024
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
net/mlx5e: Fix peer flow lists handling<br />
<br />
The cited change refactored mlx5e_tc_del_fdb_peer_flow() to only clear DUP<br />
flag when list of peer flows has become empty. However, if any concurrent<br />
user holds a reference to a peer flow (for example, the neighbor update<br />
workqueue task is updating peer flow&#39;s parent encap entry concurrently),<br />
then the flow will not be removed from the peer list and, consecutively,<br />
DUP flag will remain set. Since mlx5e_tc_del_fdb_peers_flow() calls<br />
mlx5e_tc_del_fdb_peer_flow() for every possible peer index the algorithm<br />
will try to remove the flow from eswitch instances that it has never peered<br />
with causing either NULL pointer dereference when trying to remove the flow<br />
peer list head of peer_index that was never initialized or a warning if the<br />
list debug config is enabled[0].<br />
<br />
Fix the issue by always removing the peer flow from the list even when not<br />
releasing the last reference to it.<br />
<br />
[0]:<br />
<br />
[ 3102.985806] ------------[ cut here ]------------<br />
[ 3102.986223] list_del corruption, ffff888139110698->next is NULL<br />
[ 3102.986757] WARNING: CPU: 2 PID: 22109 at lib/list_debug.c:53 __list_del_entry_valid_or_report+0x4f/0xc0<br />
[ 3102.987561] Modules linked in: act_ct nf_flow_table bonding act_tunnel_key act_mirred act_skbedit vxlan cls_matchall nfnetlink_cttimeout act_gact cls_flower sch_ingress mlx5_vdpa vringh vhost_iotlb vdpa openvswitch nsh xt_MASQUERADE nf_conntrack_netlink nfnetlink iptable_nat xt_addrtype xt_conntrack nf_nat br_netfilter rpcsec_gss_krb5 auth_rpcg<br />
ss oid_registry overlay rpcrdma rdma_ucm ib_iser libiscsi scsi_transport_iscsi ib_umad rdma_cm ib_ipoib iw_cm ib_cm mlx5_ib ib_uverbs ib_core mlx5_core [last unloaded: bonding]<br />
[ 3102.991113] CPU: 2 PID: 22109 Comm: revalidator28 Not tainted 6.6.0-rc6+ #3<br />
[ 3102.991695] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.13.0-0-gf21b5a4aeb02-prebuilt.qemu.org 04/01/2014<br />
[ 3102.992605] RIP: 0010:__list_del_entry_valid_or_report+0x4f/0xc0<br />
[ 3102.993122] Code: 39 c2 74 56 48 8b 32 48 39 fe 75 62 48 8b 51 08 48 39 f2 75 73 b8 01 00 00 00 c3 48 89 fe 48 c7 c7 48 fd 0a 82 e8 41 0b ad ff 0b 31 c0 c3 48 89 fe 48 c7 c7 70 fd 0a 82 e8 2d 0b ad ff 0f 0b<br />
[ 3102.994615] RSP: 0018:ffff8881383e7710 EFLAGS: 00010286<br />
[ 3102.995078] RAX: 0000000000000000 RBX: 0000000000000002 RCX: 0000000000000000<br />
[ 3102.995670] RDX: 0000000000000001 RSI: ffff88885f89b640 RDI: ffff88885f89b640<br />
[ 3102.997188] DEL flow 00000000be367878 on port 0<br />
[ 3102.998594] RBP: dead000000000122 R08: 0000000000000000 R09: c0000000ffffdfff<br />
[ 3102.999604] R10: 0000000000000008 R11: ffff8881383e7598 R12: dead000000000100<br />
[ 3103.000198] R13: 0000000000000002 R14: ffff888139110000 R15: ffff888101901240<br />
[ 3103.000790] FS: 00007f424cde4700(0000) GS:ffff88885f880000(0000) knlGS:0000000000000000<br />
[ 3103.001486] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033<br />
[ 3103.001986] CR2: 00007fd42e8dcb70 CR3: 000000011e68a003 CR4: 0000000000370ea0<br />
[ 3103.002596] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000<br />
[ 3103.003190] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400<br />
[ 3103.003787] Call Trace:<br />
[ 3103.004055] <br />
[ 3103.004297] ? __warn+0x7d/0x130<br />
[ 3103.004623] ? __list_del_entry_valid_or_report+0x4f/0xc0<br />
[ 3103.005094] ? report_bug+0xf1/0x1c0<br />
[ 3103.005439] ? console_unlock+0x4a/0xd0<br />
[ 3103.005806] ? handle_bug+0x3f/0x70<br />
[ 3103.006149] ? exc_invalid_op+0x13/0x60<br />
[ 3103.006531] ? asm_exc_invalid_op+0x16/0x20<br />
[ 3103.007430] ? __list_del_entry_valid_or_report+0x4f/0xc0<br />
[ 3103.007910] mlx5e_tc_del_fdb_peers_flow+0xcf/0x240 [mlx5_core]<br />
[ 3103.008463] mlx5e_tc_del_flow+0x46/0x270 [mlx5_core]<br />
[ 3103.008944] mlx5e_flow_put+0x26/0x50 [mlx5_core]<br />
[ 3103.009401] mlx5e_delete_flower+0x25f/0x380 [mlx5_core]<br />
[ 3103.009901] tc_setup_cb_destroy+0xab/0x180<br />
[ 3103.010292] fl_hw_destroy_filter+0x99/0xc0 [cls_flower]<br />
[ 3103.010779] __fl_delete+0x2d4/0x2f0 [cls_flower]<br />
[ 3103.0<br />
---truncated---
Impact
Base Score 3.x
5.50
Severity 3.x
MEDIUM
Vulnerable products and versions
CPE | From | Up to |
---|---|---|
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.5 (including) | 6.6.15 (excluding) |
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.7 (including) | 6.7.3 (excluding) |
cpe:2.3:o:linux:linux_kernel:6.8:rc1:*:*:*:*:*:* |
To consult the complete list of CPE names with products and versions, see this page
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/74cec142f89bf85c6c99c5db957da9f663f9f16f
- https://git.kernel.org/stable/c/d76fdd31f953ac5046555171620f2562715e9b71
- https://git.kernel.org/stable/c/e24d6f5a7f2d95a98a46257a5a5a5381d572894f
- https://git.kernel.org/stable/c/74cec142f89bf85c6c99c5db957da9f663f9f16f
- https://git.kernel.org/stable/c/d76fdd31f953ac5046555171620f2562715e9b71
- https://git.kernel.org/stable/c/e24d6f5a7f2d95a98a46257a5a5a5381d572894f