CVE-2026-63814
High · 7.8CVSS
7.8
EPSS
0.1%
Published
Jul 19, 2026
CISA due date
—
Cloudanix analysis
A malformed F2FS disk image or file attribute can make a vulnerable Linux system crash and may allow deeper compromise if an attacker can get the system to read it.
- Exploitation
- Local Privilege
- Attacker needs
- Low Privilege
- Complexity
- Moderate
- Impact
- Privilege Gain
- Component
- OS kernel
- Class
- Memory Corruption
- Remediation
- Patch
- Effort
- Low
- Patch risk
- Low
What it actually does
This vulnerability is an out-of-bounds read in the Linux kernel F2FS filesystem ACL parsing path. A malformed F2FS access-control-list extended attribute can encode an ACL_USER or ACL_GROUP entry in a truncated slot. During ACL conversion from on-disk format, the kernel may read the entry ID field before confirming that a full ACL entry is present. When triggered through ACL or extended-attribute access, such as getxattr-style operations, the bug can cause kernel memory corruption symptoms, kernel crashes, and potentially broader local privilege-impact depending on kernel configuration, allocator state, and exploitability conditions.
Why it matters to the business
Systems that mount or process untrusted F2FS filesystems could be destabilized by a local user or by malicious removable/media images, resulting in crashes, service interruption, and possible compromise of host integrity. The issue is not currently listed in CISA KEV, has no known mature public exploit in the provided data, and has low EPSS, but the CVSS impact is high because successful exploitation occurs in kernel context and can affect confidentiality, integrity, and availability.
How an attack unfolds
An attacker first needs local access to a vulnerable Linux system or a way to cause the system to mount or inspect a crafted F2FS filesystem. The attacker prepares an F2FS image or file metadata containing a malformed ACL extended attribute whose total length passes the existing aggregate-length validation but whose individual ACL entry is truncated. When a privileged or unprivileged process requests ACL metadata from the affected file, the kernel enters the F2FS ACL parsing path. The vulnerable code reads the ACL entry ID before verifying that enough bytes exist for a full ACL_USER or ACL_GROUP entry. This can produce an out-of-bounds read in kernel memory, leading to a kernel fault, denial of service, or potentially more severe local impact if the memory access can be shaped reliably.
How to fix it
Update the Linux kernel to a vendor-supported version that includes the F2FS ACL validation fix for f2fs_acl_from_disk(). The fix requires validating that a short ACL entry is present before reading e_tag and e_perm and validating that a full ACL entry is present before reading e_id for ACL_USER and ACL_GROUP entries. Where immediate patching is not possible, reduce exposure by preventing untrusted users from mounting F2FS filesystems, disabling automount of removable media where feasible, limiting access to loop-device mounting, and avoiding processing untrusted F2FS disk images on production systems. Apply normal kernel-hardening controls such as restricting unprivileged user namespaces and removable-media workflows, but treat these as mitigations rather than substitutes for patching.
How to confirm the fix worked
Confirm that the running kernel package includes the upstream or vendor patch for F2FS ACL entry-size validation in fs/f2fs/acl.c. Validate with the distribution vendor advisory, kernel changelog, or source diff showing truncated-entry checks in f2fs_acl_from_disk(). Inventory systems that have F2FS support enabled or mounted F2FS filesystems using commands such as findmnt -t f2fs, mount | grep f2fs, lsmod | grep f2fs, and kernel configuration checks for CONFIG_F2FS_FS. After remediation, verify that the host is booted into the updated kernel, not merely that the package is installed. In test environments, malformed F2FS ACL test cases should return a filesystem-corruption or validation error rather than producing KASAN, BUG, oops, panic, or slab-out-of-bounds reports.
Typical attack path
- Gain local code execution on a vulnerable Linux host, or provide a crafted F2FS filesystem image or removable storage device that the host will mount or inspect.
- Create or deliver F2FS metadata with a malformed ACL extended attribute containing a truncated ACL_USER or ACL_GROUP entry.
- Trigger ACL retrieval by invoking ACL or extended-attribute operations against the crafted file metadata.
- Cause the vulnerable F2FS ACL parser to read beyond the allocated ACL entry buffer.
- Leverage the resulting kernel fault for denial of service, or attempt further exploitation depending on kernel hardening and memory layout.
How to detect it
Review kernel logs and crash telemetry for signs that the F2FS ACL parser accessed memory out of bounds. Relevant sources include dmesg, journald kernel logs, /var/log/kern.log, /var/log/messages, crash dump systems such as kdump, EDR kernel-event telemetry, and hypervisor or fleet crash reporting. Look for KASAN reports, kernel oopses, panics, or BUG messages containing __f2fs_get_acl, f2fs ACL parsing, fs/f2fs/acl.c, getxattr, vfs_get_acl, do_get_acl, or path_getxattrat. Correlate these events with recent mounting of F2FS filesystems, insertion of removable media, loop-device usage, container or sandbox image processing, or forensic tooling that inspects disk images. If exploitation is suspected, collect the triggering F2FS image or device, shell history and audit logs for mount/losetup/getfattr/getfacl activity, and kernel crash artifacts before remediating. There are no reliable network indicators because exploitation is local and filesystem-mediated.
- KASAN slab-out-of-bounds in __f2fs_get_acl
- __f2fs_get_acl+0x
- fs/f2fs/acl.c:169
- Read of size 4
- The buggy address belongs to the object
- kmalloc-8 of size 8
- vfs_get_acl
- do_get_acl
- do_getxattr
- filename_getxattr
- path_getxattrat
- f2fs_acl_from_disk
- EFSCORRUPTED
- mount -t f2fs
- losetup
- getfattr
- getfacl
What your security team should do
- Prioritize patching Linux systems that mount F2FS filesystems, process mobile/removable storage, run forensic image ingestion, or allow users to mount loopback filesystems.
- Identify and restrict workflows where untrusted F2FS images or removable media are mounted automatically or by low-privileged users.
- Verify that patched kernel packages are installed and that systems have rebooted into the fixed kernel.
- Hunt kernel logs for F2FS ACL parsing crashes, KASAN slab-out-of-bounds reports, and call traces involving __f2fs_get_acl or fs/f2fs/acl.c.
- If suspicious crashes are found, preserve kernel logs, mounted image artifacts, removable-media details, and relevant filesystem images for forensic review.
- Because exploit maturity is currently listed as none and the issue is not in KEV, handle as a high-impact local kernel bug rather than an internet-scale emergency, while still patching promptly on exposed F2FS-capable systems.
The record
In the Linux kernel, the following vulnerability has been resolved: f2fs: validate ACL entry sizes in f2fs_acl_from_disk() f2fs_acl_count() only validates the aggregate ACL xattr length. A malformed ACL can still place ACL_USER or ACL_GROUP in a slot that only contains struct f2fs_acl_entry_short bytes, and f2fs_acl_from_disk() then reads entry->e_id before verifying that a full entry fits. Require a short entry before reading e_tag and e_perm, and require a full entry before reading e_id for ACL_USER and ACL_GROUP. Return -EFSCORRUPTED from these new truncated-entry checks, while keeping the pre-existing -EINVAL paths unchanged. Validation reproduced this kernel report: KASAN slab-out-of-bounds in __f2fs_get_acl+0x6fb/0x7e0 RIP: 0033:0x7f4b835ea7aa The buggy address belongs to the object at ffff888114589960 which belongs to the cache kmalloc-8 of size 8 The buggy address is located 0 bytes to the right of allocated 8-byte region [ffff888114589960, ffff888114589968) Read of size 4 Call trace: dump_stack_lvl+0x66/0xa0 (?:?) print_report+0xce/0x630 (?:?) __f2fs_get_acl+0x6fb/0x7e0 (fs/f2fs/acl.c:169) srso_alias_return_thunk+0x5/0xfbef5 (?:?) __virt_addr_valid+0x224/0x430 (?:?) kasan_report+0xe0/0x110 (?:?) __f2fs_get_acl+0x5/0x7e0 (fs/f2fs/acl.c:169) __get_acl+0x281/0x380 (?:?) vfs_get_acl+0x10b/0x190 (?:?) do_get_acl+0x2a/0x410 (?:?) do_get_acl+0x9/0x410 (?:?) do_getxattr+0xe8/0x260 (?:?) filename_getxattr+0xd1/0x140 (?:?) do_getname+0x2d/0x2d0 (?:?) path_getxattrat+0x16c/0x200 (?:?) lock_release+0xc8/0x290 (?:?) cgroup_update_frozen+0x9d/0x320 (?:?) lockdep_hardirqs_on_prepare+0xea/0x1a0 (?:?) trace_hardirqs_on+0x1a/0x170 (?:?) _raw_spin_unlock_irq+0x28/0x50 (?:?) do_syscall_64+0x115/0x6a0 (arch/x86/entry/syscall_64.c:87) entry_SYSCALL_64_after_hwframe+0x77/0x7f (?:?)
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|