Severity by source
AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H
Local unprivileged user (AV:L, PR:L) reliably preloads code into a setuid-root binary, yielding full C/I/A control, so C:H rather than the reported C:N.
Primary rating from Vendor (freebsd).
CVSS VectorVendor: freebsd
Lifecycle Timeline
3DescriptionCVE.org
The Linuxulator determined whether a binary was set-user-ID or set-group-ID by checking the P_SUGID process flag. During execve(2), this flag is not yet set at the point where the auxiliary vector is constructed, so AT_SECURE was incorrectly set to zero for set-user-ID and set-group-ID executables.
An unprivileged local user can inject a shared library via LD_PRELOAD into a set-user-ID or set-group-ID Linux binary, gaining the privileges of that binary.
AnalysisAI
Local privilege escalation in FreeBSD's Linux binary compatibility layer (Linuxulator) allows an unprivileged user to preload a malicious shared library into set-user-ID or set-group-ID Linux binaries. Because the P_SUGID flag is not yet set when execve(2) builds the auxiliary vector, AT_SECURE is written as zero, so the Linux runtime loader fails to disable LD_PRELOAD and other unsafe behaviors for privileged binaries. Affects FreeBSD 14.3, 14.4, and 15.0 release branches; no public exploit identified at time of analysis, and EPSS risk is low (0.14%, 4th percentile).
Technical ContextAI
The Linuxulator is FreeBSD's kernel-level ABI compatibility subsystem that lets native Linux ELF binaries run on FreeBSD. The Linux dynamic loader (ld.so) relies on the AT_SECURE entry in the ELF auxiliary vector to decide whether a process is running in 'secure mode' - when AT_SECURE is 1, the loader ignores attacker-influenced environment variables such as LD_PRELOAD and LD_LIBRARY_PATH. FreeBSD's implementation derived AT_SECURE from the P_SUGID process flag, but during execve(2) that flag is set only after the auxiliary vector has already been constructed, producing a time-of-construction ordering bug in which AT_SECURE is always emitted as zero for setuid/setgid Linux binaries. This maps to CWE-266 (Incorrect Privilege Assignment): a privileged execution context is not correctly recognized as privileged, so the security hardening that should apply to setuid/setgid programs is silently skipped.
RemediationAI
Vendor-released patch: update to FreeBSD 14.4-RELEASE-p6, 14.3-RELEASE-p15, or 15.0-RELEASE-p10 (or later) as applicable to your branch, following FreeBSD-SA-26:30.linux (https://security.freebsd.org/advisories/FreeBSD-SA-26:30.linux.asc); apply via freebsd-update or by rebuilding the kernel from patched sources, then reboot so the corrected execve/auxiliary-vector code path is loaded. If patching must be deferred, the most effective compensating control is to unload/disable the Linux compatibility layer entirely by removing the linux kernel module (kldunload linux linux64) and preventing linux_enable in rc.conf - this eliminates the vulnerable code path but breaks any workloads that depend on running Linux binaries. Where the Linuxulator must remain enabled, reduce exposure by removing the setuid/setgid bit from Linux binaries that do not strictly require it and by restricting untrusted local/interactive access to hosts that run privileged Linux executables; note these controls only shrink the attack surface and are not a substitute for the fix.
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-266 – Incorrect Privilege Assignment
View allSame technique Code Injection
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-39965