UBUNTU-CVE-2024-26586
In the Linux kernel, the following vulnerability has been resolved: mlxsw: spectrum_acl_tcam: Fix stack corruption When tc filters are first added to a net device, the corresponding local port gets bound to an ACL group in the device. The group contains a list of ACLs. In turn, each ACL points to a different TCAM region where the filters are stored. During forwarding, the ACLs are sequentially evaluated until a match is found. One reason to place filters in different regions is when they are added with decreasing priorities and in an alternating order so that two consecutive filters can never fit in the same region because of their key usage. In Spectrum-2 and newer ASICs the firmware started to report that the maximum number of ACLs in a group is more than 16, but the layout of the register that configures ACL groups (PAGT) was not updated to account for that. It is therefore possible to hit stack corruption [1] in the rare case where more than 16 ACLs in a group are required. Fix by limiting the maximum ACL group size to the minimum between what the firmware reports and the maximum ACLs that fit in the PAGT register. Add a test case to make sure the machine does not crash when this condition is hit. [1] Kernel panic - not syncing: stack-protector: Kernel stack is corrupted in: mlxsw_sp_acl_tcam_group_update+0x116/0x120 [...] dump_stack_lvl+0x36/0x50 panic+0x305/0x330 __stack_chk_fail+0x15/0x20 mlxsw_sp_acl_tcam_group_update+0x116/0x120 mlxsw_sp_acl_tcam_group_region_attach+0x69/0x110 mlxsw_sp_acl_tcam_vchunk_get+0x492/0xa20 mlxsw_sp_acl_tcam_ventry_add+0x25/0xe0 mlxsw_sp_acl_rule_add+0x47/0x240 mlxsw_sp_flower_replace+0x1a9/0x1d0 tc_setup_cb_add+0xdc/0x1c0 fl_hw_replace_filter+0x146/0x1f0 fl_change+0xc17/0x1360 tc_new_tfilter+0x472/0xb90 rtnetlink_rcv_msg+0x313/0x3b0 netlink_rcv_skb+0x58/0x100 netlink_unicast+0x244/0x390 netlink_sendmsg+0x1e4/0x440 ____sys_sendmsg+0x164/0x260 ___sys_sendmsg+0x9a/0xe0 __sys_sendmsg+0x7a/0xc0 do_syscall_64+0x40/0xe0 entry_SYSCALL_64_after_hwframe+0x63/0x6b
02 / AFFECTED SOFTWARE
Affected packages
16 explicit affected versions
3 explicit affected versions
13 explicit affected versions
26 explicit affected versions
31 explicit affected versions
37 explicit affected versions
14 explicit affected versions
38 explicit affected versions
35 explicit affected versions
9 explicit affected versions
34 explicit affected versions
11 explicit affected versions
42 explicit affected versions
8 explicit affected versions
7 explicit affected versions
16 explicit affected versions
52 explicit affected versions
4 explicit affected versions
1 explicit affected versions
1 explicit affected versions
40 explicit affected versions
10 explicit affected versions
43 explicit affected versions
46 explicit affected versions
10 explicit affected versions
7 explicit affected versions
27 explicit affected versions
39 explicit affected versions
50 explicit affected versions
8 explicit affected versions
14 explicit affected versions
81 explicit affected versions
4 explicit affected versions
70 explicit affected versions
7 explicit affected versions
1 explicit affected versions
6 explicit affected versions
12 explicit affected versions
16 explicit affected versions
6 explicit affected versions
48 explicit affected versions
34 explicit affected versions
61 explicit affected versions
45 explicit affected versions
34 explicit affected versions
7 explicit affected versions
41 explicit affected versions
7 explicit affected versions
42 explicit affected versions
88 explicit affected versions
9 explicit affected versions
35 explicit affected versions
1 explicit affected versions
13 explicit affected versions
18 explicit affected versions
3 explicit affected versions
28 explicit affected versions
90 explicit affected versions
13 explicit affected versions
4 explicit affected versions
23 explicit affected versions
21 explicit affected versions
9 explicit affected versions
16 explicit affected versions
10 explicit affected versions
45 explicit affected versions
7 explicit affected versions
12 explicit affected versions
32 explicit affected versions
12 explicit affected versions
10 explicit affected versions
7 explicit affected versions
78 explicit affected versions
12 explicit affected versions
93 explicit affected versions
101 explicit affected versions
12 explicit affected versions
89 explicit affected versions
8 explicit affected versions
10 explicit affected versions
37 explicit affected versions
9 explicit affected versions
10 explicit affected versions
21 explicit affected versions
1 explicit affected versions
31 explicit affected versions
26 explicit affected versions
13 explicit affected versions
4 explicit affected versions
29 explicit affected versions
81 explicit affected versions
13 explicit affected versions
45 explicit affected versions
77 explicit affected versions
43 explicit affected versions
93 explicit affected versions
5 explicit affected versions
33 explicit affected versions
23 explicit affected versions
10 explicit affected versions
11 explicit affected versions
12 explicit affected versions
7 explicit affected versions
12 explicit affected versions
92 explicit affected versions
34 explicit affected versions
26 explicit affected versions
42 explicit affected versions
10 explicit affected versions
26 explicit affected versions
27 explicit affected versions
1 explicit affected versions
13 explicit affected versions
51 explicit affected versions
16 explicit affected versions
45 explicit affected versions
35 explicit affected versions
3 explicit affected versions
1 explicit affected versions
2 explicit affected versions
58 explicit affected versions
51 explicit affected versions
1 explicit affected versions
12 explicit affected versions
32 explicit affected versions
27 explicit affected versions
18 explicit affected versions
1 explicit affected versions
8 explicit affected versions
6 explicit affected versions
5 explicit affected versions
8 explicit affected versions
1 explicit affected versions
10 explicit affected versions
9 explicit affected versions
81 explicit affected versions
13 explicit affected versions
45 explicit affected versions
7 explicit affected versions
37 explicit affected versions
10 explicit affected versions
11 explicit affected versions
12 explicit affected versions
80 explicit affected versions
44 explicit affected versions
03 / CONNECTIONS
Connected vulnerabilities
04 / EVIDENCE
Source records
In the Linux kernel, the following vulnerability has been resolved: mlxsw: spectrum_acl_tcam: Fix stack corruption When tc filters are first added to a net device, the corresponding local port gets bound to an ACL group in the device. The group contains a list of ACLs. In turn, each ACL points to a different TCAM region where the filters are stored. During forwarding, the ACLs are sequentially evaluated until a match is found. One reason to place filters in different regions is when they are added with decreasing priorities and in an alternating order so that two consecutive filters can never fit in the same region because of their key usage. In Spectrum-2 and newer ASICs the firmware started to report that the maximum number of ACLs in a group is more than 16, but the layout of the register that configures ACL groups (PAGT) was not updated to account for that. It is therefore possible to hit stack corruption [1] in the rare case where more than 16 ACLs in a group are required. Fix by limiting the maximum ACL group size to the minimum between what the firmware reports and the maximum ACLs that fit in the PAGT register. Add a test case to make sure the machine does not crash when this condition is hit. [1] Kernel panic - not syncing: stack-protector: Kernel stack is corrupted in: mlxsw_sp_acl_tcam_group_update+0x116/0x120 [...] dump_stack_lvl+0x36/0x50 panic+0x305/0x330 __stack_chk_fail+0x15/0x20 mlxsw_sp_acl_tcam_group_update+0x116/0x120 mlxsw_sp_acl_tcam_group_region_attach+0x69/0x110 mlxsw_sp_acl_tcam_vchunk_get+0x492/0xa20 mlxsw_sp_acl_tcam_ventry_add+0x25/0xe0 mlxsw_sp_acl_rule_add+0x47/0x240 mlxsw_sp_flower_replace+0x1a9/0x1d0 tc_setup_cb_add+0xdc/0x1c0 fl_hw_replace_filter+0x146/0x1f0 fl_change+0xc17/0x1360 tc_new_tfilter+0x472/0xb90 rtnetlink_rcv_msg+0x313/0x3b0 netlink_rcv_skb+0x58/0x100 netlink_unicast+0x244/0x390 netlink_sendmsg+0x1e4/0x440 ____sys_sendmsg+0x164/0x260 ___sys_sendmsg+0x9a/0xe0 __sys_sendmsg+0x7a/0xc0 do_syscall_64+0x40/0xe0 entry_SYSCALL_64_after_hwframe+0x63/0x6b
05 / REFERENCES
Further evidence
- https://git.kernel.org/stable/c/2f5e1565740490706332c06f36211d4ce0f88e62
- https://git.kernel.org/stable/c/348112522a35527c5bcba933b9fefb40a4f44f15
- https://git.kernel.org/stable/c/483ae90d8f976f8339cf81066312e1329f2d3706
- https://git.kernel.org/stable/c/56750ea5d15426b5f307554e7699e8b5f76c3182
- https://git.kernel.org/stable/c/a361c2c1da5dbb13ca67601cf961ab3ad68af383
- https://ubuntu.com/security/CVE-2024-26586
- https://ubuntu.com/security/notices/USN-6725-1
- https://ubuntu.com/security/notices/USN-6725-2
- https://ubuntu.com/security/notices/USN-6818-1
- https://ubuntu.com/security/notices/USN-6818-2
- https://ubuntu.com/security/notices/USN-6818-3
- https://ubuntu.com/security/notices/USN-6818-4
- https://ubuntu.com/security/notices/USN-6819-1
- https://ubuntu.com/security/notices/USN-6819-2
- https://ubuntu.com/security/notices/USN-6819-3
- https://ubuntu.com/security/notices/USN-6819-4
- https://ubuntu.com/security/notices/USN-6896-1
- https://ubuntu.com/security/notices/USN-6896-2
- https://ubuntu.com/security/notices/USN-6896-3
- https://ubuntu.com/security/notices/USN-6896-4
- https://ubuntu.com/security/notices/USN-6896-5
- https://www.cve.org/CVERecord?id=CVE-2024-26586