CVE-2026-31431: Copy Fail vs. rootless containers

· security systems · Source ↗

TLDR

  • Lab walkthrough of CVE-2026-31431 (“Copy Fail”) showing rootless Podman’s user namespace UID mapping blocks the privilege escalation on GNOME’s GitLab runners.

Key Takeaways

  • The exploit uses AF_ALG sockets (authencesn/hmac-sha256/cbc-aes) and splice() to write shellcode into the /usr/bin/su page cache without touching the filesystem or requiring write permissions.
  • The embedded payload is a fully formed ELF binary using ELF golfing (stripped section headers) that calls setuid(0) then execve(“/bin/sh”); objdump -D -b binary -m i386:x86-64 is required to disassemble it.
  • Inside a rootless Podman container, setuid(0) returns 0 (success) but container UID 0 maps to host UID 1000 (the podman user), so no real privilege escalation reaches the host.
  • strace misses the setuid(0) call due to secureexec stripping SUID bits when ptrace is attached; bpftrace on the host via tracepoint:syscalls:sys_exit_setuid is the correct observation method.
  • Vulnerable kernel range: 6.17.x and earlier; fix backported into the stable 6.19.x tree starting at 6.19.12.

Hacker News Comment Review

  • No substantive HN discussion yet.

Original | Discuss on HN