CVE-2023-53560CVE-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文件系统接口进行操作。