
Exploit for CVE-2026-31431, a Linux kernel authencesn vulnerability enabling local privilege escalation to root and container escape via AF_ALG and splice().
In 2017, the Linux kernel crypto module authencesn introduced an in-place optimization for AEAD (Authenticated Encryption with Associated Data) operations. This optimization caused read-only pages in the page cache to be incorrectly placed into a writable destination scatterlist under specific conditions. By leveraging the kernel crypto API exposed through AF_ALG sockets, combined with the splice() system call, an attacker can exploit this logic flaw to achieve a 4-byte arbitrary write to the page cache of setuid binaries (such as /usr/bin/su), thereby tampering with program logic and obtaining a root shell.
The entire exploitation process follows a linear logic flow, requiring no race window, no kernel-specific offsets, and no pre-installed special tools.
Local privilege escalation to root: Any local unprivileged user account can unconditionally escalate privileges to root.
Container escape: In Kubernetes / container environments, the page cache is shared with the host. An attacker inside a container can break out of the container boundary, compromising the host node and other tenants on the same node.
CI/CD environment compromise: In CI environments that execute untrusted code, such as GitHub Actions, GitLab Runner, and Jenkins Agent, an attacker can obtain root privileges on the Runner host machine directly through a malicious PR.
Cloud multi-tenant environments: In cloud services that execute user code, such as Notebooks, Serverless, and Agent sandboxes, a tenant can escalate privileges to host root.
Vulnerability persisted for nearly a decade: The problematic code was introduced in 2017, and all Linux distributions since then have been affected.
All Linux kernel versions built from 2017 until the patch release, covering:
Upgrade to a kernel version that includes the mainline commit a664bf3d603d. Major distributions are in the process of releasing fixed versions:
# 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
After upgrading, reboot the system to activate the new kernel, and verify whether the fix commit is included with the following command:
grep -r "a664bf3d603d" /proc/version 2>/dev/null || uname -r
# Verify whether the fix commit is included, or compare against the fixed version number in the official distribution advisory
Disabling the algif_aead kernel module can block the exploitation path:
# Permanently disable (takes effect after reboot)
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif.conf
# Unload immediately (takes effect for the current session)
rmmod algif_aead 2>/dev/null || true
Impact assessment of disabling algif_aead:
Not affected: dm-crypt/LUKS, kTLS, IPsec/XFRM, OpenSSL/GnuTLS/NSS default builds, SSH, kernel keyring encryption — these components use the kernel crypto API directly and do not go through AF_ALG.
Potentially affected: OpenSSL with the afalg engine explicitly enabled, certain embedded crypto offload paths, and applications that directly bind to aead/skcipher/hash sockets. You can check whether any process on the current system is using AF_ALG with lsof | grep AF_ALG or ss -xa.
| Distribution | Affected Kernel Versions |
| Ubuntu 24.04 LTS | 6.17.0-1007-aws and below |
| Amazon Linux 2023 | 6.18.8-9.213.amzn2023 and below |
| RHEL 14.3 | 6.12.0-124.45.1.el10_1 and below |
| SUSE 16 | 6.12.0-160000.9-default and below |
| Debian / Arch / Fedora / Rocky / Alma / Oracle | All kernels from the same period are affected |