【复现】Linux内核通用缝隙 Copy Fail(CVE-2026-31431)

颁布功夫 2026-04-30

缝霞述


Copy Fail(CVE-2026-31431)是 Linux内核authencesn加密模板中的一处逻辑缝隙。该缝隙允许低权限本地用户 ,向系统肆意可读文件的页缓存提议确定性、可受控的 4 字节写入。攻击者仅需一段 732 字节的 Python 剧本 ,就能篡改 setuid 特权二进造文件 ,即可在 2017 年之后颁布的绝大无数 Linux 刊行版上实现本地提权 ,直接获取root 最高权限。该缝隙CVSS评分为7.8 ,等级为高危。

与Dirty Cow、Dirty Pipe等经典Linux本地提权缝隙相比 ,Copy Fail的最大优势在于无需依赖竞争前提 ,缝隙利用成功率和不变性更高。此表 ,该缝隙覆盖的系统领域更广 ,险些影响所有Linux刊行版。


影响领域


? Linux Kernel 4.14及以上版本 ,直至补丁颁布前的所有版本(4.14 - 6.x系列)

? Ubuntu、Amazon Linux、RHEL、SUSE等主流刊行版

? 容器环境(官方披露可能实现容器逃逸)


缝隙道理


2017年提交的commit 72548b093ee3为algif_aead.c引入了AEAD(带关联数据的认证加密)操作的原位优化。在解密流程中 ,内核将AAD和密文数据从TX SGL拷贝至RX缓冲区 ,并通过sg_chain()将标签页以引用方式链接。随后设置req->src = req->dst ,使得正原来自文件页缓存的页(经由splice传入)进入了可写的指标散列列表(Destination SGL)。


在authencesn模板的解密函数crypto_authenc_esn_decrypt()中 ,当src与dst被视为统一原位缓冲区时 ,该函数会向标签区域写入4个字节。然而 ,此写入操作产生在标签查抄之前——即便后续因认证标签校验失败返回-EBADMSG谬误 ,文件缓存页中的4个字节已被篡改。该缝隙允许本地低权限用户向肆意可读文件的页缓存中写入可控数据 ,每次要求可覆盖4个字节 ,通过屡次要求可篡改只读或setuid法式内容 ,进而实现本地提权或代码执行。


缝隙复现


图片.png


安全建议


    (1)正式防护规划

    将内核更新至蕴含commit a664bf3d603d 的版本。

    https://github.com/torvalds/linux/commit/a664bf3d603dc3bdcf9ae47cc21e0daec706d7a5


    (2)一时防护措施

    使用seccomp阻止AF_ALG套接字创建 ,或将algif_aead�?榱腥牒诿ィ�

    Plain Text

    echo   "install algif_aead /bin/false" >   /etc/modprobe.d/disable-algif-aead.conf

    rmmod algif_aead 2>/dev/null


    参考链接:

    [1]https://xint.io/blog/copy-fail-linux-distributions

    [2]https://copy.fail/



    宝运莱官方网站积极防御尝试室(ADLab)


    ADLab成立于1999年 ,是中国安全行业最早成立的攻防技术钻研尝试室之一 ,微软MAPP打算主题成员 ,“黑雀攻击”概想首推者。截至目前 ,ADLab已通过 CNVD/CNNVD/NVDB/CVE累计颁布安全缝隙7000余个 ,持续维持国际网络安全领域一流水准。尝试室钻研方向涵盖基础安全钻延注电信运营商基础设施安全钻延注移动终端安全钻延注云安全钻延注信创安全钻延注物联网安全钻延注车联网安全钻延注工控安全钻延注数据安全钻延注5G安全钻延注AI安全钻延注卫星安全钻延注低空安全钻延注高级威胁钻延注攻防系统建设。钻研成就利用于产品主题技术钻延注国度沉点科技项目攻关、专业安全服务等。


    adlab.jpg