CVE-2026-31589Linux内核内存管理子系统存在一个释放后重用漏洞。在`folio_unmap_invalidate()`函数处理过程中,由于未能正确持有mapping的引用或锁,导致mapping对象在folio移除后被释放。随后代码尝试访问`mapping->a_ops`时触发释放后重用。该漏洞可能导致本地权限提升或系统崩溃,CVSS 3.1评分为9.8,属于严重级别。
漏洞出现在Linux内核的内存管理模块,具体函数为`folio_unmap_invalidate()`。问题根源在于调用`filemap_free_folio()`的时机不当。当folio从mapping中移除且未持有锁时,mapping可能被异步释放。此时若继续访问`mapping->a_ops`,将导致UAF。攻击者可利用此漏洞进行竞态攻击,通过控制内存布局劫持控制流。修复方案参考`__remove_mapping()`模式,在释放锁前预先加载`free_folio`指针,确保访问安全。