This is a master-key copy machine hidden behind a locked staff door
CVE-2026-7270 is a local privilege-escalation flaw in the FreeBSD kernel's execve(2) argument handling. A precedence bug in the copy-size calculation can turn an argument-buffer overflow into attacker-controlled overwrite of adjacent execve buffers, letting a low-privileged local user potentially become root. The FreeBSD CNA lists affected supported releases as 15.0-RELEASE < p7, 14.4-RELEASE < p3, 14.3-RELEASE < p12, and 13.5-RELEASE < p13; the advisory says all supported FreeBSD versions were affected at disclosure on 2026-04-29/30.
The vendor's HIGH 7.8 score is technically defensible for host impact, but it overstates patch urgency for most enterprises. The decisive friction is attacker position: this is not an unauthenticated remote edge bug, it is a post-compromise or valid-user bug that requires code execution on the box first. Public PoC availability and reliable root impact keep it out of LOW, but the combination of AV:L, PR:L, no KEV listing, and extremely low EPSS pushes the operational priority down to MEDIUM.
4 steps from start to impact.
Land a low-priv shell on FreeBSD
sshd in the picture.- A vulnerable FreeBSD host
- Local code execution or a valid low-priv account
- Ability to run userland code on the target
- This is already post-initial-access; it cannot be reached directly from the internet as a standalone exploit
- FreeBSD is a smaller slice of most enterprise estates than Windows or Linux
- Many enterprise FreeBSD systems are single-purpose appliances with limited user access
Trigger the execve overwrite with a public exploit
execve path so a buffer overflow overwrites adjacent argument buffers with controlled data. The public write-up and PoC materially lower the barrier, but the same write-up also shows exploitation was not one-shot trivial: the author describes multiple exploit iterations and environmental tuning.- Kernel version in one of the vulnerable ranges
- Ability to compile or run the PoC locally
- Target behavior matching the exploit assumptions closely enough
- Published exploit development required nontrivial iteration, not just a copy-paste crash
- Reliability can vary by branch, memory layout, and runtime conditions
- Some production hosts restrict compilers,
procfs, or developer tooling for low-priv users
execve storms or crash artifacts.Convert memory corruption into root context
execve argument handling and steering execution into a root-owned process path. The Calif.io write-up specifically discusses chaining this into LD_PRELOAD-style influence on privileged process execution to obtain root on a default install.- Exploit reliability sufficient to survive to the privileged exec path
- A target process path that yields meaningful privilege transition
- No hardening feature or environmental difference that breaks the exploit chain
- This is not a generic remote RCE primitive; it is a local, environment-sensitive LPE chain
- The published exploit path appears to depend on specific process behavior rather than a universal one-click outcome across all FreeBSD deployments
- FreeBSD EDR coverage is thinner than Windows, but host hardening and constrained service accounts can still reduce reachable blast radius
execve, but off-the-shelf signature coverage is likely limited.Operate as root on that host
- Successful local root escalation
- Access to valuable data or onward paths from the compromised FreeBSD host
- Impact is huge on the host but usually not instantly fleet-wide
- Well-segmented FreeBSD nodes often have narrower east-west reach than domain-joined Windows servers
The supporting signals.
| In-the-wild status | No public in-the-wild exploitation confirmed in the sources reviewed; not in CISA KEV as of the current catalog page. |
|---|---|
| PoC availability | Yes. Ryan Austin of Calif.io published a technical write-up and linked exploit/PoC materials for freebsd-CVE-2026-7270. |
| Exploit maturity | Public but not trivial. The researcher describes needing many exploit iterations, which argues against mass opportunistic abuse despite code availability. |
| EPSS | 0.00007 (~0.007%), which is effectively near-zero short-term exploitation probability. |
| KEV status | Not listed in CISA's Known Exploited Vulnerabilities catalog. |
| CVSS vector | CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H — total host impact, but only after local low-priv access is already in hand. |
| Affected versions | FreeBSD supported releases listed by the CNA: 15.0-RELEASE < p7, 14.4-RELEASE < p3, 14.3-RELEASE < p12, 13.5-RELEASE < p13. |
| Fixed versions | Patched in 15.0-RELEASE-p7, 14.4-RELEASE-p3, 14.3-RELEASE-p12, and 13.5-RELEASE-p13 or later; source-branch fixes are also listed in the advisory commit table. |
| Scanning / exposure reality | Not internet-scannable in the usual sense. GreyNoise/Shodan/Censys-style edge telemetry is low-value here because this is AV:L, not a remotely reachable network service flaw. |
| Disclosure / credit | Publicly disclosed 2026-04-30; FreeBSD credits Ryan Austin of Calif.io. |
noisgate verdict.
The single biggest driver is attacker position: this bug requires a foothold on the target first, so it is a post-compromise privilege escalator, not an initial-access bug. That sharply narrows the exposed population and makes the vendor's host-impact-heavy HIGH score too aggressive for most enterprise patch queues.
Why this verdict
- Downgraded for attacker position:
AV:L/PR:Lmeans the attacker already needs code execution or a valid low-priv account on the box before this CVE matters. - Downgraded for reachable population: FreeBSD is materially less prevalent than Windows/Linux in most enterprise fleets, so even complete host compromise applies to a narrower asset set.
- Downgraded for exposure model: this is not an internet-edge flaw; perimeter scanners, GreyNoise-style scanning spikes, and commodity mass exploitation pathways are much less relevant.
- Held at MEDIUM by impact: successful exploitation gives root on the host, so this is not mere hygiene if you run shared-user FreeBSD systems, bastions, or security appliances.
- Held at MEDIUM by exploit availability: public research and PoC materials exist, which lowers the barrier for a threat actor who already has a shell.
Why not higher?
There is no credible evidence in the reviewed sources of active exploitation, no KEV listing, and the bug does not provide initial access. Every serious use case assumes a prior compromise stage or valid local access, which is compounding downward pressure on severity in real environments.
Why not lower?
This is still a kernel-level privilege escalation to root on supported releases, not a crash-only issue. Public exploit materials exist, and organizations with bastions, shell servers, hosting nodes, or appliance-style FreeBSD deployments should treat local root bugs as meaningful risk once an attacker lands.
What to do — in priority order.
- Tighten local access paths — Reduce who can obtain a shell or code execution on FreeBSD hosts by pruning SSH access, eliminating stale local accounts, and restricting service-user shells. For a MEDIUM verdict there is no mitigation SLA; use this as opportunistic hardening while moving the actual patch into the 365-day remediation window.
- Constrain shared-user FreeBSD systems — Prioritize bastions, jump boxes, CI workers, shell hosts, and multi-tenant appliances for stronger account separation and network segmentation, because those are the places where
PR:Lis easiest for an attacker to satisfy. For MEDIUM, there is no mitigation SLA — go straight to the 365-day remediation window, but front-load these higher-risk roles in your normal change cycle. - Monitor abnormal
execvebehavior — Collect audit or process telemetry that can reveal noisy exploit attempts: repeated failingexecveactivity, suspicious environment-variable patterns, crashes around process launch, and sudden transitions to UID 0. This is a detective backstop, not a substitute for the patch, and for MEDIUM it should be deployed as part of routine hardening rather than under an SLA clock. - Reduce developer tooling on production nodes — Where feasible, remove compilers and restrict arbitrary code execution for low-privileged users on production FreeBSD systems. This raises friction for turning a local foothold into a working exploit, especially since the public research suggests real exploit tuning was required.
- WAFs and perimeter IPS do not meaningfully help because this is not a network-reachable bug.
- External attack-surface scans will not tell you exploitability here; the deciding factor is local shell access plus vulnerable FreeBSD patch level.
- Rebooting without applying the fixed branch or patch level does nothing except reload the vulnerable kernel.
Crowdsourced verification payload.
Run this on the target FreeBSD host as any user who can execute freebsd-version; root is not required for the version check. Save as check-cve-2026-7270.sh and run sh check-cve-2026-7270.sh or ./check-cve-2026-7270.sh; it prints VULNERABLE, PATCHED, or UNKNOWN and exits 1, 0, or 2 respectively.
#!/bin/sh
# check-cve-2026-7270.sh
# Determine whether a FreeBSD host is vulnerable to CVE-2026-7270
# Exit codes: 0=PATCHED, 1=VULNERABLE, 2=UNKNOWN
set -eu
get_ver() {
if command -v freebsd-version >/dev/null 2>&1; then
freebsd-version -k 2>/dev/null || freebsd-version 2>/dev/null || true
else
true
fi
}
VER="$(get_ver)"
if [ -z "$VER" ]; then
echo "UNKNOWN: freebsd-version not available"
exit 2
fi
# Normalize examples like:
# 15.0-RELEASE-p6
# 14.4-RELEASE-p3
# 13.5-RELEASE
BASE="${VER%%-p*}"
PATCH="0"
case "$VER" in
*-p*) PATCH="${VER##*-p}" ;;
*) PATCH="0" ;;
esac
# Ensure PATCH is numeric
case "$PATCH" in
''|*[!0-9]*)
echo "UNKNOWN: could not parse patch level from $VER"
exit 2
;;
esac
status_vuln() {
echo "VULNERABLE: $VER matches a vulnerable branch for CVE-2026-7270"
exit 1
}
status_patched() {
echo "PATCHED: $VER is at or above the fixed level for CVE-2026-7270"
exit 0
}
status_unknown() {
echo "UNKNOWN: $VER is not in a supported affected/fixed branch list from the advisory"
exit 2
}
case "$BASE" in
15.0-RELEASE)
if [ "$PATCH" -ge 7 ]; then status_patched; else status_vuln; fi
;;
14.4-RELEASE)
if [ "$PATCH" -ge 3 ]; then status_patched; else status_vuln; fi
;;
14.3-RELEASE)
if [ "$PATCH" -ge 12 ]; then status_patched; else status_vuln; fi
;;
13.5-RELEASE)
if [ "$PATCH" -ge 13 ]; then status_patched; else status_vuln; fi
;;
*)
status_unknown
;;
esac
If you remember one thing.
15.0-RELEASE-p7, 14.4-RELEASE-p3, 14.3-RELEASE-p12, 13.5-RELEASE-p13, or later within the noisgate remediation SLA of ≤365 days, but front-load exposed shared-user FreeBSD systems into the next normal maintenance cycle rather than treating this like an emergency edge patch.Sources
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.