Linux Kernel
CVE-2021-47254
HIGH
Severity by source
AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Primary rating from NVD · only source for this CVE.
CVSS VectorNVD
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Lifecycle Timeline
3DescriptionCVE.org
In the Linux kernel, the following vulnerability has been resolved:
gfs2: Fix use-after-free in gfs2_glock_shrink_scan
The GLF_LRU flag is checked under lru_lock in gfs2_glock_remove_from_lru() to remove the glock from the lru list in __gfs2_glock_put().
On the shrink scan path, the same flag is cleared under lru_lock but because of cond_resched_lock(&lru_lock) in gfs2_dispose_glock_lru(), progress on the put side can be made without deleting the glock from the lru list.
Keep GLF_LRU across the race window opened by cond_resched_lock(&lru_lock) to ensure correct behavior on both sides - clear GLF_LRU after list_del under lru_lock.
AnalysisAI
A use-after-free vulnerability exists in the GFS2 filesystem implementation of the Linux kernel, specifically in the gfs2_glock_shrink_scan function. The vulnerability affects multiple Linux kernel versions ranging from 4.4 through 5.13-rc2, allowing local attackers with low privileges to potentially achieve arbitrary code execution, information disclosure, or system crashes. With an EPSS score of only 0.02%, this vulnerability has a very low probability of real-world exploitation despite its high CVSS score of 7.8.
Technical ContextAI
The vulnerability occurs in the Global File System 2 (GFS2) distributed filesystem implementation, specifically in the glock (global lock) management subsystem. The issue stems from improper synchronization when handling the GLF_LRU flag during concurrent operations between gfs2_glock_remove_from_lru() and gfs2_dispose_glock_lru(). The cond_resched_lock() call creates a race window where the glock can be freed while still being referenced on the LRU list. This is classified as CWE-416 (Use After Free), a memory corruption vulnerability class where memory is accessed after being deallocated. Based on the CPE data, the vulnerability affects Linux kernel versions 4.4.x through 4.19.x, 5.4.x through 5.12.x, and 5.13 release candidates 1 and 2.
RemediationAI
Update the Linux kernel to a patched version that includes the fix commits referenced in the advisory. For kernel 5.13, apply commit 1ab19c5de4c537ec0d9b21020395a5b5a6c059b2 or later. For stable branches, apply the appropriate backported fixes: 5.12.x (38ce329534500bf4ae71f81df6a37a406cf187b4), 5.10.x (e87ef30fe73e7e10d2c85bdcc778dcec24dca553), 5.4.x (a61156314b66456ab6a291ed5deba1ebd002ab3c), 4.19.x (86fd5b27db743a0ce0cc245e3a34813b2aa6ec1d), 4.14.x (92869945cc5b78ee8a1ef90336fe070893e3458a), 4.9.x (094bf5670e762afa243d2c41a5c4ab71c7447bf4), and 4.4.x (0364742decb0f02bc183404868b82896f7992595). If immediate patching is not possible, consider disabling or unloading the GFS2 module if not required for production operations.
More in Linux Kernel
View allLinux kernel contains a flaw known as 'Dirty Pipe' where improper pipe buffer flag initialization allows unprivileged lo
The overlayfs implementation in the linux (aka Linux kernel) package before 3.19.0-21.21 in Ubuntu through 15.04 does no
The packet_set_ring function in net/packet/af_packet.c in the Linux kernel through 4.10.6 does not properly validate cer
The check_alu_op function in kernel/bpf/verifier.c in the Linux kernel through 4.4 allows local users to cause a denial
Linux kernel: Exploitable memory corruption due to UFO to non-UFO path switch. Rated high severity (CVSS 7.0). Public ex
The ovl_setattr function in fs/overlayfs/inode.c in the Linux kernel through 4.3.3 attempts to merge distinct setattr op
The mem_write function in the Linux kernel before 3.2.2, when ASLR is disabled, does not properly check permissions when
The compat_sys_recvmmsg function in net/compat.c in the Linux kernel before 3.13.2, when CONFIG_X86_X32 is enabled, allo
Race condition in net/packet/af_packet.c in the Linux kernel through 4.8.12 allows local users to gain privileges or cau
The join_session_keyring function in security/keys/process_keys.c in the Linux kernel before 4.4.1 mishandles object ref
A remote code execution vulnerability in the Broadcom Wi-Fi firmware could enable a remote attacker to execute arbitrary
It was discovered that the cls_route filter implementation in the Linux kernel would not remove an old filter from the h
Same weakness CWE-416 – Use After Free
View allSame technique Use After Free
View allShare
External POC / Exploit Code
Leaving vuln.today