Severity by source
AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Local-only exploit requiring a standard shell account (PR:L, AV:L); default config, no race (AC:L); scope changed as user privilege boundary is crossed to achieve root and persistent filesystem modification (S:C, C/I/A:H).
Primary rating from Vendor (CNA).
CVSS VectorVendor
Lifecycle Timeline
2Description PRE-NVD
AnalysisAI
Page-cache corruption in FreeBSD's kTLS-RX subsystem (CVE-2026-45257 / FreeBSD-SA-26:26.kTLS) enables an unprivileged local user to overwrite arbitrary bytes in the backing physical page of any world-readable file, including SUID-root binaries, by exploiting in-place AES-GCM decryption running directly over sendfile(2)-produced EXTPG mbufs via the kernel direct map (DMAP). The write bypasses the VFS layer entirely, defeating file permissions, mount options, and chflags schg immutable flags - making this the FreeBSD functional equivalent of Linux CVE-2022-0847 (Dirty Pipe). A public exploit (bumsrakete.c) is included in the oss-security disclosure and achieves reliable root LPE in approximately 1.5 seconds on default FreeBSD 13.0 through 15.0 on amd64, arm64, and riscv; no public KEV listing has been identified at time of analysis.
Technical ContextAI
FreeBSD's kernel TLS (kTLS) subsystem offloads TLS record encryption and decryption into the kernel for performance. The sendfile(2) syscall produces vnode-backed M_EXTPG mbufs whose m_epg_pa[] array stores the physical addresses of the file's actual page-cache pages (sys/kern/kern_sendfile.c:963). On PMAP_HAS_DMAP architectures (amd64, arm64, riscv), the kernel direct map allows translating any physical address to a kernel virtual address via PHYS_TO_DMAP(). The kTLS RX decrypt path (sys/opencrypto/criov.c:273, sys/crypto/aesni/aesni.c:599-605) calls AES_GCM_decrypt with input and output pointing to the same DMAP-derived address, writing plaintext directly over the page-cache page. Three guards exist to prevent EXTPG mbufs from reaching the in-place decrypt: mb_unmapped_compress (gated on payload length <= ~224 bytes on amd64, bypassed by using records >224 bytes), mb_unmapped_to_ext (converts EXTPG for interfaces lacking IFCAP_MEXTPG such as lo0, but allocates sf_buf whose kva == PHYS_TO_DMAP(pa) on DMAP architectures, preserving the same physical mapping), and sb_mark_notready (moves data into the kTLS decrypt queue with no M_EXTPG check at all). All three are bypassable in sequence. The vulnerable sendfile/EXTPG path was introduced in commit 3c0e56850511 (~2020) and first shipped in FreeBSD 13.0. No CWE is assigned in the available data; the root cause class most closely corresponds to improper isolation between kernel subsystems - specifically, the assumption that EXTPG mbufs from sendfile are safe to decrypt in-place without verifying that the output buffer is not a live page-cache page.
RemediationAI
Apply the vendor patch documented in FreeBSD-SA-26:26.kTLS; the exact patched release version is not confirmed in the available data beyond the advisory identifier, so administrators should monitor https://www.freebsd.org/security/advisories/ and freebsd-security-notifications@ for the patched release announcement. As an immediate workaround, adding kern.ipc.mb_use_ext_pgs=0 to /etc/sysctl.conf and rebooting disables EXTPG mbufs entirely, eliminating the vulnerable code path; the trade-off is reduced kTLS throughput because zero-copy page-cache-backed mbufs will no longer be used for TLS offload, increasing CPU overhead and memory copies for TLS workloads. An alternative workaround is rebuilding the kernel with MK_KERN_TLS disabled, which removes the kTLS subsystem entirely; this eliminates all kernel TLS offload capability and will affect applications that explicitly depend on kernel-side TLS processing. For multi-tenant hosting or jail environments that cannot patch or apply the sysctl workaround immediately, restricting interactive shell access is the most effective compensating control given the purely local attack vector. Note explicitly that chflags schg (system immutable flag) does NOT prevent exploitation on vulnerable systems and should not be relied upon as a compensating control.
The x86-64 kernel system-call functionality in Xen 4.1.2 and earlier, as used in Citrix XenServer 6.0.2 and earlier and
The rtsol(8) and rtsold(8) programs do not validate the domain search list options provided in router advertisement mess
The RFC 5011 implementation in rdata.c in ISC BIND 9.7.x and 9.8.x before 9.8.5-P2, 9.8.6b1, 9.9.x before 9.9.3-P2, and
Remote code execution in OpenSSH's sshd server (regression of CVE-2006-5051) allows unauthenticated remote attackers to
The SSH transport protocol with certain OpenSSH extensions, found in OpenSSH before 9.6 and other products, allows remot
The vm_map_lookup function in sys/vm/vm_map.c in the mmap implementation in the kernel in FreeBSD 9.0 through 9.1-RELEAS
Integer overflow in the _gd2GetHeader function in gd_gd2.c in the GD Graphics Library (aka libgd) before 2.2.3, as used
The Stream Control Transmission Protocol (SCTP) module in FreeBSD 9.3 before p33, 10.1 before p26, and 10.2 before p9, w
In FreeBSD 12.1-STABLE before r359565, 12.1-RELEASE before p7, 11.4-STABLE before r362975, 11.4-RELEASE before p1, and 1
A statement in the System Programming Guide of the Intel 64 and IA-32 Architectures Software Developer's Manual (SDM) wa
The SCTP implementation in FreeBSD 8.2 allows remote attackers to cause a denial of service (NULL pointer dereference an
NFS in a BSD derived codebase, as used in OpenBSD through 7.4 and FreeBSD through 14.0-RELEASE, allows remote attackers
Same weakness CWE-123 – Write-what-where Condition
View allSame technique Authentication Bypass
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-39780