CVE-2025-21722: Vulnerability in Linux Linux
In the Linux kernel, the following vulnerability has been resolved: nilfs2: do not force clear folio if buffer is referenced Patch series "nilfs2: protect busy buffer heads from being force-cleared". This series fixes the buffer head state inconsistency issues reported by syzbot that occurs when the filesystem is corrupted and falls back to read-only, and the associated buffer head use-after-free issue. This patch (of 2): Syzbot has reported that after nilfs2 detects filesystem corruption and falls back to read-only, inconsistencies in the buffer state may occur. One of the inconsistencies is that when nilfs2 calls mark_buffer_dirty() to set a data or metadata buffer as dirty, but it detects that the buffer is not in the uptodate state: WARNING: CPU: 0 PID: 6049 at fs/buffer.c:1177 mark_buffer_dirty+0x2e5/0x520 fs/buffer.c:1177 ... Call Trace: <TASK> nilfs_palloc_commit_alloc_entry+0x4b/0x160 fs/nilfs2/alloc.c:598 nilfs_ifile_create_inode+0x1dd/0x3a0 fs/nilfs2/ifile.c:73 nilfs_new_inode+0x254/0x830 fs/nilfs2/inode.c:344 nilfs_mkdir+0x10d/0x340 fs/nilfs2/namei.c:218 vfs_mkdir+0x2f9/0x4f0 fs/namei.c:4257 do_mkdirat+0x264/0x3a0 fs/namei.c:4280 __do_sys_mkdirat fs/namei.c:4295 [inline] __se_sys_mkdirat fs/namei.c:4293 [inline] __x64_sys_mkdirat+0x87/0xa0 fs/namei.c:4293 do_syscall_x64 arch/x86/entry/common.c:52 [inline] do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83 entry_SYSCALL_64_after_hwframe+0x77/0x7f The other is when nilfs_btree_propagate(), which propagates the dirty state to the ancestor nodes of a b-tree that point to a dirty buffer, detects that the origin buffer is not dirty, even though it should be: WARNING: CPU: 0 PID: 5245 at fs/nilfs2/btree.c:2089 nilfs_btree_propagate+0xc79/0xdf0 fs/nilfs2/btree.c:2089 ... Call Trace: <TASK> nilfs_bmap_propagate+0x75/0x120 fs/nilfs2/bmap.c:345 nilfs_collect_file_data+0x4d/0xd0 fs/nilfs2/segment.c:587 nilfs_segctor_apply_buffers+0x184/0x340 fs/nilfs2/segment.c:1006 nilfs_segctor_scan_file+0x28c/0xa50 fs/nilfs2/segment.c:1045 nilfs_segctor_collect_blocks fs/nilfs2/segment.c:1216 [inline] nilfs_segctor_collect fs/nilfs2/segment.c:1540 [inline] nilfs_segctor_do_construct+0x1c28/0x6b90 fs/nilfs2/segment.c:2115 nilfs_segctor_construct+0x181/0x6b0 fs/nilfs2/segment.c:2479 nilfs_segctor_thread_construct fs/nilfs2/segment.c:2587 [inline] nilfs_segctor_thread+0x69e/0xe80 fs/nilfs2/segment.c:2701 kthread+0x2f0/0x390 kernel/kthread.c:389 ret_from_fork+0x4b/0x80 arch/x86/kernel/process.c:147 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244 </TASK> Both of these issues are caused by the callbacks that handle the page/folio write requests, forcibly clear various states, including the working state of the buffers they hold, at unexpected times when they detect read-only fallback. Fix these issues by checking if the buffer is referenced before clearing the page/folio state, and skipping the clear if it is.
AI Analysis
Technical Summary
CVE-2025-21722 is a high-severity vulnerability affecting the Linux kernel's NILFS2 (New Implementation of a Log-structured File System version 2) filesystem implementation. The issue arises from improper handling of buffer head states when the filesystem detects corruption and falls back to read-only mode. Specifically, the vulnerability involves forcibly clearing folio (page cache) states even when buffer heads are still referenced, leading to state inconsistencies and use-after-free conditions. Two main problematic scenarios are described: first, when NILFS2 calls mark_buffer_dirty() on a buffer not in an up-to-date state, triggering kernel warnings and potential instability; second, during the propagation of dirty states in the NILFS2 b-tree structure, where buffers expected to be dirty are incorrectly identified as clean, causing further inconsistencies. These problems stem from callbacks that handle page/folio write requests forcibly clearing buffer states at inappropriate times, particularly when the filesystem switches to read-only mode due to corruption. The patch resolves the issue by adding checks to ensure buffers are not referenced before clearing their states, preventing use-after-free and buffer state corruption. The vulnerability is classified under CWE-416 (Use After Free) and has a CVSS 3.1 score of 7.8, indicating high severity. Exploitation requires local privileges with low complexity and no user interaction, and it impacts confidentiality, integrity, and availability of the system. Although no known exploits are reported in the wild, the vulnerability could lead to system crashes, data corruption, or privilege escalation if exploited.
Potential Impact
For European organizations, this vulnerability poses significant risks, especially those relying on Linux servers using the NILFS2 filesystem, which is often employed in environments requiring high data integrity and continuous data logging. Exploitation could lead to system instability, data corruption, or denial of service, impacting critical infrastructure, enterprise servers, and cloud environments. Confidentiality and integrity of data stored on affected filesystems could be compromised, potentially exposing sensitive information or causing loss of critical business data. The requirement for local privileges means that attackers who gain initial access (e.g., via phishing or other means) could escalate their privileges or disrupt services. This is particularly concerning for sectors like finance, healthcare, and government agencies in Europe, where data integrity and availability are paramount. Additionally, the vulnerability could affect embedded Linux devices used in industrial control systems, increasing the risk of operational disruptions.
Mitigation Recommendations
European organizations should prioritize patching Linux kernels to versions that include the fix for CVE-2025-21722. Since the vulnerability is in the NILFS2 filesystem code, organizations should audit their systems to identify any use of NILFS2 and consider migrating critical data to more widely used and actively maintained filesystems if NILFS2 is not essential. Implement strict access controls to limit local user privileges and reduce the risk of exploitation by unprivileged users. Employ kernel hardening techniques such as SELinux or AppArmor to restrict filesystem operations and monitor kernel logs for warnings related to buffer state inconsistencies. Regularly back up data stored on NILFS2 filesystems to mitigate data loss risks. For environments where patching is delayed, consider isolating affected systems or running them with reduced privileges and monitoring for anomalous behavior. Finally, incorporate this vulnerability into incident response plans to quickly detect and respond to potential exploitation attempts.
Affected Countries
Germany, France, United Kingdom, Netherlands, Sweden, Finland, Italy, Spain
CVE-2025-21722: Vulnerability in Linux Linux
Description
In the Linux kernel, the following vulnerability has been resolved: nilfs2: do not force clear folio if buffer is referenced Patch series "nilfs2: protect busy buffer heads from being force-cleared". This series fixes the buffer head state inconsistency issues reported by syzbot that occurs when the filesystem is corrupted and falls back to read-only, and the associated buffer head use-after-free issue. This patch (of 2): Syzbot has reported that after nilfs2 detects filesystem corruption and falls back to read-only, inconsistencies in the buffer state may occur. One of the inconsistencies is that when nilfs2 calls mark_buffer_dirty() to set a data or metadata buffer as dirty, but it detects that the buffer is not in the uptodate state: WARNING: CPU: 0 PID: 6049 at fs/buffer.c:1177 mark_buffer_dirty+0x2e5/0x520 fs/buffer.c:1177 ... Call Trace: <TASK> nilfs_palloc_commit_alloc_entry+0x4b/0x160 fs/nilfs2/alloc.c:598 nilfs_ifile_create_inode+0x1dd/0x3a0 fs/nilfs2/ifile.c:73 nilfs_new_inode+0x254/0x830 fs/nilfs2/inode.c:344 nilfs_mkdir+0x10d/0x340 fs/nilfs2/namei.c:218 vfs_mkdir+0x2f9/0x4f0 fs/namei.c:4257 do_mkdirat+0x264/0x3a0 fs/namei.c:4280 __do_sys_mkdirat fs/namei.c:4295 [inline] __se_sys_mkdirat fs/namei.c:4293 [inline] __x64_sys_mkdirat+0x87/0xa0 fs/namei.c:4293 do_syscall_x64 arch/x86/entry/common.c:52 [inline] do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83 entry_SYSCALL_64_after_hwframe+0x77/0x7f The other is when nilfs_btree_propagate(), which propagates the dirty state to the ancestor nodes of a b-tree that point to a dirty buffer, detects that the origin buffer is not dirty, even though it should be: WARNING: CPU: 0 PID: 5245 at fs/nilfs2/btree.c:2089 nilfs_btree_propagate+0xc79/0xdf0 fs/nilfs2/btree.c:2089 ... Call Trace: <TASK> nilfs_bmap_propagate+0x75/0x120 fs/nilfs2/bmap.c:345 nilfs_collect_file_data+0x4d/0xd0 fs/nilfs2/segment.c:587 nilfs_segctor_apply_buffers+0x184/0x340 fs/nilfs2/segment.c:1006 nilfs_segctor_scan_file+0x28c/0xa50 fs/nilfs2/segment.c:1045 nilfs_segctor_collect_blocks fs/nilfs2/segment.c:1216 [inline] nilfs_segctor_collect fs/nilfs2/segment.c:1540 [inline] nilfs_segctor_do_construct+0x1c28/0x6b90 fs/nilfs2/segment.c:2115 nilfs_segctor_construct+0x181/0x6b0 fs/nilfs2/segment.c:2479 nilfs_segctor_thread_construct fs/nilfs2/segment.c:2587 [inline] nilfs_segctor_thread+0x69e/0xe80 fs/nilfs2/segment.c:2701 kthread+0x2f0/0x390 kernel/kthread.c:389 ret_from_fork+0x4b/0x80 arch/x86/kernel/process.c:147 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244 </TASK> Both of these issues are caused by the callbacks that handle the page/folio write requests, forcibly clear various states, including the working state of the buffers they hold, at unexpected times when they detect read-only fallback. Fix these issues by checking if the buffer is referenced before clearing the page/folio state, and skipping the clear if it is.
AI-Powered Analysis
Technical Analysis
CVE-2025-21722 is a high-severity vulnerability affecting the Linux kernel's NILFS2 (New Implementation of a Log-structured File System version 2) filesystem implementation. The issue arises from improper handling of buffer head states when the filesystem detects corruption and falls back to read-only mode. Specifically, the vulnerability involves forcibly clearing folio (page cache) states even when buffer heads are still referenced, leading to state inconsistencies and use-after-free conditions. Two main problematic scenarios are described: first, when NILFS2 calls mark_buffer_dirty() on a buffer not in an up-to-date state, triggering kernel warnings and potential instability; second, during the propagation of dirty states in the NILFS2 b-tree structure, where buffers expected to be dirty are incorrectly identified as clean, causing further inconsistencies. These problems stem from callbacks that handle page/folio write requests forcibly clearing buffer states at inappropriate times, particularly when the filesystem switches to read-only mode due to corruption. The patch resolves the issue by adding checks to ensure buffers are not referenced before clearing their states, preventing use-after-free and buffer state corruption. The vulnerability is classified under CWE-416 (Use After Free) and has a CVSS 3.1 score of 7.8, indicating high severity. Exploitation requires local privileges with low complexity and no user interaction, and it impacts confidentiality, integrity, and availability of the system. Although no known exploits are reported in the wild, the vulnerability could lead to system crashes, data corruption, or privilege escalation if exploited.
Potential Impact
For European organizations, this vulnerability poses significant risks, especially those relying on Linux servers using the NILFS2 filesystem, which is often employed in environments requiring high data integrity and continuous data logging. Exploitation could lead to system instability, data corruption, or denial of service, impacting critical infrastructure, enterprise servers, and cloud environments. Confidentiality and integrity of data stored on affected filesystems could be compromised, potentially exposing sensitive information or causing loss of critical business data. The requirement for local privileges means that attackers who gain initial access (e.g., via phishing or other means) could escalate their privileges or disrupt services. This is particularly concerning for sectors like finance, healthcare, and government agencies in Europe, where data integrity and availability are paramount. Additionally, the vulnerability could affect embedded Linux devices used in industrial control systems, increasing the risk of operational disruptions.
Mitigation Recommendations
European organizations should prioritize patching Linux kernels to versions that include the fix for CVE-2025-21722. Since the vulnerability is in the NILFS2 filesystem code, organizations should audit their systems to identify any use of NILFS2 and consider migrating critical data to more widely used and actively maintained filesystems if NILFS2 is not essential. Implement strict access controls to limit local user privileges and reduce the risk of exploitation by unprivileged users. Employ kernel hardening techniques such as SELinux or AppArmor to restrict filesystem operations and monitor kernel logs for warnings related to buffer state inconsistencies. Regularly back up data stored on NILFS2 filesystems to mitigate data loss risks. For environments where patching is delayed, consider isolating affected systems or running them with reduced privileges and monitoring for anomalous behavior. Finally, incorporate this vulnerability into incident response plans to quickly detect and respond to potential exploitation attempts.
Affected Countries
For access to advanced analysis and higher rate limits, contact root@offseq.com
Technical Details
- Data Version
- 5.1
- Assigner Short Name
- Linux
- Date Reserved
- 2024-12-29T08:45:45.753Z
- Cisa Enriched
- true
- Cvss Version
- 3.1
- State
- PUBLISHED
Threat ID: 682d9832c4522896dcbe85ea
Added to database: 5/21/2025, 9:09:06 AM
Last enriched: 7/3/2025, 4:26:15 AM
Last updated: 8/12/2025, 11:29:10 AM
Views: 16
Related Threats
CVE-2025-54205: Out-of-bounds Read (CWE-125) in Adobe Substance3D - Sampler
MediumCVE-2025-54195: Out-of-bounds Read (CWE-125) in Adobe Substance3D - Painter
MediumCVE-2025-54194: Out-of-bounds Read (CWE-125) in Adobe Substance3D - Painter
MediumCVE-2025-54193: Out-of-bounds Read (CWE-125) in Adobe Substance3D - Painter
MediumCVE-2025-54192: Out-of-bounds Read (CWE-125) in Adobe Substance3D - Painter
MediumActions
Updates to AI analysis are available only with a Pro account. Contact root@offseq.com for access.
External Links
Need enhanced features?
Contact root@offseq.com for Pro access with improved analysis and higher rate limits.