IPBUF安全漏洞报告
English
CVE-2026-23394 CVSS 4.7 中危

CVE-2026-23394 Linux内核af_unix竞致拒绝服务漏洞

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

漏洞信息

漏洞编号
CVE-2026-23394
漏洞类型
竞态条件
CVSS评分
4.7 中危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Linux Kernel

相关标签

Linux KernelRace ConditionDoSaf_unixCVE-2026-23394

漏洞概述

Linux内核af_unix套接字模块中存在一个竞态条件漏洞。该漏洞源于垃圾回收(GC)机制与MSG_PEEK系统调用之间的同步缺失。当GC正在检测套接字生命周期时,若并发发生MSG_PEEK操作,会导致文件引用计数短暂增加,随后被close操作减少。由于缺乏同步机制,GC可能错误地判定活跃套接字已死亡,并清空其接收队列,从而导致拒绝服务。

技术细节

漏洞原理在于af_unix的GC算法依赖文件引用计数来判断套接字是否可被回收。在包含sk-A和sk-B的强连通分量(SCC)中,若sk-A已关闭但可通过sk-B接收,GC在检查`unix_vertex_dead`时,用户线程对sk-B执行`recv(MSG_PEEK)`会静默增加sk-A的引用计数,破坏了GC的判断逻辑。随后若立即close(sk-B),引用计数下降。此时GC若观察到引用计数变化,应放弃回收,但原代码未处理此竞态。补丁引入`seqcount_t`,在MSG_PEEK时标记,通知GC推迟收集SCC,从而避免误清理。

攻击链分析

STEP 1
步骤1
攻击者创建包含Unix域套接字的强连通分量(SCC)。
STEP 2
步骤2
攻击者利用用户线程对目标套接字执行MSG_PEEK操作,增加引用计数。
STEP 3
步骤3
攻击者在GC检查期间迅速关闭套接字,触发引用计数递减。
STEP 4
步骤4
GC机制因竞态误判套接字状态,清空活跃套接字的接收队列。
STEP 5
步骤5
导致合法数据丢失或服务不可用(拒绝服务)。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#include <stdio.h> #include <unistd.h> #include <sys/socket.h> int main() { int sv[2]; socketpair(AF_UNIX, SOCK_DGRAM, 0, sv); if (fork() == 0) { char buf[128]; // Child: Trigger MSG_PEEK race while(1) recv(sv[1], buf, sizeof(buf), MSG_PEEK); } else { // Parent: Close socket to trigger GC logic sleep(1); close(sv[0]); close(sv[1]); wait(NULL); } return 0; }

影响范围

Linux Kernel (具体受影响版本请参考厂商公告)

防御指南

临时缓解措施
限制非特权用户对Unix域套接字的访问权限,或通过内核配置禁用相关功能(可能导致服务不可用),建议尽快打补丁。

参考链接

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