Stackness
Sign up
Vault vs OpenBao in 2026: the RCE patch gap, the features that differ and what a switch touches

Vault vs OpenBao in 2026: the RCE patch gap, the features that differ and what a switch touches

As of 26 October 2026, pick OpenBao if you run Vault Community Edition on Raft or PostgreSQL storage and use no Enterprise features: it costs nothing, it includes namespaces and HSM unseal, and it shipped the fix for the four-bug remote code execution chain disclosed in September 14 days before HashiCorp Vault did. Stay on Vault if you depend on replication, Sentinel, Secrets Sync, Transform, FIPS builds or one of the storage backends OpenBao dropped. Either way, patch first: OpenBao 2.7.1 or 2.6.4, Vault 2.2.1.

What was the chained Vault and OpenBao RCE, and who is patched?

The chained RCE is four bugs that Alex Scheel of ControlPlane linked into one attack, published on 28 September 2026: a certificate from the PKI ACME endpoint, a policy bypass, a namespace escape and a Raft snapshot restore that runs a binary on the host. OpenBao fixed them in 2.6.3 and 2.7.0 on 23 September. Vault fixed them in 2.1.2 on 7 October.

The four steps, with their CVE numbers on each side:

Step OpenBao advisory Vault bulletin
ACME issues a certificate with unvalidated SANs GHSA-x8fg-h69x-p28f, CVE-2026-104092 HCSEC-2026-40, CVE-2026-105818
A deny rule bypassed with a name like AdMiN GHSA-fg5x-7whg-6c28, CVE-2026-104093 HCSEC-2026-43, CVE-2026-89322
A policy name that reaches into the root namespace GHSA-mjch-vcw3-hhmf, no CVE HCSEC-2026-42, CVE-2026-105820, Enterprise only
A Raft snapshot restore that swaps the plugin catalog GHSA-j6wc-jpvg-xfxq, CVE-2026-104090 HCSEC-2026-41, CVE-2026-105816

"Unauthenticated" describes only the start. The first step needs no credentials when ACME runs without External Account Binding; each later step uses the identity the one before it gained, and the RCE advisory itself requires high privileges. ControlPlane calls it "the second-ever remote code execution vulnerability in Vault and OpenBao", which is ControlPlane's count. None of the seven CVEs was in CISA's Known Exploited Vulnerabilities catalog as of its 23 October update, and I found no report of exploitation.

Vault and OpenBao side by side in October 2026

Vault and OpenBao share an API, because OpenBao forked from Vault 1.14 in late 2023, after HashiCorp moved Vault to the Business Source License that August. Since then the two have split on licence, on which features are free and on storage. The facts that decide the choice, checked on 26 October 2026:

