Linux 内核提权 CVE-2026-31431
Copy Fail的根源位于Linux内核加密子系统(crypto)的authencesn AEAD模板中(用于IPsec的Extended Sequence Number支持)。
2017年,algif_aead模块引入了一个“in-place优化”,让AF_ALG socket在处理AEAD解密时,将page cache页面直接放入可写的scatterlist(分散/聚集列表)。攻击者通过splice()零拷贝机制,把任意可读文件(如/usr/bin/su)的page cache页面传入AF_ALG socket的输入/输出scatterlist。随后,crypto_authenc_esn_decrypt()函数会把调用者的目标缓冲区当作临时暂存空间(scratch space),在输出边界之外写入4字节的seqno_lo,并且永远不会恢复原始数据。这就是经典的“Copy Fail”——复制操作“失败”了,超出了缓冲区边界。整个过程不需要race、无需重试、单次直线执行即可成功。PoC利用AF_ALG + splice() + authencesn的组合,实现对任意可读文件page cache的精确4字节覆盖。