In the Linux kernel, the following vulnerability has been resolved: mtd: Avoid boot crash in RedBoot partition table parser Given CONFIG_FORTIFY_SOURCE=y and a recent compiler, commit 439a1bcac648 ("fortify: Use __builtin_dynamic_object_size() when available") produces the warning below and an oops. Searching for RedBoot partition table in 50000000.flash at offset 0x7e0000 ------------[ cut here ]------------ WARNING: lib/string_helpers.c:1035 at 0xc029e04c, CPU#0: swapper/0/1 memcmp: detected buffer overflow: 15 byte read of buffer size 14 Modules linked in: CPU: 0 UID: 0 PID: 1 Comm: swapper/0 Not tainted 6.19.0 #1 NONE As Kees said, "'names' is pointing to the final 'namelen' many bytes of the allocation ... 'namelen' could be basically any length at all. This fortify warning looks legit to me -- this code used to be reading beyond the end of the allocation." Since the size of the dynamic allocation is calculated with strlen() we can use strcmp() instead of memcmp() and remain within bounds.
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
| Attack Vector | LOCAL |
|---|---|
| Attack Complexity | LOW |
| Privileges Required | LOW |
| User Interaction | NONE |
| Scope | UNCHANGED |
| Confidentiality Impact | NONE |
| Integrity Impact | NONE |
| Availability Impact | HIGH |
| Source | Type | Description |
|---|---|---|
| [email protected] | Primary |
en
NVD-CWE-noinfo
|
| Vendor | Product | Version | Update | Type |
|---|---|---|---|---|
| linux | linux_kernel | * | <built-in method update of dict object at 0x702bdc371cc0> | Operating System |
| linux | linux_kernel | * | <built-in method update of dict object at 0x702bfc133480> | Operating System |
| linux | linux_kernel | * | <built-in method update of dict object at 0x702bcc126140> | Operating System |
| linux | linux_kernel | * | <built-in method update of dict object at 0x702bdc59e500> | Operating System |
| linux | linux_kernel | * | <built-in method update of dict object at 0x702bdc370080> | Operating System |
| linux | linux_kernel | * | <built-in method update of dict object at 0x702c04798780> | Operating System |
| linux | linux_kernel | * | <built-in method update of dict object at 0x702bdc344540> | Operating System |
| linux | linux_kernel | 2.6.12 | <built-in method update of dict object at 0x702bcbcf0d80> | Operating System |
| linux | linux_kernel | 2.6.12 | <built-in method update of dict object at 0x702bdd991a40> | Operating System |
| linux | linux_kernel | 2.6.12 | <built-in method update of dict object at 0x702bdc372100> | Operating System |
| linux | linux_kernel | 2.6.12 | <built-in method update of dict object at 0x702bdc345980> | Operating System |
| linux | linux_kernel | 2.6.12 | <built-in method update of dict object at 0x702bfc1313c0> | Operating System |
| linux | linux_kernel | 7.0 | <built-in method update of dict object at 0x702bdd7cca40> | Operating System |
| linux | linux_kernel | 7.0 | <built-in method update of dict object at 0x702bdc241800> | Operating System |
| linux | linux_kernel | 7.0 | <built-in method update of dict object at 0x702bdd7cf5c0> | Operating System |
| linux | linux_kernel | 7.0 | <built-in method update of dict object at 0x702bdc64e500> | Operating System |
| Vulnerable | CPE |
|---|---|
| Yes | cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* |
| Yes | cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* |
| Yes | cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* |
| Yes | cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* |
| Yes | cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* |
| Yes | cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* |
| Yes | cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* |
| Yes | cpe:2.3:o:linux:linux_kernel:2.6.12:-:*:*:*:*:*:* |
| Yes | cpe:2.3:o:linux:linux_kernel:2.6.12:rc2:*:*:*:*:*:* |
| Yes | cpe:2.3:o:linux:linux_kernel:2.6.12:rc3:*:*:*:*:*:* |
| Yes | cpe:2.3:o:linux:linux_kernel:2.6.12:rc4:*:*:*:*:*:* |
| Yes | cpe:2.3:o:linux:linux_kernel:2.6.12:rc5:*:*:*:*:*:* |
| Yes | cpe:2.3:o:linux:linux_kernel:7.0:rc1:*:*:*:*:*:* |
| Yes | cpe:2.3:o:linux:linux_kernel:7.0:rc2:*:*:*:*:*:* |
| Yes | cpe:2.3:o:linux:linux_kernel:7.0:rc3:*:*:*:*:*:* |
| Yes | cpe:2.3:o:linux:linux_kernel:7.0:rc4:*:*:*:*:*:* |