CVE-2026-31431该漏洞存在于Linux内核的加密子系统(crypto)中的algif_aead模块。问题源于此前尝试实施的“原地操作”(in-place operation)优化,该优化试图在同一内存区域处理源数据和目标数据。然而,由于algif_aead中源数据和目标数据实际上来自不同的内存映射,这种优化不仅没有性能收益,反而引入了复杂的逻辑错误。该漏洞可能导致本地攻击者利用此缺陷触发内存损坏,进而造成系统崩溃或权限提升。修复方案通过回滚相关提交,恢复了非原地操作模式,直接复制关联数据,从而消除了安全风险。
漏洞位于Linux内核的`crypto/algif_aead.c`文件中。AEAD(带关联数据的认证加密)套接字接口在处理数据加密和解密时,原本采用了标准的非原地操作。但在之前的代码提交中,为了性能优化,引入了原地操作逻辑,即直接在输入缓冲区上写入输出数据。然而,`algif_aead`的输入(`iov_iter` for src)和输出(`iov_iter` for dst)使用的是不同的内存页映射。这种架构差异意味着原地操作会导致对映射错误的内存区域进行写入,破坏了内存页的完整性或导致数据不一致。攻击者可以通过发送特制的AF_ALG套接字请求,利用这一逻辑缺陷触发内核内存越界写。CVSS 3.1评分为7.8(高危),攻击复杂度低,需要低权限本地用户交互,且可能完全影响机密性、完整性和可用性。