CVE-2026-43043Linux内核中的AF_ALG接口存在一处空指针解引用漏洞,该漏洞源于Scatter/Gather List (SGL) 链接处理逻辑的缺陷。当使用sendmsg()填充SGL至最大条目数MAX_SGL_ENTS时,末尾会被标记为结束。若后续sendmsg()分配新SGL并链接,却未清除前一个SGL的结束标记,将导致scatterwalk提前终止并返回NULL指针。内核在解引用该指针时会触发崩溃,攻击者可利用此漏洞造成本地系统拒绝服务。
该漏洞位于Linux内核的crypto子系统中,具体涉及AF_ALG接口的实现。漏洞触发原理如下:在处理加密数据时,内核使用Scatter/Gather List (SGL) 管理内存。当通过sendmsg()发送的数据量恰好填满当前SGL(达到MAX_SGL_ENTS)时,系统会将其最后一个条目标记为结束。随后,当有更多数据到来时,内核会分配新的SGL结构,并使用sg_chain()将其链接到旧SGL。然而,在af_alg_alloc_tsgl函数中,代码执行sg_chain()时遗漏了清除旧SGL结束标记的操作。
这种遗漏导致后续的scatterwalk遍历逻辑误判链表终点,sg_next()函数返回NULL。当内核尝试访问该NULL指针时,会立即触发异常,导致Kernel Panic。攻击者无需用户交互,仅需本地低权限即可触发此漏洞,其CVSS 3.1评分为5.5,主要影响系统的可用性(A:H),可能导致关键服务中断。