@drwho@masto.hackers.town @thibaultmol@en.osm.town @darkrat@chaosfurs.social It is minified but really not difficult to pull apart. It opens /usr/bin/su, then repeatedly calls c(f, i, e[i:i+4]) to write the embedded payload into the cached image of /usr/bin/su in 4-byte chunks. The write-up describes this. The sendmsg() data carries the 4 controlled bytes, splice() supplies the page-cache-backed file pages, and recv() triggers the authencesn path that writes those bytes into the cached file page.After patching the cached copy, it just runs su. That's it.s.socket(38,5,0) are the numeric constants for AF_ALG and SOCK_SEQPACKET, it's equivalent to socket.socket(socket.AF_ALG, socket.SOCK_SEQPACKET, 0).The zlib blob decompresses to a 160-byte ELF executable, it basically only contains: setuid(0)
execve("/bin/sh", NULL, NULL)
exit(0)to pop a root shell.The CVE is real; I got it to work just fine on my Proxmox host (Linux 6.17.13-2)