CVEvulnerability
CVE-2023-52531
7.8 HIGH
Official page ↗
- Status
- Analyzed
- Published
- 2024-03-02
- Last modified
- 2026-06-17
- Assigner
- 416baaa9-dc9f-4396-8d5f-8c081fb06d67
- CVSS 3.1 ([email protected])
- 7.8 HIGH — CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
- Weaknesses
- CWE-787
Description
In the Linux kernel, the following vulnerability has been resolved:
wifi: iwlwifi: mvm: Fix a memory corruption issue
A few lines above, space is kzalloc()'ed for:
sizeof(struct iwl_nvm_data) +
sizeof(struct ieee80211_channel) +
sizeof(struct ieee80211_rate)
'mvm->nvm_data' is a 'struct iwl_nvm_data', so it is fine.
At the end of this structure, there is the 'channels' flex array.
Each element is of type 'struct ieee80211_channel'.
So only 1 element is allocated in this array.
When doing:
mvm->nvm_data->bands[0].channels = mvm->nvm_data->channels;
We point at the first element of the 'channels' flex array.
So this is fine.
However, when doing:
mvm->nvm_data->bands[0].bitrates =
(void *)((u8 *)mvm->nvm_data->channels + 1);
because of the "(u8 *)" cast, we add only 1 to the address of the beginning
of the flex array.
It is likely that we want point at the 'struct ieee80211_rate' allocated
just after.
Remove the spurious casting so that the pointer arithmetic works as
expected.
Affected configurations
• linux linux kernel (>= 3.9 < 5.15.135)
• linux linux kernel (>= 5.16 < 6.1.57)
• linux linux kernel (>= 6.2 < 6.5.7)
• linux linux kernel 6.6
Related
Weakness · CWE (1)
- CWE-787 Out-of-bounds Write weakness
References
- https://git.kernel.org/stable/c/6b3223449c959a8be94a1f042288059e40fcccb0 Patch
- https://git.kernel.org/stable/c/7c8faa31080342aec4903c9acb20caf82fcca1ef Patch
- https://git.kernel.org/stable/c/8ba438ef3cacc4808a63ed0ce24d4f0942cfe55d Patch
- https://git.kernel.org/stable/c/f06cdd8d4ba5252986f51f80cc30263636397128 Patch
- https://git.kernel.org/stable/c/6b3223449c959a8be94a1f042288059e40fcccb0 Patch
- https://git.kernel.org/stable/c/7c8faa31080342aec4903c9acb20caf82fcca1ef Patch
- https://git.kernel.org/stable/c/8ba438ef3cacc4808a63ed0ce24d4f0942cfe55d Patch
- https://git.kernel.org/stable/c/f06cdd8d4ba5252986f51f80cc30263636397128 Patch