CVE-2026-23012CVE-2026-23012是Linux内核中DAMON(Data Access Monitor)模块的一个高危安全漏洞,CVSS评分7.8。该漏洞属于Use-after-Free(释放后重用)类型,存在于mm/damon/core.c文件中的damon_call()函数及相关调用控制机制中。攻击者可通过DAMON sysfs接口触发此漏洞,当damon_call()函数针对未运行的DAMON上下文执行时,会返回错误但未正确清理damon_call_control对象,导致该对象仍链接到上下文的call_controls列表中。如果该对象随后被释放并重新分配,另一个damon_call()调用会尝试将新的damon_call_control对象添加到列表中,此时列表仍包含指向已释放对象的指针,从而引发Use-after-Free漏洞。此漏洞需要本地访问权限和sysfs写权限才能利用,虽然不易被利用,但可导致本地权限提升和系统崩溃。
漏洞根源在于damon_call()函数在DAMON上下文未运行时的错误处理流程。当函数执行失败时,damon_call_control对象未被正确从call_controls列表中移除。具体攻击步骤:首先调用damon_call()触发错误,使damon_call_control对象残留在列表中;然后释放该对象;接着再次调用damon_call()尝试添加新的damon_call_control对象到同一列表;此时列表中的悬空指针指向已释放内存,访问时触发UAF。修复方案包括两部分:1) 在终止DAMON上下文时,将kdamond_call()操作提前到ctx->kdamond重置之前执行,确保任何看到NULL ctx->kdamond的代码可以安全假设上下文不再访问damon_call()请求;2) 让damon_call()在返回错误前清理已添加到已终止DAMON上下文的damon_call_control对象。攻击者需要具有sysfs写权限并执行特定的文件写入操作序列才能触发此漏洞。