CVE-2026-63819
High · 7.8CVSS
7.8
EPSS
0.1%
Published
Jul 19, 2026
CISA due date
—
Cloudanix analysis
A specially damaged storage image can crash vulnerable Linux systems when they try to read it.
- Exploitation
- Local Privilege
- Attacker needs
- Low Privilege
- Complexity
- Low
- Impact
- Denial Of Service
- Component
- OS kernel
- Class
- Denial of service
- Remediation
- Patch
- Effort
- Low
- Patch risk
- Low
What it actually does
This is a Linux kernel flaw in the F2FS filesystem driver. A malformed or corrupted F2FS filesystem image can contain an inconsistent inode-to-node relationship where a direct node is incorrectly accepted as if it were valid. During operations such as mount, inode eviction, or truncation, the kernel reaches f2fs_do_truncate_blocks(), calculates an invalid node address range, and hits a kernel BUG condition. The practical result is a local kernel crash/panic and denial of service. Because the failure occurs in kernel filesystem parsing logic, exploitation requires the system to process a crafted F2FS filesystem, typically by mounting it or otherwise allowing the kernel F2FS driver to inspect it.
Why it matters to the business
Systems that mount untrusted F2FS media or filesystem images can be crashed by a low-privileged local user or by an attacker who can cause a crafted F2FS image to be mounted. This can interrupt workloads, cause host reboots, disrupt embedded/mobile/storage devices that use F2FS, and create operational downtime. The vulnerability is not currently listed in CISA KEV, is not known to be used in ransomware, and has a very low EPSS score, so broad internet-scale exploitation is unlikely; however, the impact is important for multi-user Linux systems, device fleets, CI/sandbox environments, and platforms that automatically mount removable or user-supplied filesystems.
How an attack unfolds
An attacker prepares a malformed F2FS filesystem image with a corrupted inode/node chain, specifically causing a direct node footer to appear inconsistent with the expected node type. The attacker then needs the target Linux system to process that image with the vulnerable F2FS driver. This may happen if the attacker has local access and mount privileges, can influence an automated mount workflow, can provide removable media, or can submit disk images to a service that mounts or validates them. When the image is mounted or when cleanup/truncation paths run, F2FS follows the malformed node chain into f2fs_get_node_folio_ra() and related node lookup logic. Without the added sanity check, the kernel accepts the inconsistent node, reaches f2fs_do_truncate_blocks(), calculates an invalid address count/offset relationship, and triggers a BUG_ON condition. The kernel then emits an Oops/invalid opcode and may panic or crash, causing denial of service.
How to fix it
Update the Linux kernel to a vendor-supported version that includes the upstream F2FS fix titled "f2fs: fix to do sanity check on f2fs_get_node_folio_ra()". If exact fixed package versions are not available from the vulnerability record, use the relevant Linux distribution, appliance, mobile/embedded vendor, or kernel maintainer advisory to identify the patched kernel build. Where immediate patching is not possible, reduce exposure by disabling F2FS support if it is not required, blacklisting the f2fs kernel module where it is modular, preventing unprivileged users from mounting filesystems, disabling automount of removable media or disk images, and avoiding automated mounting of untrusted F2FS images in CI, malware-analysis, support, or file-processing pipelines.
How to confirm the fix worked
Confirm that systems are running a kernel build that contains the F2FS sanity-check patch. Validate through vendor package metadata, changelogs, kernel source/backport notes, or distribution advisories rather than relying only on the upstream kernel version string, because fixes are often backported. Check whether F2FS is enabled or loaded by reviewing kernel configuration and module state, such as CONFIG_F2FS_FS, loaded f2fs modules, and active F2FS mounts. After patching, reboot into the updated kernel and verify that the previous vulnerable kernel is not still in use. In a controlled non-production lab, a known malformed F2FS test image should be rejected or fail safely without producing a kernel BUG or panic.
Typical attack path
- Create or obtain a malformed F2FS filesystem image containing a corrupted inode and inconsistent direct node footer.
- Deliver the image to a Linux system that has vulnerable F2FS support enabled.
- Cause the image to be mounted or inspected by the kernel F2FS driver, either directly through local mount access or indirectly through an automated workflow.
- Trigger filesystem paths such as mount, inode eviction, or file truncation that call f2fs_get_dnode_of_data() and f2fs_do_truncate_blocks().
- The vulnerable kernel fails to reject the inconsistent node chain and hits a kernel BUG condition.
- The system logs an Oops/invalid opcode and may panic or reboot, resulting in denial of service.
How to detect it
To determine whether this was already exploited or triggered, review kernel logs, persistent journals, crash dumps, and system reboot records for F2FS-related kernel BUG/Oops events. Relevant sources include dmesg output, /var/log/kern.log, /var/log/messages, systemd-journald kernel entries, kdump/vmcore repositories, crash reporting systems, hypervisor reset logs, and EDR telemetry that captures kernel panics or unexpected reboots. Look for crashes occurring immediately after mount activity, loop-device attachment, removable-media insertion, CI disk-image processing, or filesystem validation jobs. Correlate events with audit logs or shell history showing mount, losetup, udisks, systemd-mount, or container runtime activity involving F2FS images. Because this vulnerability does not create a stable user-space artifact, detection is primarily based on kernel crash signatures and suspicious mounting of untrusted F2FS filesystems.
- kernel BUG at fs/f2fs/file.c:845
- f2fs_do_truncate_blocks
- f2fs_truncate_blocks
- f2fs_truncate
- f2fs_evict_inode
- f2fs_fill_super
- f2fs_get_node_folio_ra
- f2fs_get_dnode_of_data
- f2fs_sanity_check_node_footer
- Oops: invalid opcode
- Comm: syz
- ADDRS_PER_PAGE(dn.node_folio, inode)
- f2fs_bug_on
What your security team should do
- Prioritize patching Linux systems that allow local users, containers, build jobs, test harnesses, or automation to mount or inspect filesystem images.
- Inventory systems with F2FS enabled, loaded, or actively mounted, especially embedded, mobile, storage, and removable-media handling environments.
- Disable or restrict F2FS support on systems that do not require it.
- Disable automount behavior for removable media and untrusted disk images until patched.
- Restrict mount capabilities to trusted administrators and review container/sandbox configurations that expose mount operations or loop devices.
- Monitor kernel logs for F2FS-related Oops, BUG, panic, or invalid opcode messages that may indicate attempted exploitation or fuzzing activity.
- Ensure crash collection, kernel panic handling, and service restart procedures are in place for systems where immediate kernel updates are delayed.
The record
In the Linux kernel, the following vulnerability has been resolved: f2fs: fix to do sanity check on f2fs_get_node_folio_ra() kernel BUG at fs/f2fs/file.c:845! Oops: invalid opcode: 0000 [#1] SMP KASAN NOPTI CPU: 0 UID: 0 PID: 5336 Comm: syz.0.0 Not tainted syzkaller #0 PREEMPT(full) Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 RIP: 0010:f2fs_do_truncate_blocks+0x1115/0x1140 fs/f2fs/file.c:845 Code: fc fc 90 0f 0b e8 8b 9d 9a fd 90 0f 0b e8 83 9d 9a fd 48 89 df 48 c7 c6 60 d1 1a 8c e8 54 f1 fc fc 90 0f 0b e8 6c 9d 9a fd 90 <0f> 0b e8 64 9d 9a fd 90 0f 0b 90 e9 93 fd ff ff e8 56 9d 9a fd 90 RSP: 0018:ffffc9000e4474c0 EFLAGS: 00010283 RAX: ffffffff842b1d34 RBX: 0000000000000003 RCX: 0000000000100000 RDX: ffffc9000f03a000 RSI: 0000000000035503 RDI: 0000000000035504 RBP: ffffc9000e447608 R08: ffff8880123b0000 R09: 0000000000000002 R10: 00000000fffffffe R11: 0000000000000002 R12: 0000000000000001 R13: 0000000000000000 R14: 1ffff92001c88ea0 R15: 00000000ffff039c FS: 00007f7e02ee36c0(0000) GS:ffff88808c887000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 00007ff0305c4000 CR3: 0000000012d4c000 CR4: 0000000000352ef0 Call Trace: <TASK> f2fs_truncate_blocks+0x10a/0x300 fs/f2fs/file.c:882 f2fs_truncate+0x471/0x7c0 fs/f2fs/file.c:940 f2fs_evict_inode+0xa3f/0x1ac0 fs/f2fs/inode.c:907 evict+0x61e/0xb10 fs/inode.c:841 f2fs_fill_super+0x5f43/0x78f0 fs/f2fs/super.c:5224 get_tree_bdev_flags+0x431/0x4f0 fs/super.c:1694 vfs_get_tree+0x92/0x2a0 fs/super.c:1754 fc_mount fs/namespace.c:1193 [inline] do_new_mount_fc fs/namespace.c:3758 [inline] do_new_mount+0x341/0xd30 fs/namespace.c:3834 do_mount fs/namespace.c:4167 [inline] __do_sys_mount fs/namespace.c:4383 [inline] __se_sys_mount+0x31d/0x420 fs/namespace.c:4360 do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline] do_syscall_64+0x15f/0xf80 arch/x86/entry/syscall_64.c:94 entry_SYSCALL_64_after_hwframe+0x77/0x7f count = ADDRS_PER_PAGE(dn.node_folio, inode); count -= dn.ofs_in_node; f2fs_bug_on(sbi, count < 0); The fuzz test will trigger above bug_on in f2fs. The root cause should be: in the corrupted inode, there is a direct node which has the same ino and nid in its footer, so in f2fs_do_truncate_blocks(), after f2fs_get_dnode_of_data() finds such dnode: 1) ADDRS_PER_PAGE(dn.node_folio, inode) will return 923 2) once dn.ofs_in_node points to addr[923, 1017] Then it will trigger the system panic. Let's introduce NODE_TYPE_NON_IXNODE to indicate current node should not be an inode or xattr node, and then use it in below path to detect inconsistent node chain in inode mapping table: - f2fs_do_truncate_blocks - f2fs_get_dnode_of_data - f2fs_get_node_folio_ra - __get_node_folio - f2fs_sanity_check_node_footer - case NODE_TYPE_NON_IXNODE -> check whether it is inode|xnode
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|