CVE-2021-47004·Kernel vulnerability
In the Linux kernel, the following vulnerability has been resolved: f2fs: fix to avoid touching checkpointed data in get_victim() In CP disabling mode, there are two issues when using LFS or SSR | AT_SSR mode to select victim: 1. LFS is set to find source section during GC, the victim should have no checkpointed data, since after GC, section could not be set free for reuse. Previously, we only check valid chpt blocks in current segment rather than section, fix it. 2. SSR | AT_SSR are set to find target segment for writes which can be fully filled by checkpointed and newly written blocks, we should never select such segment, otherwise it can cause panic or data corruption during allocation, potential case is described as below: a) target segment has 'n' (n < 512) ckpt valid blocks b) GC migrates 'n' valid blocks to other segment (segment is still in dirty list) c) GC migrates '512 - n' blocks to target segment (segment has 'n' cp_vblocks and '512 - n' vblocks) d) If GC selects target segment via {AT,}SSR allocator, however there is no free space in targe segment.
- Severity
- high
- Software
- Kernel
- Fixed in
- 5.12.5
- Published
- 2024-02-28
Affected versions
From: 5.12
Until: 5.12.5
Fixed in: 5.12.5
How to fix this CVE
Update your Linux kernel to version 5.12.5 or later to resolve a critical garbage collection issue that could cause data corruption when CP (checkpoint) disabling mode is enabled with LFS or SSR allocation strategies. The vulnerability stems from improper victim segment selection during garbage collection, which can lead to allocation failures or filesystem corruption. Apply this kernel update immediately through your distribution's package manager.
sudo dnf update kernel kernel-develDefensia detects this vulnerability
How to check if you are affected
- Check your current kernel version: uname -r
- Verify if F2FS filesystem is in use: mount | grep f2fs or cat /proc/filesystems | grep f2fs
- Check if CP disabling mode is enabled: cat /sys/fs/f2fs/*/cp_disable (returns 1 if enabled)
- Inspect kernel logs for GC-related errors: dmesg | grep -i 'garbage collection\|allocation failed\|panic'
- After patching, reboot and confirm new kernel version: uname -r (should be 5.12.5 or higher)
FAQ
What is CVE-2021-47004?
CVE-2021-47004 is a vulnerability in the Linux F2FS filesystem's garbage collection routine that fails to properly validate victim segment selection when checkpoint disabling mode is active. This can cause the GC allocator to select segments containing checkpoint data, leading to allocation failures, kernel panics, or data corruption.
Is CVE-2021-47004 being actively exploited?
No, this CVE is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog and no public exploits are available. However, it poses a serious risk to systems using F2FS with CP disabling mode enabled in production.
What versions of Kernel are affected by CVE-2021-47004?
Linux kernel versions 5.12 through 5.12.4 are affected. The vulnerability was fixed in kernel 5.12.5 and all subsequent releases.
How do I check if my server is vulnerable to CVE-2021-47004?
Run 'uname -r' to check your kernel version; if it shows 5.12.0 to 5.12.4, you are vulnerable. Additionally, run 'mount | grep f2fs' to confirm F2FS is in use, and 'cat /sys/fs/f2fs/*/cp_disable' to check if checkpoint disabling is enabled.
Does Defensia detect CVE-2021-47004?
Yes — Defensia's CVE advisory scanner compares installed kernel package versions against the NVD database. If a Linux kernel in the vulnerable range is detected on a monitored server, CVE-2021-47004 will appear in your dashboard with distribution-specific remediation steps and priority alerts.
Related Kernel CVEs
References
- https://git.kernel.org/stable/c/105155a8146ddb54c119d8318964eef3859d109d
- https://git.kernel.org/stable/c/1e116f87825f01a6380286472196882746b16f63
- https://git.kernel.org/stable/c/211372b2571520e394b56b431a0705586013b3ff
- https://git.kernel.org/stable/c/61461fc921b756ae16e64243f72af2bfc2e620db
- https://git.kernel.org/stable/c/105155a8146ddb54c119d8318964eef3859d109d
Track CVEs across your fleet automatically
Defensia scans your Linux servers and tells you exactly which ones are running vulnerable versions — including CVE-2021-47004. Free for 1 server.
Get started free