Executive Summary
Informations | |||
---|---|---|---|
Name | CVE-2024-47741 | First vendor Publication | 2024-10-21 |
Vendor | Cve | Last vendor Modification | 2024-10-23 |
Security-Database Scoring CVSS v3
Cvss vector : CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H | |||
---|---|---|---|
Overall CVSS Score | 7 | ||
Base Score | 7 | Environmental Score | 7 |
impact SubScore | 5.9 | Temporal Score | 7 |
Exploitabality Sub Score | 1 | ||
Attack Vector | Local | Attack Complexity | High |
Privileges Required | Low | User Interaction | None |
Scope | Unchanged | Confidentiality Impact | High |
Integrity Impact | High | Availability Impact | High |
Calculate full CVSS 3.0 Vectors scores |
Security-Database Scoring CVSS v2
Cvss vector : | |||
---|---|---|---|
Cvss Base Score | N/A | Attack Range | N/A |
Cvss Impact Score | N/A | Attack Complexity | N/A |
Cvss Expoit Score | N/A | Authentication | N/A |
Calculate full CVSS 2.0 Vectors scores |
Detail
In the Linux kernel, the following vulnerability has been resolved: btrfs: fix race setting file private on concurrent lseek using same fd When doing concurrent lseek(2) system calls against the same file descriptor, using multiple threads belonging to the same process, we have a short time window where a race happens and can result in a memory leak. The race happens like this: 1) A program opens a file descriptor for a file and then spawns two 2) Task A calls lseek with SEEK_DATA or SEEK_HOLE and ends up at 3) At the start of find_desired_extent(), it extracts the file's 4) Task B also calls lseek with SEEK_DATA or SEEK_HOLE, locks the inode 5) Because it saw a NULL file private, task A allocates a private 6) Task B also saw a NULL file private so it also allocates its own file At this point we leak the private structure allocated by task A. Besides the memory leak, there's also the detail that both tasks end up using the same cached state record in the private structure (struct btrfs_file_private::llseek_cached_state), which can result in a use-after-free problem since one task can free it while the other is still using it (only one task took a reference count on it). Also, sharing the cached state is not a good idea since it could result in incorrect results in the future - right now it should not be a problem because it end ups being used only in extent-io-tree.c:count_range_bits() where we do range validation before using the cached state. Fix this by protecting the private assignment and check of a file while holding the inode's spinlock and keep track of the task that allocated the private, so that it's used only by that task in order to prevent user-after-free issues with the cached state record as well as potentially using it incorrectly in the future. |
Original Source
Url : http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-47741 |
CWE : Common Weakness Enumeration
% | Id | Name |
---|---|---|
100 % | CWE-362 | Race Condition |
CPE : Common Platform Enumeration
Sources (Detail)
Alert History
Date | Informations |
---|---|
2024-11-20 03:00:23 |
|
2024-11-14 03:00:40 |
|
2024-11-09 03:00:39 |
|
2024-10-26 00:28:37 |
|
2024-10-25 21:29:31 |
|
2024-10-25 00:28:35 |
|
2024-10-24 21:27:53 |
|
2024-10-24 05:27:37 |
|
2024-10-21 21:27:31 |
|
2024-10-21 17:27:34 |
|