IPBUF安全漏洞报告
English
CVE-2026-31517 CVSS 5.5 中危

Linux内核IP-TFS模块skb_put崩溃漏洞(CVE-2026-31517)

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

漏洞信息

漏洞编号
CVE-2026-31517
漏洞类型
拒绝服务
CVSS评分
5.5 中危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Linux Kernel

相关标签

Linux KernelDoS拒绝服务IP-TFSxfrm内核漏洞本地漏洞

漏洞概述

Linux内核xfrm模块中的IP-TFS功能存在安全漏洞。在数据包重组过程中,当处理非线性的skb数据包时,代码错误地调用了skb_put()函数,触发了SKB_LINEAR_ASSERT检查,导致内核崩溃。本地低权限攻击者可利用该漏洞造成系统拒绝服务。

技术细节

漏洞位于Linux内核net/xfrm/xfrm_iptfs.c文件的iptfs_reassem_cont()函数。在重组IP-TFS分片时,若首个分片通过零拷贝方式处理,会导致新skb(newskb)变为非线性状态。当处理同一数据报的后续分片且不满足快速路径条件时,代码会尝试内存拷贝并调用skb_put()。由于skb_put()仅适用于线性skb,对非线性skb调用该函数会触发SKB_LINEAR_ASSERT宏,导致内核空指针引用或非法操作,进而引发系统崩溃。修复方案是在调用skb_put()前检查skb是否线性,若非线性则调用skb_linearize()进行线性化。

攻击链分析

STEP 1
本地访问
攻击者获取本地低权限访问权限,能够执行代码或发送特制网络数据包。
STEP 2
触发IP-TFS处理
攻击者向目标系统发送特制的IP-TFS分片数据包序列。
STEP 3
漏洞利用
第一个分片使内核skb进入非线性状态,第二个分片触发慢速路径代码调用skb_put()。
STEP 4
系统崩溃
内核断言检查失败,触发Oops或Panic,导致系统重启或拒绝服务。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
/* * PoC Concept for CVE-2026-31517 * This code attempts to trigger the IP-TFS reassembly panic. * It requires a system with IP-TFS configured and active. * The PoC sends a sequence of fragmented packets where the first * triggers zero-copy (non-linear) and the second triggers the slow path. */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <arpa/inet.h> #include <sys/socket.h> #include <linux/ip.h> // Note: Actual trigger requires specific IP-TFS encapsulation and protocol handling. // This is a structure to represent the logic of sending crafted fragments. int main() { int sock; char buffer[1024]; struct sockaddr_in dest_addr; // Create raw socket (requires root/capabilities) sock = socket(AF_INET, SOCK_RAW, IPPROTO_RAW); if (sock < 0) { perror("Socket creation failed"); return 1; } dest_addr.sin_family = AF_INET; dest_addr.sin_port = 0; inet_pton(AF_INET, "127.0.0.1", &dest_addr.sin_addr); printf("[+] Sending crafted fragments to trigger skb_put panic on non-linear skb...\n"); // Fragment 1: Designed to trigger zero-copy path in iptfs_reassem_cont // making the skb non-linear. // send_crafted_fragment(sock, ...); // Fragment 2: Designed to hit the slow path, forcing skb_put() on the // non-linear skb created by Fragment 1. // send_crafted_fragment(sock, ...); printf("[+] Payload sent. Check kernel logs for panic/Oops.\n"); close(sock); return 0; }

影响范围

Linux Kernel (包含 xfrm_iptfs 模块的版本)

防御指南

临时缓解措施
建议应用Linux内核官方提供的修复补丁,该补丁在执行skb_put()前增加了skb_linearize()检查。临时缓解措施可通过禁用相关内核模块或配置防火墙拦截相关流量来实现。

参考链接

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