CVE-2026-23345Linux内核在arm64架构的GCS(Guarded Control Stack)实现中存在拒绝服务漏洞。当启用FEAT_LPA2特性时,页表项的特定位用于表示输出地址,而非原有的共享性属性。由于_PAGE_GCS宏定义错误地包含了PTE_SHARED位,导致在启用LPA2的系统上操作GCS内存映射时引发内核页错误。本地低权限攻击者可利用此缺陷触发内核崩溃,导致系统完全不可用。
该漏洞源于Linux内核arm64架构对GCS(Guarded Control Stack)映射的处理与FEAT_LPA2硬件特性之间的冲突。当FEAT_LPA2启用时,PTE(页表项)的位[8:9]不再用于表示共享性(PTE_SHARED),而是作为输出地址的位[50:51]。内核现有的_PAGE_GCS宏定义硬编码了PTE_SHARED位(0b11),这在LPA2环境下会导致页表属性错误。当进程启用GCS并尝试释放内存时,内核在`zap_huge_pmd`路径中无法正确解析虚拟地址,触发“Unable to handle kernel paging request”错误,进而导致系统崩溃(Oops)。此漏洞允许本地低权限攻击者通过简单的程序执行引发内核恐慌,造成拒绝服务。修复方案涉及在LPA2启用时动态清除PTE_SHARED位。