HashiCorp Vault OpenBao
Licence BUSL 1.1, licensor IBM MPL 2.0
Governance IBM OpenSSF sandbox project since June 2025
Latest release 2.2.1, 22 October 2026 2.7.1 and 2.6.4, 1 October 2026
Chain fixed in 2.1.2 Community; 2.1.2, 1.21.12, 1.20.17, 1.19.23 Enterprise 2.6.3 and 2.7.0
Namespaces Enterprise or HCP free since 2.3.1
HSM (PKCS#11) auto-unseal Enterprise free; plugin since 2.6.0, plugin-only since 2.7.0
Replication, Sentinel, Secrets Sync, Transform, FIPS Enterprise not in the project; FIPS from ControlPlane's paid edition
Storage backends 23 documented Raft, PostgreSQL, PebbleDB, in-memory
Releases, 27 Oct 2025 to 26 Oct 2026 14 14
GitHub stars about 36,400 about 8,700
Paid edition HCP Vault Dedicated from $0.62 a cluster-hour (Development tier); Enterprise on quote none from the project; vendor support from ControlPlane and others

Sources: the two repositories' releases and licence files, Vault's storage docs, OpenBao's storage docs and IBM's price list.

OpenBao shipped the fix 14 days before Vault

OpenBao's advisories went out on 23 September with the patched releases, and each said "This vulnerability is original to HashiCorp Vault". Vault had no fixed release until 2.1.2 on 7 October, so for 14 days Vault users knew the bugs existed and had no patch. HashiCorp did publish an ACME mitigation in HCSEC-2026-40: restrict the default directory policy or turn the default directory off.

ControlPlane explains the gap with an agreement it says IBM declined: "IBM's unwillingness to put an agreement in place has unfortunately meant that Vault customers were impacted at the time of release". Read that as a claim by an interested party: Scheel leads OpenBao development at ControlPlane, which sells OpenBao support. HashiCorp has not commented on it publicly that I could find. One disclosure does not set a pattern, though the 2025 RCE went the other way: Vault's bulletin came out on 1 August 2025 and OpenBao's a week later.

Two Vault details matter for anyone patching now. Vault Community Edition gets no backports, so a 1.21 or 2.0 install must move to 2.1.2 or later. And 2.1.2 changes ACL matching: "Existing deny rules using mixed-case resource names will fail open (become allow-all) after upgrade until rewritten with lowercase names." Rewrite those rules before upgrading.

Check whether your Vault or OpenBao is exposed in five commands

A server is exposed to the full chain when it runs an unpatched version on Raft storage with a plugin directory configured and ACME open without account binding. Each missing piece narrows it. Start with the version and storage, then the configuration the chain needs:

vault status                       # or: bao status
                                   # Version, Storage Type (raft?), Seal Type (shamir?)
curl -s $VAULT_ADDR/v1/sys/health  # version without a token
vault read pki/config/acme         # enabled, default_directory_policy, eab_policy
vault read sys/config/state/sanitized | grep plugin_directory
for p in $(vault policy list); do vault policy read "$p" | grep -q raft/snapshot && echo "$p"; done

Exposed versions: OpenBao before 2.6.3, Vault Community 2.1.1 and earlier, Vault Enterprise before the four fixed releases. Not on Raft: the RCE step does not apply (GHSA-j6wc). On ACME, eab_policy set to always-required closes the first step; OpenBao's BAO_DISABLE_PUBLIC_ACME=true forces it on every mount.

The sources disagree on auto-unseal. HashiCorp says Vault clusters "using auto-unseal, or without a configured plugin directory, are not affected" by the RCE step. ControlPlane shows that on OpenBao an attacker can set up Shamir keys and migrate the seal, so auto-unseal does not stop it there. Neither speaks about the other product, so treat auto-unseal as narrowing the risk, not removing it.

OpenBao gives away namespaces and HSM unseal that Vault keeps in Enterprise

OpenBao's free release includes features that Vault sells: namespaces since 2.3.1 in June 2025, read-scaling standby nodes since 2.5.0, PKCS#11 HSM auto-unseal and per-namespace sealing since 2.6.0, and in 2.7.0 control groups and ML-DSA post-quantum signatures in PKI and Transit. In Vault, namespaces need an Enterprise licence or HCP, and PKCS#11 auto-unseal requires Vault Enterprise.

That is why the namespace step in this chain hit OpenBao's free users but only Vault Enterprise. Adoption has followed the free features: GitLab's Secrets Manager, generally available since GitLab 19.5 in October 2026, is built on OpenBao, and NVIDIA is on OpenBao's adopters list.

Vault keeps replication, Sentinel and 23 storage backends

Vault Enterprise has what OpenBao does not: performance and disaster-recovery replication, Sentinel policies, Secrets Sync, the Transform and KMIP engines, and FIPS 140-3 builds; the OpenBao project ships none of them, though ControlPlane's paid edition offers FIPS. OpenBao's compatibility policy says some of these are "impossible to do without reverse engineering Vault Enterprise". A team that uses any of them has no in-place path to OpenBao.

Storage is the other gap. Vault documents 23 backends, from Consul and DynamoDB to S3 and etcd; OpenBao 2.7 documents four, and its docs recommend PostgreSQL as "an easier storage backend to safely operate than Raft". A Vault on Consul or DynamoDB has to move to Raft before it can move to OpenBao.

A move from Vault to OpenBao touches storage, tokens, plugins and Kubernetes

OpenBao's in-place migration guide joins OpenBao nodes to a Vault Raft cluster one follower at a time. It was tested only from Vault 1.14.1 with Shamir unseal, and says: "Newer versions are untested and unsupported: OpenBao makes no guarantees about storage compatibility with Vault." Every Vault since then is outside that test, so rehearse on a snapshot copy.

What else changes:

  • Tokens. New tokens lose Vault's hvs. prefix. Old tokens work until their TTL; secret scanners and log redaction that match hvs. stop matching.
  • Plugins. Mounts whose plugin OpenBao does not ship are skipped at startup, and reads return "No value found". LDAP, Kerberos and RADIUS moved out of core in 2.7.0. List mounts with vault secrets list and vault auth list first.
  • CLI. The binary is bao, and BAO_ variables fall back to VAULT_.
  • Terraform and OpenTofu. OpenBao has no provider of its own. People point the hashicorp/vault provider at it, which only third parties report testing.
  • Kubernetes. The OpenBao Helm chart 0.30.4 still uses HashiCorp's vault-k8s image for the agent injector, so existing annotations keep working. Its CSI provider is OpenBao's own. External Secrets Operator lists its OpenBao provider as alpha, tested with OpenBao 2.2.0.

No source documents a path back from OpenBao to Vault.

Rotate the copies, not only the vault, after a compromise

Code running on an unsealed Vault or OpenBao node can read everything that node decrypts, so treat a compromised cluster as having leaked every secret in it. Neither project publishes a rotation playbook for this chain. Inside the server: rotate and rekey (vault operator rotate, vault operator rekey), revoke tokens and leases, reissue PKI roots and intermediates, rotate Transit keys and the root credentials of database and cloud engines.

The secrets also live in copies outside it. Agent sidecars and CSI mounts hold them in pods, Vault Secrets Operator and External Secrets Operator copy them into Kubernetes Secrets in etcd, Terraform writes the secrets it reads into state, and CI jobs fetch them on every run. Each copy has to be rotated at the source. On Stackness, Terraform is on 2 public stacks and Kubernetes on 1 as of 26 October 2026, bots removed (how I count); the DevOps and infrastructure tools show the rest of that slot.

Pick OpenBao if, pick Vault if

Pick OpenBao if:

  • you run Vault Community on Raft or PostgreSQL and use none of the Enterprise features
  • you want namespaces or HSM auto-unseal without an Enterprise contract
  • an MPL licence and a foundation-hosted project matter to your legal team
  • you can rehearse a migration from a Vault newer than the tested 1.14.1

Pick Vault if:

  • you use replication, Sentinel, Secrets Sync, Transform, KMIP or FIPS builds
  • your storage is Consul, DynamoDB, S3 or another backend OpenBao does not document
  • you want HCP Vault Dedicated as a managed service from IBM
  • you rely on Vault Secrets Operator, which I found no report of working against OpenBao

Whichever you run, upgrade first: OpenBao 2.7.1 or 2.6.4, Vault 2.2.1.

New posts by email

About one email a week with what we published. No account needed.

One email to confirm first. Every email has a one-click unsubscribe.

Which of these do you use?

Nobody on Stackness runs OpenBao yet. Tick what you use and be the first.

Lonny skating the lakeside path, kickflipping onto a bench, grinding it and flipping offStackness gamesPlay Lonny Eagle Amateur Skater 4A pixel art skateboarding game. Signing up opens it straight away.+2 secret games you unlock as you goSign up to play