CVE-2024-26901 - Use of Uninitialized Resource

Severity

55%

Complexity

18%

Confidentiality

60%

In the Linux kernel, the following vulnerability has been resolved: do_sys_name_to_handle(): use kzalloc() to fix kernel-infoleak syzbot identified a kernel information leak vulnerability in do_sys_name_to_handle() and issued the following report [1]. [1] "BUG: KMSAN: kernel-infoleak in instrument_copy_to_user include/linux/instrumented.h:114 [inline] BUG: KMSAN: kernel-infoleak in _copy_to_user+0xbc/0x100 lib/usercopy.c:40 instrument_copy_to_user include/linux/instrumented.h:114 [inline] _copy_to_user+0xbc/0x100 lib/usercopy.c:40 copy_to_user include/linux/uaccess.h:191 [inline] do_sys_name_to_handle fs/fhandle.c:73 [inline] __do_sys_name_to_handle_at fs/fhandle.c:112 [inline] __se_sys_name_to_handle_at+0x949/0xb10 fs/fhandle.c:94 __x64_sys_name_to_handle_at+0xe4/0x140 fs/fhandle.c:94 ... Uninit was created at: slab_post_alloc_hook+0x129/0xa70 mm/slab.h:768 slab_alloc_node mm/slub.c:3478 [inline] __kmem_cache_alloc_node+0x5c9/0x970 mm/slub.c:3517 __do_kmalloc_node mm/slab_common.c:1006 [inline] __kmalloc+0x121/0x3c0 mm/slab_common.c:1020 kmalloc include/linux/slab.h:604 [inline] do_sys_name_to_handle fs/fhandle.c:39 [inline] __do_sys_name_to_handle_at fs/fhandle.c:112 [inline] __se_sys_name_to_handle_at+0x441/0xb10 fs/fhandle.c:94 __x64_sys_name_to_handle_at+0xe4/0x140 fs/fhandle.c:94 ... Bytes 18-19 of 20 are uninitialized Memory access of size 20 starts at ffff888128a46380 Data copied to user address 0000000020000240" Per Chuck Lever's suggestion, use kzalloc() instead of kmalloc() to solve the problem.

CVSS 3.1 Base Score 5.5. CVSS Attack Vector: local. CVSS Attack Complexity: low. CVSS Vector: (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H).

Demo Examples

Use of Uninitialized Resource

CWE-908

Here, a boolean initiailized field is consulted to ensure that initialization tasks are only completed once. However, the field is mistakenly set to true during static initialization, so the initialization code is never reached.


               
}
initialized = true;// perform initialization tasks

Use of Uninitialized Resource

CWE-908

The following code intends to limit certain operations to the administrator only.


               
}
$uid = ExtractUserID($state);
# do stuff
DoAdminThings();

If the application is unable to extract the state information - say, due to a database timeout - then the $uid variable will not be explicitly set by the programmer. This will cause $uid to be regarded as equivalent to "0" in the conditional, allowing the original user to perform administrator actions. Even if the attacker cannot directly influence the state data, unexpected errors could cause incorrect privileges to be assigned to a user just by accident.

Use of Uninitialized Resource

CWE-908

The following code intends to concatenate a string to a variable and print the string.


               
printf("%s", str);

This might seem innocent enough, but str was not initialized, so it contains random memory. As a result, str[0] might not contain the null terminator, so the copy might start at an offset other than 0. The consequences can vary, depending on the underlying memory.

If a null terminator is found before str[8], then some bytes of random garbage will be printed before the "hello world" string. The memory might contain sensitive information from previous uses, such as a password (which might occur as a result of CWE-14 or CWE-244). In this example, it might not be a big deal, but consider what could happen if large amounts of memory are printed out before the null terminator is found.

If a null terminator isn't found before str[8], then a buffer overflow could occur, since strcat will first look for the null terminator, then copy 12 bytes starting with that location. Alternately, a buffer over-read might occur (CWE-126) if a null terminator isn't found before the end of the memory segment is reached, leading to a segmentation fault and crash.

Overview

First reported 10 months ago

2024-04-17 11:15:00

Last updated 3 months ago

2024-11-21 09:03:00

Affected Software

Linux Kernel

References

https://git.kernel.org/stable/c/4bac28f441e3cc9d3f1a84c8d023228a68d8a7c1

https://git.kernel.org/stable/c/772a7def9868091da3bcb0d6c6ff9f0c03d7fa8b

https://git.kernel.org/stable/c/cde76b3af247f615447bcfecf610bb76c3529126

https://git.kernel.org/stable/c/423b6bdf19bbc5e1f7e7461045099917378f7e71

https://git.kernel.org/stable/c/e6450d5e46a737a008b4885aa223486113bf0ad6

https://git.kernel.org/stable/c/c1362eae861db28b1608b9dc23e49634fe87b63b

https://git.kernel.org/stable/c/cba138f1ef37ec6f961baeab62f312dedc7cf730

https://git.kernel.org/stable/c/bf9ec1b24ab4e94345aa1c60811dd329f069c38b

https://git.kernel.org/stable/c/3948abaa4e2be938ccdfc289385a27342fb13d43

https://git.kernel.org/stable/c/4bac28f441e3cc9d3f1a84c8d023228a68d8a7c1

Patch

https://git.kernel.org/stable/c/772a7def9868091da3bcb0d6c6ff9f0c03d7fa8b

Patch

https://git.kernel.org/stable/c/cde76b3af247f615447bcfecf610bb76c3529126

Patch

https://git.kernel.org/stable/c/423b6bdf19bbc5e1f7e7461045099917378f7e71

Patch

https://git.kernel.org/stable/c/e6450d5e46a737a008b4885aa223486113bf0ad6

Patch

https://git.kernel.org/stable/c/c1362eae861db28b1608b9dc23e49634fe87b63b

Patch

https://git.kernel.org/stable/c/cba138f1ef37ec6f961baeab62f312dedc7cf730

Patch

https://git.kernel.org/stable/c/bf9ec1b24ab4e94345aa1c60811dd329f069c38b

Patch

https://git.kernel.org/stable/c/3948abaa4e2be938ccdfc289385a27342fb13d43

Patch

https://lists.debian.org/debian-lts-announce/2024/06/msg00017.html

https://lists.debian.org/debian-lts-announce/2024/06/msg00020.html

Stay updated

ExploitPedia is constantly evolving. Sign up to receive a notification when we release additional functionality.

Get in touch

If you'd like to report a bug or have any suggestions for improvements then please do get in touch with us using this form. We will get back to you as soon as we can.