CVE-2026-23408Linux内核中的AppArmor模块在处理配置文件替换时存在双重释放漏洞。在aa_replace_profiles函数中,当ns_name指针从ent->ns_name获取值后,由于未将ent->ns_name置空,导致在释放ent结构体时该内存被首次释放,随后ns_name被再次释放。本地低权限攻击者可利用此漏洞导致系统崩溃或潜在的权限提升。
该漏洞源于Linux内核安全模块AppArmor的aa_replace_profiles函数中的逻辑缺陷。代码执行流程中,ns_name首先尝试通过aa_unpack获取。若为NULL,则从ent->ns_name赋值。问题在于,后续调用aa_load_ent_free(ent)释放了ent结构体及其成员(包括ent->ns_name指向的内存),但在赋值操作中未将ent->ns_name指针置为NULL,导致所有权未正确转移。随后函数执行kfree(ns_name)时,尝试释放同一块内存,引发双重释放。攻击者可通过构造特殊的AppArmor配置文件数据并触发加载流程来利用此漏洞,可能导致内核拒绝服务或结合堆喷射技术实现本地权限提升。