IPBUF安全漏洞报告
English
CVE-2023-53560 CVSS 7.8 高危

CVE-2023-53560 Linux内核tracing/histograms模块释放后使用漏洞

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

漏洞信息

漏洞编号
CVE-2023-53560
漏洞类型
释放后使用(Use-After-Free)
CVSS评分
7.8 高危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Linux Kernel

相关标签

Linux KernelUse-After-Free释放后使用tracing子系统histogramsKASAN本地权限提升拒绝服务内核漏洞CVSS高危

漏洞概述

CVE-2023-53560是Linux内核tracing/histograms子系统中存在的一个高危释放后使用(Use-After-Free)漏洞。该漏洞位于内核的直方图触发器(hist trigger)处理逻辑中,具体涉及resolve_var_refs函数。当hist触发器包含被引用的变量(referenced variables)但没有直接的变量字段时(例如引用变量是为触发器动作添加的),新添加的引用将没有字段变量。如果在解析过程中未将这些被引用的变量纳入考虑,可能会导致一个bug,允许移除那些仍有变量被引用的hist触发器。这种不当的释放操作会导致slab-use-after-free问题,攻击者可以利用此漏洞在内核上下文中执行任意代码或导致系统崩溃。该漏洞CVSS评分为7.8,属于高危级别,需要本地低权限访问即可利用,无需用户交互,但对机密性、完整性和可用性均产生高影响。漏洞影响多个Linux内核稳定版本,官方已通过多个补丁提交进行了修复。

技术细节

该漏洞的根本原因在于Linux内核tracing子系统的hist trigger处理逻辑中对引用变量(referenced variables)的管理不当。当用户通过/sys/kernel/tracing接口创建hist触发器时,内核会解析触发器表达式并建立变量引用关系。正常情况下,hist触发器可以包含直接变量字段(如vals=hitcount:comm=xxx),这些变量会在hist_vars中被记录。然而,当hist触发器仅通过onmatch等动作引用变量时(如onmatch(raw_syscalls.sys_enter).synthetic_sys_enter($comm, id)),这些被引用的变量不会作为直接字段变量被添加到hist_vars中。当用户尝试删除这样的触发器时,由于hist_vars中没有正确记录所有被引用的变量,内核可能错误地释放了仍被引用的hist数据结构。后续当其他触发器尝试访问这些已释放的变量引用时,会触发resolve_var_refs函数中的slab-use-after-free错误。攻击者可以通过精心构造的hist触发器序列触发此漏洞,导致内核崩溃(DoS)或在内核上下文中执行任意代码。漏洞利用需要本地访问权限,攻击者可通过/sys/kernel/tracing文件系统接口进行操作。

攻击链分析

STEP 1
步骤1:获取本地访问权限
攻击者需要获得系统的本地访问权限,需要root权限或CAP_SYS_ADMIN能力以访问/sys/kernel/tracing目录。
STEP 2
步骤2:创建合成事件
通过向synthetic_events文件写入定义,创建包含comm和id字段的合成事件synthetic_sys_enter。
STEP 3
步骤3:创建包含引用变量的hist触发器
创建第一个hist触发器,将comm变量作为vals字段的一部分进行引用。
STEP 4
步骤4:创建通过onmatch动作引用变量的hist触发器
创建第二个hist触发器,通过onmatch动作引用$comm变量,但不将其作为直接字段变量。这种情况下hist_vars不会正确记录该引用。
STEP 5
步骤5:删除第一个触发器触发漏洞
删除第一个hist触发器时,由于hist_vars中未正确记录所有引用关系,内核错误地释放了仍被引用的hist数据结构。
STEP 6
步骤6:触发释放后使用
当系统继续处理sys_enter事件时,resolve_var_refs函数尝试访问已释放的变量引用,触发slab-use-after-free,可能导致系统崩溃或权限提升。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2023-53560 PoC - Linux Kernel tracing/histograms Use-After-Free # Reproducer for slab-use-after-free in resolve_var_refs # Requires: root or CAP_SYS_ADMIN privilege to access /sys/kernel/tracing #!/bin/bash set -e cd /sys/kernel/tracing # Step 1: Create a synthetic event with comm and id fields echo 'synthetic_sys_enter char[] comm; long id' >> synthetic_events # Step 2: Create first hist trigger that references comm variable via vals echo 'hist:keys=common_pid.execname,id.syscall:vals=hitcount:comm=common_pid.execname' >> events/raw_syscalls/sys_enter/trigger # Step 3: Create second hist trigger that references comm via onmatch action # This creates a referenced variable WITHOUT a direct field variable echo 'hist:keys=common_pid.execname,id.syscall:onmatch(raw_syscalls.sys_enter).synthetic_sys_enter($comm, id)' >> events/raw_syscalls/sys_enter/trigger # Step 4: Remove the first hist trigger - triggers use-after-free # because the second trigger still references $comm variable echo '!hist:keys=common_pid.execname,id.syscall:vals=hitcount:comm=common_pid.execname' >> events/raw_syscalls/sys_enter/trigger # Expected result: KASAN reports slab-use-after-free in resolve_var_refs+0xc7/0x180 # System may crash or become unstable

影响范围

Linux Kernel < 6.5(受影响版本)
Linux Kernel stable分支(需参考具体修复commit)

防御指南

临时缓解措施
在无法立即升级内核的情况下,建议限制对/sys/kernel/tracing目录的访问权限,仅允许受信任的管理员用户访问。同时可以通过内核配置选项禁用tracing功能或限制非特权用户对tracing接口的访问。此外,启用内核地址空间布局随机化(KASLR)和SMEP/SMAP等安全特性可以增加漏洞利用的难度。建议尽快应用官方安全补丁以彻底修复此漏洞。

参考链接

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