EresusSecurity
Back to Research
Vulnerability Research

OpenBSD 7.9 Local Privilege Escalation: shmat and UAF

October 18, 2026
6 min read
Incident AnalysisOperating System SecuritySource: OpenBSD errata and Calif research

Calif's October 16, 2026 research disclosure described a local privilege-escalation chain in OpenBSD 7.9 that reached kernel-level execution and root access. The chain combined multiple kernel weaknesses: a shared-memory attachment counter overflow, a reference-counting use-after-free race, and a separate out-of-bounds write. This was not a remote unauthenticated entry point. An attacker first needed the ability to run code locally on the affected machine.

The age of the counter's original definition is not the age of the complete exploit chain. Calif traced a signed 16-bit shared-memory attachment count to early BSD code. On OpenBSD, repeated process and shared-memory operations could drive the count beyond its representable range. The resulting incorrect accounting contributed to object lifetime errors. A separate kernel write primitive was then combined with that condition to demonstrate privilege escalation. A 37-year-old data type alone did not provide root access; the research depended on the interaction of several implementation details.

What was patched

OpenBSD's 7.9 errata records two relevant fixes. Errata 018 addresses the shmat-related integer-overflow issue; errata 026 fixes a kernel reference-counting bug that could lead to use-after-free. Calif describes both as part of its demonstrated chain. The patch notices are the authoritative source for the correction and application procedure. Follow the instructions for the exact OpenBSD release and architecture you operate; do not copy a source-tree patch command into a production system without checking the official errata and your kernel build process.

Question Evidence-based answer
Is this a remote, unauthenticated exploit? The published chain is a local privilege escalation. Local code execution is a prerequisite.
Does the research describe one flaw? No. It combines shared-memory accounting, a use-after-free race, and a separate out-of-bounds write.
Are OpenBSD 7.9 fixes published? Yes. The official errata lists fixes 018 and 026.
Does the report prove in-the-wild exploitation? The cited research and errata establish a demonstrated exploit and fixes, not observed criminal or state-sponsored use.
Is a CVE identifier established by these sources? The cited disclosure and errata identify patch numbers but do not provide a CVE identifier. Recheck the vendor and CVE records for later assignment.

Defensive response

  1. Confirm actual release and kernel state. Inventory OpenBSD version, architecture, patch level, and whether the patched kernel is the one currently booted. Package metadata alone does not prove the running kernel has been replaced.
  2. Apply both relevant errata where applicable. Use the official 7.9 instructions for 018 and 026 and verify completion. If your organization has a kernel build or change-control procedure, preserve that audit trail.
  3. Treat an unpatched host with local users or workloads as a privilege boundary risk. Limit shell access, isolate untrusted build jobs and tenants, and review who can execute native code. These measures reduce opportunity; they do not replace the patches.
  4. Investigate suspicious local privilege transitions. Review authentication, process, service, and system logs for unexpected privileged activity. The public write-up is an exploit demonstration, not a ready-made detection signature. A clean log cannot prove the vulnerable path was never exercised.
  5. Avoid equating mitigations with a fix. Calif reports the demonstration worked despite protections including KARL, SMAP, and SMEP in its test setup. Hardening can raise attack cost, but patching the underlying defects remains the priority.

What defenders should take from the research

Exploit mitigations are layers, not warranties. Randomizing a kernel image does not necessarily randomize all allocator behavior or remove memory-safety bugs. Likewise, a counter's historical origin is less important operationally than whether current code validates its range and preserves object lifetimes under concurrency. Review the fixed code and regression tests for both boundary validation and lifetime transitions, not just the visible counter type.

The disclosure is valuable because it connects two independently addressed errata into one practical attack path. Vulnerability management should therefore assess related fixes together when a researcher shows that individually modest bugs compose into a stronger impact. At the same time, do not describe a local exploit as a network compromise or infer exploitation in the wild from a public proof of concept.

This summary reflects Calif's research and OpenBSD 7.9 errata available on October 18, 2026. Later CVE assignments, affected-release clarifications, or errata updates should supersede this snapshot.

Read the chain as an exploitability problem, not a CVSS label

The disclosure links several conditions into one path. Each condition answers a different review question:

Component Security question Operational meaning
Shared-memory attachment counter overflow Can repeated local operations make kernel accounting represent an invalid state? The shmat fix addresses the reported counter issue.
Reference-counting use-after-free Can concurrent object lifetime changes leave a stale kernel reference? The second erratum addresses the reported lifetime defect.
Separate out-of-bounds write What additional kernel write capability did the demonstration combine with the earlier conditions? Review the research and fixed source; do not infer a general remote write primitive.
Local execution prerequisite Who can start the chain on the host? Untrusted local users and build workloads affect prioritization; network reachability alone is not the stated entry condition.

This breakdown does not assign independent severity scores to the components. The reported impact comes from their composition, while the vendor errata remains the source for what each patch changes. A vulnerability record should retain the affected release, errata number, booted kernel evidence, and the researcher's stated prerequisites. That makes it harder to turn “kernel bug” into an unsupported claim of remote compromise.

Verify patch status on the running system

For each OpenBSD 7.9 host, record the release and architecture, the method used to apply errata 018 and 026, the resulting kernel build, and whether the host rebooted into that kernel. Preserve the change record and verify the active kernel after reboot through your normal system-inventory process. For fleet reporting, separate hosts with both fixes verified from hosts with incomplete records; an installed patch file is not sufficient evidence that the fixed kernel is running.

If local code execution is already suspected, patching reduces exposure but does not resolve whether a privileged action occurred earlier. Preserve logs and host evidence, review unexpected privilege transitions, and follow the organization's incident-response procedure. The public disclosure supplies research detail, not a complete detection signature.

OpenBSD local privilege-escalation questions

Does an internet-facing service make this a remote exploit? The published chain requires code execution on the host first. A remote service could be part of a separate access path, but the disclosure does not describe this as an unauthenticated network exploit.

Should teams track errata 018 and 026 together? The research demonstrates a composed chain involving both issues. Verify both official fixes where they apply, then assess the actual running kernel.

Related reading: Linux kernel local privilege-escalation research and exploitability context.

AI Security Starter Training

Request a practical checklist for prompt injection, RAG data leakage, MCP risks, and model-file security before launch.

Prompt injection and guardrail bypass checks.
RAG data leakage and permission-boundary review.
MCP identity, transport, and command-risk controls.

No spam. Used only to send the resource and related security notes.

Related Research

Related Services

Scope Estimator

Get a rough engagement size before the scoping call.

Estimated engagement

5–7 days

Request exact scope