CVE-2026-53320: NILFS2 Input Validation Flaw Causes Kernel Warning Denial of Service
A flaw in the Linux kernel's NILFS2 filesystem allows a local user with basic privileges to trigger a warning condition that can degrade system stability. The issue occurs when a corrupted request to mark blocks as dirty is processed with an invalid block number of zero, which should never occur in normal operations. The kernel fails to validate this impossible condition upfront, leading to unexpected behavior downstream. While not a direct path to privilege escalation or data theft, repeated triggering could impact system reliability.
Source data · NVD / CISA · public domain
- CVSS
- 3.1 · 5.5 MEDIUM · CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
- Weaknesses (CWE)
- —
- Affected products
- 1 configuration(s)
- Published / Modified
- 2026-06-26 / 2026-07-06
NVD description (verbatim)
In the Linux kernel, the following vulnerability has been resolved: nilfs2: reject zero bd_oblocknr in nilfs_ioctl_mark_blocks_dirty() nilfs_ioctl_mark_blocks_dirty() uses bd_oblocknr to detect dead blocks by comparing it with the current block number bd_blocknr. If they differ, the block is considered dead and skipped. However, bd_oblocknr should never be 0 since block 0 typically stores the primary superblock and is never a valid GC target block. A corrupted ioctl request with bd_oblocknr set to 0 causes the comparison to incorrectly match when the lookup returns -ENOENT and sets bd_blocknr to 0, bypassing the dead block check and calling nilfs_bmap_mark() on a non-existent block. This causes nilfs_btree_do_lookup() to return -ENOENT, triggering the WARN_ON(ret == -ENOENT). Fix this by rejecting ioctl requests with bd_oblocknr set to 0 at the beginning of each iteration. [ryusuke: slightly modified the commit message and comments for accuracy]
8 reference(s) · View on NVD →
SEC.co analysis · AI-assisted, reviewed against source
Technical summary
CVE-2026-53320 is a validation bypass in nilfs_ioctl_mark_blocks_dirty() within the NILFS2 filesystem driver. The function uses bd_oblocknr (old block number) to detect dead or stale blocks by comparing against bd_blocknr (current block number). Block zero is reserved for the primary superblock and should never be a valid garbage collection target. A malformed ioctl request setting bd_oblocknr to zero bypasses the dead-block check: when the block lookup fails with -ENOENT and sets bd_blocknr to zero, the comparison incorrectly matches, allowing nilfs_bmap_mark() to be called on a non-existent block. This triggers nilfs_btree_do_lookup() to return -ENOENT, which hits an unguarded WARN_ON macro. The fix adds explicit validation to reject any ioctl request with bd_oblocknr set to zero before processing.
Business impact
This vulnerability poses a denial-of-service risk to systems using NILFS2 as their primary or secondary filesystem. An unprivileged local user can repeatedly trigger kernel warnings and potentially cause process hangs or system instability without gaining elevated privileges or accessing protected data. For organizations running containerized workloads, virtual machines, or multi-tenant Linux systems where NILFS2 is deployed, this creates a low-barrier avenue for malicious insiders or compromised accounts to disrupt service availability. The impact is primarily operational rather than confidentiality or integrity focused.
Affected systems
The Linux kernel is affected, specifically systems with NILFS2 filesystem support enabled. NILFS2 is a log-structured filesystem used in embedded systems, network-attached storage, and some legacy Unix deployments; it is not typically enabled by default on mainstream distributions but may be present in custom kernel builds, enterprise appliances, or legacy infrastructure. The vulnerability requires local filesystem access and valid credentials to trigger via ioctl, limiting exposure to multi-user systems or environments where untrusted users have shell access.
Exploitability
Exploitability is straightforward for local attackers with user-level privileges. The attack vector is an ioctl call with a crafted parameter structure—no special kernel knowledge, elevated privileges, or race conditions are required. An attacker simply needs to repeatedly invoke the vulnerable code path to trigger the warning condition. However, the impact is limited to denial of service; there is no immediate path to code execution or privilege escalation. The vulnerability requires the kernel to be compiled with NILFS2 support and the attacker to have local access to the filesystem.
Remediation
The fix involves adding a validation check at the entry point of nilfs_ioctl_mark_blocks_dirty() to explicitly reject ioctl requests where bd_oblocknr is set to zero. This check should occur before any block lookups or comparisons are performed, preventing the corrupted request from reaching downstream code. Organizations should apply the patched kernel version once available from their distribution or the mainline Linux project. Until patching is feasible, restricting local shell access and using SELinux or AppArmor policies to limit ioctl access can reduce risk.
Patch guidance
Monitor your Linux distribution's security advisories for updated kernel packages that include this fix. The patch is expected to be available through standard kernel update channels once it propagates to stable and long-term support branches. Test the patched kernel in a non-production environment first, particularly if your infrastructure depends on NILFS2 for critical workloads. Verify that your kernel build includes NILFS2 support by checking /boot/config or running `zgrep CONFIG_NILFS2 /proc/config.gz`; if NILFS2 is disabled or not present, this vulnerability does not affect your system.
Detection guidance
Monitor system logs for WARN_ON messages originating from nilfs_btree_do_lookup() or related NILFS2 functions. Kernel warnings are typically logged to dmesg or syslog with stack traces. On systems running NILFS2, a spike in such warnings could indicate exploitation attempts. Additionally, audit ioctl calls targeting NILFS2 filesystems using auditd rules to capture calls to nilfs_ioctl_mark_blocks_dirty(). Watch for patterns of repeated ioctl invocations with invalid parameters. Intrusion detection systems monitoring system call activity can be tuned to flag anomalous NILFS2 ioctl patterns from unprivileged processes.
Why prioritize this
Although the CVSS score is 5.5 (MEDIUM), this vulnerability merits attention in environments where NILFS2 is actively used. Its local-only attack surface and requirement for user-level access naturally contain blast radius, but the ease of triggering and complete lack of pre-exploitation barriers lower the practical difficulty for insiders or compromised accounts. Prioritization should be based on asset criticality: systems relying on NILFS2 for production data or control-plane functions should be patched promptly, while general-purpose Linux servers with NILFS2 disabled can deprioritize.
Risk score, explained
The CVSS 3.1 score of 5.5 reflects a local attack vector (AV:L), low complexity (AC:L), low privileges required (PR:L), and high availability impact (A:H). The lack of confidentiality or integrity impact moderates the score. However, this numeric score does not capture the reduced exposure in typical environments where NILFS2 is uncommon, nor does it account for the ease with which the vulnerable code can be triggered. For organizations without NILFS2 in use, the practical risk is near zero; for those using it, the risk tracks more closely with internal threat models around local privilege and insider threats.
Frequently asked questions
Does this vulnerability allow remote code execution or privilege escalation?
No. The vulnerability is limited to denial of service via kernel warnings and potential system instability. There is no code execution pathway or privilege escalation mechanism. An unprivileged user cannot use this flaw to gain root access or execute arbitrary kernel code.
How can I check if my system is vulnerable?
Verify that your kernel is built with NILFS2 support by running `grep CONFIG_NILFS2 /boot/config-$(uname -r)` or `zgrep CONFIG_NILFS2 /proc/config.gz`. If the output shows `CONFIG_NILFS2=y` or `CONFIG_NILFS2=m`, your system is potentially vulnerable if running an unpatched kernel version. Check your distribution's advisory tracker for patched kernel versions available in your release.
Can I mitigate this without patching if I use NILFS2?
Yes, several partial mitigations are available: disable NILFS2 if not needed, restrict local user access through system access controls, apply SELinux or AppArmor policies to limit ioctl privileges, and monitor system logs for WARN_ON messages indicative of exploitation. However, these are defensive measures; patching the kernel is the definitive fix.
Is NILFS2 enabled in standard Linux distributions?
No, NILFS2 is not enabled by default in mainstream distributions like Ubuntu, Fedora, or RHEL. It is typically found in embedded systems, network-attached storage appliances, and specialized Unix deployments, or in custom kernel builds. If you did not explicitly enable NILFS2, your system is not vulnerable.
This analysis is provided for informational purposes and should not be construed as legal or professional security advice. The information herein reflects publicly available vulnerability data and patch guidance as of the publication date. Organizations should verify all technical claims against official vendor advisories and conduct their own risk assessments. SEC.co and its analysts make no warranties regarding the completeness, accuracy, or fitness of this information for any particular purpose. Always consult your distribution vendor and test patches in non-production environments before deployment. Source: NVD (public-domain), retrieved 2026-08-05. Analysis generated by SEC.co (claude-haiku-4-5).
Affected vendors
Related vulnerabilities
- CVE-2025-36372MEDIUMIBM Db2 Information Disclosure in Monitoring Tables
- CVE-2025-71313MEDIUMLinux Kernel PCI Endpoint NULL Pointer Dereference
- CVE-2025-71314MEDIUMLinux Panthor GPU Driver Denial of Service via Cache Flush Timeout
- CVE-2025-71315MEDIUMLinux Kernel vkms DRM Vblank Timer Denial of Service
- CVE-2026-0268MEDIUMPrisma Access Agent Linux VPN Bypass Vulnerability
- CVE-2026-10004MEDIUMChrome UI Spoofing Vulnerability – Password Dialog Hijacking
- CVE-2026-10018MEDIUMInteger Overflow in Chrome ANGLE GPU Graphics Layer
- CVE-2026-10912MEDIUMChrome Extension Same-Origin Policy Bypass (CVSS 6.5)