CVE-2022-50519CVE-2022-50519是Linux内核nilfs2(新日志文件系统第二版)中的一个中等严重性漏洞。该漏洞源于nilfs2文件系统在处理检查点(checkpoint)获取失败时的错误处理机制不当。当由于磁盘上检查点元数据的异常导致检查点的创建或最终化失败时,内核会触发WARN_ON警告。在配置了panic_on_warn参数的内核中,这种警告会导致整个系统panic,从而造成拒绝服务(DoS)攻击。该漏洞的CVSS 3.1评分为5.5分,攻击向量为本地(AV:L),需要低权限(PR:L),无需用户交互(UI:N),对机密性无影响(C:N),对完整性无影响(I:N),但对可用性影响较高(A:H)。该漏洞于2025年10月7日公开披露,影响多个Linux内核稳定版本。修复方案是将原有的WARN_ON宏替换为nilfs_error函数,这样在遇到异常文件系统状况时,内核将以更优雅的方式处理错误,而不会触发panic。同时,修复还将检测到的内部错误码统一替换为I/O错误码(EIO),避免内部错误码被传递给上层调用者。
从技术层面分析,该漏洞存在于Linux内核的nilfs2文件系统驱动中,具体位于检查点管理模块。nilfs2是一种日志结构文件系统(LFS),使用检查点机制来保证文件系统的一致性。在文件系统运行过程中,需要定期创建和完成检查点操作。原始代码使用WARN_ON宏来检测检查点创建或最终化过程中可能出现的异常情况(例如磁盘上的检查点元数据损坏)。WARN_ON宏会触发内核警告并打印栈跟踪信息。当内核启动参数中设置了panic_on_warn=1时,任何WARN_ON触发的警告都会导致内核panic,使系统完全停止响应。攻击者可以通过构造恶意的nilfs2文件系统镜像或破坏现有文件系统中的检查点元数据来触发此漏洞。由于该漏洞仅需本地低权限即可利用(PR:L),本地普通用户可以挂载特制的nilfs2镜像或通过文件系统操作触发检查点失败,从而导致系统panic。修复方案采用了nilfs_error函数替代WARN_ON,该函数会正确地将文件系统标记为错误状态并执行适当的错误恢复流程,同时将错误码统一为标准的I/O错误(EIO),避免了内部错误码泄漏到调用者的问题。