CVE-2024-39463

Severity CVSS v4.0:
Pending analysis
Type:
CWE-416 Use After Free
Publication date:
25/06/2024
Last modified:
06/01/2026

Description

In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> 9p: add missing locking around taking dentry fid list<br /> <br /> Fix a use-after-free on dentry&amp;#39;s d_fsdata fid list when a thread<br /> looks up a fid through dentry while another thread unlinks it:<br /> <br /> UAF thread:<br /> refcount_t: addition on 0; use-after-free.<br /> p9_fid_get linux/./include/net/9p/client.h:262<br /> v9fs_fid_find+0x236/0x280 linux/fs/9p/fid.c:129<br /> v9fs_fid_lookup_with_uid linux/fs/9p/fid.c:181<br /> v9fs_fid_lookup+0xbf/0xc20 linux/fs/9p/fid.c:314<br /> v9fs_vfs_getattr_dotl+0xf9/0x360 linux/fs/9p/vfs_inode_dotl.c:400<br /> vfs_statx+0xdd/0x4d0 linux/fs/stat.c:248<br /> <br /> Freed by:<br /> p9_fid_destroy (inlined)<br /> p9_client_clunk+0xb0/0xe0 linux/net/9p/client.c:1456<br /> p9_fid_put linux/./include/net/9p/client.h:278<br /> v9fs_dentry_release+0xb5/0x140 linux/fs/9p/vfs_dentry.c:55<br /> v9fs_remove+0x38f/0x620 linux/fs/9p/vfs_inode.c:518<br /> vfs_unlink+0x29a/0x810 linux/fs/namei.c:4335<br /> <br /> The problem is that d_fsdata was not accessed under d_lock, because<br /> d_release() normally is only called once the dentry is otherwise no<br /> longer accessible but since we also call it explicitly in v9fs_remove<br /> that lock is required:<br /> move the hlist out of the dentry under lock then unref its fids once<br /> they are no longer accessible.

Vulnerable products and versions

CPE From Up to
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.11 (including) 5.15.168 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.16 (including) 6.1.94 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.2 (including) 6.6.34 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.7 (including) 6.9.5 (excluding)
cpe:2.3:o:linux:linux_kernel:6.10:rc1:*:*:*:*:*:*