Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain unprivileged local shell
-
DeliveryBlock thread in semop(2) on target set
-
ExploitChurn 32768 sem sets to wrap 15-bit seq
-
ExecutionTrigger out-of-bounds kernel heap access
-
PersistShape heap corruption
-
ImpactEscalate to root
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Bounds checking, write limits
MITRE ATT&CK
2 techniques across 2 tactics: Execution, Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires local, unprivileged access to a FreeBSD host (14.4/14.5/15.0/15.1 release lines before the listed patch levels) with SysV semaphore IPC available, which is standard/default - no special sysctl or configuration toggle is named in the advisory. The real limiting factor is the mechanism: the attacker must have a thread blocked in semop(2) AND create/destroy roughly 2^15 (32,768) semaphore sets landing in the same table slot to wrap the sequence counter before the blocked call re-validates. This race/timing dependency and the need for local code execution (AV:L, no remote path) materially limit practical exploitation; there is no user-interaction or authentication-beyond-local-login requirement. |
| Impact | Signals are largely consistent in pointing to a serious-but-not-urgent local privilege escalation. The FreeBSD-assigned CVSS 3.1 vector (AV:L/AC:L/PR:N/UI:N, C:H/I:H/A:H, base 8.4) confirms this is local-only (AV:L) and requires no prior privileges beyond an unprivileged shell (PR:N), with total impact - matching the SSVC 'Technical Impact: total' rating. However, the vendor's AC:L is questionable: the description requires wrapping a 15-bit sequence counter, i.e. creating and destroying on the order of 32,768 semaphore sets in the same table slot while another thread is blocked in semop(2). That is a timing/race-dependent primitive, so I assess attack complexity as HIGH rather than LOW - flagging a conflict between the vendor CVSS and the described mechanics. Exploitation signals are low/benign: EPSS 0.18% (7th percentile), SSVC 'Exploitation: none' and 'Automatable: no', and the vulnerability is NOT in CISA KEV. No public exploit was identified in the provided data. Net: a genuine kernel heap out-of-bounds LPE worth patching on multi-user or shared FreeBSD hosts, but it is not a widespread-exploitation, drop-everything issue - it needs local access and a non-trivial race win, which is why automated/mass exploitation is rated unlikely. |
| Exploit ScenarioDerived | An unprivileged local user on a shared FreeBSD host (e.g. a jail operator, CI runner user, or low-privileged account) blocks a thread in semop(2) on a target semaphore set, then rapidly creates and destroys semaphore sets to wrap the 15-bit IPC sequence number so the blocked call mistakes a new set for the original. The subsequent out-of-bounds access corrupts kernel heap memory, which the attacker shapes to escalate to root. No public proof-of-concept is identified at time of analysis, and success depends on winning the counter-wrap race. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 16, 2026
Out-of-bounds access to kernel heap memory in FreeBSD's System V semaphore subsystem allows an unprivileged local user to potentially escalate privileges or crash the kernel. The flaw is a race in semop(2): the invoking thread blocks, releases the per-set lock, and on wake-up re-validates its semaphore set using a 15-bit sequence number embedded in the IPC identifier; if roughly 32,768 sets are created and destroyed in the same table slot during that window, the counter wraps and the kernel falsely treats a freed/reused set as still valid, leading to an out-of-bounds dereference (CWE-787). Exploitation requires local code execution and a timing-dependent counter wrap, so practical risk is limited despite the total technical impact rating - no public exploit code has been identified at time of analysis, EPSS is 0.18% (7th percentile), and CISA SSVC records Exploitation: none, Automatable: no.
RemediationAI
Vendor-released patch: upgrade to FreeBSD 14.4-RELEASE-p10, 14.5-RELEASE-p1, 15.0-RELEASE-p14, or 15.1-RELEASE-p4 (or later) using 'freebsd-update fetch install' followed by a reboot, or by rebuilding from an updated source tree on the matching releng branch; details and revision numbers are in the advisory at https://security.freebsd.org/advisories/FreeBSD-SA-26:64.sysvsem.asc. Priorities should reflect the fact that this is a local-only, timing-dependent privilege escalation with no public exploit identified and a low EPSS score (0.18%), so it is serious but not urgent relative to remotely exploitable issues - still, patch systems that host untrusted or multi-tenant local users promptly. The advisory does not identify a functional workaround, and System V semaphore support is integral to the kernel with no supported sysctl to disable it at runtime, so operators can only apply partial containment: set allow.sysvipc=0 on jails whose workloads do not require SysV semaphores or shared memory (this prevents jailed users from reaching the vulnerable syscall path, at the cost of breaking applications inside those jails that depend on SysV IPC), and reduce or tightly control unprivileged local shell access on multi-user hosts (trade-off: limits legitimate development or hosting use cases and does not help where a low-privilege compromise already exists). Because the attack requires creating and destroying thousands of semaphore sets, monitoring or capping IPC_SET/IPC_RMID churn in the same semaphore table slot can provide detection value, though it is not a hardening control and imposes overhead.
Affected VersionsENISA
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
FreeBSD implements System V semaphores in the kernel, where each semaphore set is referenced by an IPC identifier composed of a table slot index plus an internal sequence (generation) counter. The sequence field is only 15 bits wide, so it has 32,768 possible values before wrapping. When semop(2) cannot immediately satisfy a semaphore operation, it drops the per-set lock and sleeps; the sequence number is intended as a cheap staleness check so that if the set is removed while the caller sleeps, the identifier no longer resolves and the call fails cleanly. The root cause (CWE-787, out-of-bounds write) is that this check is insufficient: an attacker who repeatedly creates and destroys semaphore sets that hash into the same table slot can exhaust and wrap the 15-bit generation counter while a thread remains blocked, making the stale identifier appear valid again. The kernel then operates on what is effectively a recycled or freed set and performs an out-of-bounds access on kernel heap memory. CPE data (cpe:2.3:a:freebsd:freebsd:*:*:*:*:*:*:*:*) confirms this is a base FreeBSD kernel issue rather than a third-party component; the CVSS vector (AV:L/AC:L or AC:H per independent assessment/PR:N/UI:N/S:U/C:H/I:H/A:H) reflects a local, unauthenticated attacker with no user interaction, and no code execution over a network path is involved.
Know when Freebsd gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Local-only kernel bug (AV:L) reachable by any unprivileged user (PR:N, no UI); AC:H because triggering requires winning a race to wrap a 15-bit counter (~32768 set create/destroys); full kernel compromise gives C/I/A:H.
Primary rating from Vendor (freebsd).
CVSS VectorVendor: freebsd
Lifecycle Timeline
3DescriptionCVE.org
When semop(2) blocks waiting for a semaphore condition, it releases the per-set lock and sleeps. Upon waking, it checks the sequence number embedded in the semaphore set's IPC identifier to detect whether the set was removed while the caller was asleep. This sequence number is only 15 bits wide. If enough semaphore sets are created and destroyed in the same table slot while a caller is blocked, the counter wraps around, and semop(2) may falsely conclude that the original set still exists. The subsequent access to a semaphore within the set may then be out of bounds.
An unprivileged local user can trigger an out-of-bounds access on kernel heap memory, potentially leading to privilege escalation.
Executive ViewAI
A kernel privilege-escalation flaw in FreeBSD's System V semaphore subsystem affects FreeBSD-based servers, appliances, and network devices that permit local user access, potentially allowing a local user to gain root or destabilize the host. Exploitation is constrained by a timing-dependent race that requires substantial local activity, and no public exploit code or active exploitation has been observed, so this is primarily an exposure-management concern rather than an active incident. Leadership should care because no patch is available and the flaw erodes the isolation assumptions that multi-tenant, appliance, and shared-host architectures depend on.
No vendor-released patch identified at time of analysis. Interim mitigations: restrict local shell access to trusted administrators, isolate untrusted or multi-tenant workloads in jails or VMs with least privilege, lower SysV semaphore limits (kern.ipc.semmni / kern.ipc.semmns) where feasible, and monitor for kernel panics as a possible exploitation indicator. Apply vendor patch when released.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Privilege escalation occurs when an attacker leverages flaws in access control mechanisms to gain permissions beyond what they were originally granted.
A buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.
Memory corruption occurs when a program writes data beyond the boundaries of allocated memory regions or accesses memory in unintended ways, violating the integrity of the process's address space.
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
Server or client applications that call the SSL_check_chain() function during or after a TLS 1.3 handshake may crash due
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
An issue was discovered in OpenSSH 7.9. Rated medium severity (CVSS 5.9), this vulnerability is remotely exploitable, no
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
An OpenSSL TLS server may crash if sent a maliciously crafted renegotiation ClientHello message from a client. Rated med
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
EUVD-2026-101855
NVD
CVE.org
EPSS
Vulnrichment
GitHub PoC
Exploit-DB