IPBUF安全漏洞报告
English
CVE-2025-71100 CVSS 7.8 高危

CVE-2025-71100 Linux kernel rtlwifi rtl92cu_tx_fill_desc 数组越界访问漏洞

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

漏洞信息

漏洞编号
CVE-2025-71100
漏洞类型
数组越界访问
CVSS评分
7.8 高危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Linux kernel rtlwifi rtl8192cu驱动

相关标签

数组越界访问Linux kernelrtlwifirtl8192cu本地提权UBSAN无线驱动CVE-2025-71100高危漏洞内核安全

漏洞概述

CVE-2025-71100是Linux内核中的一个高危安全漏洞,位于无线网络驱动rtlwifi的rtl8192cu组件中。该漏洞在rtl92cu_tx_fill_desc()函数中存在数组越界访问问题。当处理无线网络帧的传输描述符时,该函数从ieee80211_get_tid()获取TID(流量标识符),但未正确验证TID值是否在有效范围内。sta_entry->tids[]数组的大小为9(TID范围0-8),但获取的TID值可能为10,超出数组边界,导致UBSAN(Undefined Behavior Sanitizer)报告数组越界错误。该漏洞需要本地低权限用户即可触发,无需用户交互,攻击成功可导致内核崩溃或可能实现权限提升。

技术细节

该漏洞存在于drivers/net/wireless/realtek/rtlwifi/rtl8192cu/trx.c文件的第514行。漏洞函数rtl92cu_tx_fill_desc()在填充传输描述符时,直接使用从ieee80211_get_tid()获取的TID值访问sta_entry->tids[]数组,而未进行边界检查。数组类型为rtl_tid_data [9],有效索引范围为0-8,但802.11协议允许TID值为0-15。当TID值为9-15时(如管理帧或某些特殊控制帧),访问tids[]数组会导致越界读取/写入。UBSAN报告的错误为:index 10 is out of range for type 'rtl_tid_data [9]'。攻击者可通过发送特定构造的无线网络帧触发此漏洞,触发条件包括:发送带有非标准TID值的IEEE 802.11帧到运行存在漏洞的rtl8192cu驱动的系统。成功利用可能导致内核内存损坏、系统崩溃或潜在的权限提升。

攻击链分析

STEP 1
1
攻击者位于目标系统的本地,需具备低权限用户账户
STEP 2
2
目标系统运行带有漏洞的Linux内核版本,使用rtl8192cu无线网卡驱动
STEP 3
3
攻击者构造包含非标准TID值(10-15)的IEEE 802.11无线网络帧
STEP 4
4
发送构造的恶意帧到目标系统的无线网卡接口
STEP 5
5
rtl92cu_tx_fill_desc()函数处理帧时,调用ieee80211_get_tid()获取TID值
STEP 6
6
未经验证的TID值(如10)被用于索引sta_entry->tids[]数组,该数组大小仅为9
STEP 7
7
数组越界访问发生,触发UBSAN警告或导致内核内存损坏
STEP 8
8
成功利用可导致系统崩溃(拒绝服务)或可能实现内核级权限提升

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2025-71100 PoC - Trigger array out of bounds in rtl92cu_tx_fill_desc // This PoC demonstrates the vulnerability by sending a frame with TID=10 // which exceeds the MAX_TID_COUNT (9) of sta_entry->tids[] array #include <linux/module.h> #include <linux/kernel.h> #include <linux/netdevice.h> #include <net/mac80211.h> #define MAX_TID_COUNT 9 // Simulated vulnerable code path void trigger_tid_out_of_bounds(struct ieee80211_sta *sta, struct sk_buff *skb) { struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); int tid; // This is the vulnerable call - ieee80211_get_tid() can return values > 8 tid = ieee80211_get_tid(skb); // VULNERABILITY: No bounds check before accessing sta->tids[tid] // sta->tids is defined as rtl_tid_data[9], valid indices: 0-8 // But tid can be 10 (or 0-15), causing out-of-bounds access printk(KERN_INFO "Accessing tids[%d] - potential OOB access\n", tid); // This would trigger UBSAN warning at trx.c:514 // sta->tids[tid].data = ... } // Trigger condition: Send IEEE 802.11 frame with non-standard TID void send_trigger_frame(struct net_device *dev) { struct sk_buff *skb = alloc_skb(sizeof(struct ieee80211_mgmt), GFP_ATOMIC); if (!skb) return; // Construct frame with TID=10 (out of valid range 0-8) struct ieee80211_mgmt *mgmt = (void *)skb->data; mgmt->frame_control = cpu_to_le16(IEEE80211_FTYPE_DATA | IEEE80211_STYPE_DATA); // TID is encoded in the QoS Control field // Set TID = 10 (decimal) which exceeds MAX_TID_COUNT unsigned short *qos_control = (unsigned short *)((char *)mgmt + sizeof(struct ieee80211_mgmt)); *qos_control = cpu_to_le16(10); // TID = 10, exceeds array bounds // Trigger the vulnerable code path trigger_tid_out_of_bounds(NULL, skb); dev_kfree_skb(skb); } MODULE_LICENSE("GPL");

影响范围

Linux kernel rtlwifi rtl8192cu 驱动 - 所有未应用安全补丁的版本
受影响的内核版本包括:
4.19.x - 5.10.x 系列的多个子版本
具体修复提交:90a15ff324645aa806d81fa349497cd964861b66
具体修复提交:9765d6eb8298b07d499cdf9ef7c237d3540102d6
具体修复提交:dd39edb445f07400e748da967a07d5dca5c5f96e

防御指南

临时缓解措施
临时缓解措施包括:1) 禁用rtl8192cu无线网卡驱动,在内核配置中设置CONFIG_RTL8192CU=n或将其加入黑名单;2) 如果系统有其他可用的无线网卡,物理移除rtl8192cu设备;3) 使用内核参数“modprobe.blacklist=rtl8192cu”阻止驱动加载;4) 在容器或虚拟机环境中运行可能触发漏洞的无线网络相关操作;5) 监控系统日志中的UBSAN警告信息以便及时发现攻击尝试。建议尽快应用官方安全补丁升级内核。

参考链接

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