CVE-2026-63817 Overview
CVE-2026-63817 is a Linux kernel vulnerability in the Flash-Friendly File System (f2fs) subsystem. The flaw allows a corrupted directory entry to instantiate a fake internal inode when the compress_cache mount option is disabled. The macro F2FS_COMPRESS_INO() uses NM_I(sbi)->max_nid as a synthetic inode number, which sits outside the valid inode range when compression caching is off. The is_meta_ino() check unconditionally treats this value as a meta inode, so f2fs_iget() bypasses do_read_inode() and its nid range validation. Attackers with local access can leverage a crafted or corrupted f2fs image to trigger memory corruption conditions.
Critical Impact
Local attackers can exploit improper inode validation in f2fs to achieve high-impact compromise of confidentiality, integrity, and availability on affected Linux kernels.
Affected Products
- Linux kernel builds containing the f2fs F2FS_COMPRESS_INO() code path
- Systems mounting f2fs volumes with compress_cache disabled
- Distributions shipping vulnerable stable kernel branches prior to the referenced fix commits
Discovery Timeline
- 2026-07-19 - CVE-2026-63817 published to NVD
- 2026-07-24 - Last updated in NVD database
Technical Details for CVE-2026-63817
Vulnerability Analysis
The defect resides in the f2fs inode lookup logic. F2FS_COMPRESS_INO() returns NM_I(sbi)->max_nid as a synthetic inode number reserved for the compressed page cache inode. This inode only exists when the filesystem is mounted with the compress_cache option enabled. When that option is disabled, max_nid falls outside the valid inode number range.
The helper is_meta_ino() fails to gate this synthetic value on the COMPRESS_CACHE feature. As a result, f2fs_iget() short-circuits inode initialization by skipping do_read_inode() and the associated f2fs_check_nid_range() validation. A crafted directory entry pointing to ino == max_nid instantiates a fake internal inode rather than being rejected as out-of-range.
Root Cause
The root cause is missing conditional validation in is_meta_ino(). The function classifies the compress cache inode as a meta inode unconditionally, without checking whether the compress_cache mount option is active. This creates a divergence between the runtime state of the filesystem and the inode validation path.
Attack Vector
Exploitation requires local access and low privileges. An attacker with the ability to mount a crafted f2fs image, or with access to a corrupted on-disk structure, can create a directory entry referencing max_nid. When the kernel traverses this entry on a filesystem without compress_cache enabled, it produces a fake inode that bypasses standard sanity checks. This can lead to kernel memory corruption, privilege escalation, or denial of service. Refer to the Linux Kernel Commit fcc051d3 for the corrective code path.
Detection Methods for CVE-2026-63817
Indicators of Compromise
- Unexpected kernel oops or panic messages referencing f2fs_iget, do_read_inode, or f2fs_check_nid_range
- f2fs filesystem mount events involving untrusted or removable media on hosts without compress_cache enabled
- Directory entries containing inode numbers equal to the filesystem's max_nid value
Detection Strategies
- Audit kernel logs (dmesg, journalctl -k) for f2fs subsystem warnings and inode range violations
- Inventory Linux hosts running kernels predating the fix commits referenced by upstream stable trees
- Monitor mount syscalls for f2fs volumes originating from non-trusted sources or user-mountable devices
Monitoring Recommendations
- Enable auditd rules covering mount and umount operations for filesystem-type f2fs
- Correlate kernel exception traces with recent block device attach events
- Track loadable module and kernel version drift against the patched stable branches
How to Mitigate CVE-2026-63817
Immediate Actions Required
- Apply the upstream f2fs fix that gates the compressed cache inode case on the COMPRESS_CACHE feature
- Update to a stable Linux kernel that incorporates the referenced commits from kernel.org
- Restrict the ability of unprivileged users to mount untrusted f2fs images or removable media
Patch Information
Upstream fixes are available through multiple stable kernel branches. Relevant commits include Linux Kernel Commit fcc051d3, Linux Kernel Commit 0969926d, Linux Kernel Commit 13e4b59d, Linux Kernel Commit 16161444c, Linux Kernel Commit 29115b8c, Linux Kernel Commit 5073c66a, and Linux Kernel Commit 77f216ff. Deploy the vendor kernel package that includes these fixes for your distribution.
Workarounds
- Disable auto-mount for removable block devices on multi-user systems
- Use udev and polkit rules to prevent unprivileged users from mounting arbitrary f2fs images
- Where feasible, avoid f2fs on hosts exposed to untrusted removable storage until patches are deployed
# Verify running kernel version and f2fs module status
uname -r
modinfo f2fs | grep -E 'version|filename'
# Restrict unprivileged mounts via polkit (example)
# /etc/polkit-1/rules.d/10-disable-udisks2.rules
# polkit.addRule(function(action, subject) {
# if (action.id == "org.freedesktop.udisks2.filesystem-mount" &&
# subject.isInGroup("users")) {
# return polkit.Result.NO;
# }
# });
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

