Releases: openbao/openbao
Releases · openbao/openbao
Release list
v2.6.2
SECURITY
- core: Ensure internal operation types cannot be dispatched from inline authentication and workflows, preventing token creation. GHSA-rh46-vc3j-w2w3. [GH-3831]
- secrets/pki: Also enforce
allowed_ip_sans_cidron IP SANs from CSRs. GHSA-g892-p242-8g86. [GH-3833]
BUG FIXES
- command/agent: Fix file sink chown failing unconditionally on Windows. [GH-3733]
- core: Prevent recovered panic in request handler due to uncanceled active context between initialization and standby/active enablement. [GH-3623]
- core: Propagate requests with wrap info to the active node. [GH-3790]
- core/identity: Write OIDC default keys into per-namespace storage. [GH-3662]
- core/namespaces: Fix fatal failures writing default OIDC keys on standby nodes during namespace creation. [GH-3662]
- sys/raw: Propagate delete and write requests to the active node. [GH-3766]
- sys/leases: Propagate renew, revoke and revoke-prefix requests to the active node by default. [GH-3766]
- sys/quotas: Fix broken
enable_rate_limit_audit_loggingoption. [GH-3673] - sys/workflows: Allow unauthenticated workflow execution without authentication. [GH-3785]
- audit/http: Fix error wrapping in header parsing so the underlying cause is not lost. [GH-3746]
- ui: Fix client-side validation for auth/userpass user creation. [GH-3625]
What's Changed
- redo the client side validation for userpass (#3625 by @Luiggi33) backported by @phil9909 in #3677
- Improve stdout audit device description (#3620 by @thgoebel) backported by @phil9909 in #3678
- Add context cancellation to initialization (#3623 by @cipherboy) backported by @phil9909 in #3679
- Refactor api-docs into docs for better versions (v2.6.x) by @cipherboy in #3727
- Backport unauthed workflow configuration fixes (#3808 by @cipherboy and #3785 by @Luiggi33) backported by @cipherboy in #3809
- Fix missing OIDC default keys for namespaces (#3662 by @wslabosz-reply) backported by @cipherboy in #3802
- Propagate lease and sys/raw writes to leader node (#3766 by @wslabosz-reply) backported by @cipherboy in #3807
- Only attempt to change file sink ownership in agent when explicitly requested (#3733 by @chaehni) backported by @cipherboy in #3805
- Fix HMAC verification for non default algorithms (#3668 by @wslabosz-reply) backported by @cipherboy in #3803
- Fix error wrapping in HTTP audit device header parsing (#3746 by @sivapalan) backported by @cipherboy in #3806
- Fix
enable_rate_limit_audit_loggingnot working (#3673 by @phil9909) backported by @cipherboy in #3804 - Bump Go and dependencies on 2.6.x by @satoqz in #3811
- Fix malformed Packages.gz (#3826 by @satoqz) backported by @satoqz in #3827
- Propagate all wrapped-requested requests (#3790 by @wslabosz-reply) backported by @cipherboy in #3828
- Apply IP SANs filtering on CSRs (#3833 by @cipherboy) backported by @cipherboy in #3834
- Fix internal operation dispatch creating tokens (#3831 by @cipherboy) backported by @cipherboy in #3832
- Add changelog for v2.6.2 by @satoqz in #3830
Full Changelog: v2.6.1...v2.6.2
v2.6.1
CHANGES
- packaging/container: Revert removal of legacy, non-opencontainers image labels for maximum compatibility. [GH-3504]
IMPROVEMENTS
- core: Warn on
sys/key with no explicit invalidation handler; please report if you see a log line withno mechanism to invalidate cache. [GH-3555] - core/policies: Introduce PATCH operation support for modifying the values of specific parameters. [GH-3506]
BUG FIXES
- core/expiration: Ensure leases are not inadvertently cached on standby nodes. [GH-3555]
- core/policies: Allow removal of
expirationfrom policies on POST/PUT tosys/policies/acl/<name>by eliding the parameter; use PATCH to update policies without modifying unnecessary parameters. [GH-3506] - core/policies: Fix
limit=0and negative limits bypassing thepagination_limitACL option. [GH-3518] - core/policies: Fix persistence of new
allow_wildcards_in_identity_templates,allow_slashes_in_identity_templatesparameters in storage. [GH-3506] - auth/approle: Ensure initial salt is created without transaction to avoid deadlocks. [GH-3556]
- auth/jwt: Fix patch operation of CEL roles losing existing data (
bound_audiencesnot_before_leeway,clock_skew_leewayandexpiration_leeway). [GH-3551] - auth/token: Ensure salt cache is invalidated properly on standby nodes. [GH-3555]
- sdk/plugin: Ensure all log messages are visible under
plugin.ServeMultiplex(...)by default to align withplugin.Serve(...). [GH-3536] - sdk: Better support non-usr-merged distributions in containerized testing. [GH-3554]
- packaging/container: Ensure that labels on UBI-based images comply with Red Hat's certification requirements. [GH-3504]
What's Changed
- Set user=root when invoking OpenBao for Alpine (#3499 by @cipherboy) backported by @cipherboy in #3501
- Add OVHcloud KMS seal documentation (#3503 by @Sakutaroo) backported by @satoqz in #3524
- Restore container image labels & fix UBI-specific ones (#3504 by @pree) backported by @satoqz in #3525
- Fix policy persistence issue, introduce PATCH support for policies (#3506 by @cipherboy) backported by @phil9909 in #3538
- Allow all log messages in multiplexed plugins (#3536 by @cipherboy) backported by @phil9909 in #3537
- Fix limit=0 and negative limits bypassing pagination_limit ACL cap (#3518 by @RealFakeAccount) backported by @phil9909 in #3548
- Fix profile source headings, response field (#3550 by @cipherboy) backported by @phil9909 in #3553
- auth/jwt: fix patch operation of CEL roles lost data (#3551 by @phil9909) backported by @phil9909 in #3552
- Fix lease renewal cache invalidation (#3555 by @cipherboy) backported by @phil9909 in #3566
- Ensure AppRole salt is created without transaction (#3556 by @cipherboy) backported by @phil9909 in #3565
- Copy binary to additional path in test container (#3554 by @cipherboy) backported by @cipherboy in #3568
- Bump dependencies for v2.6.1 by @satoqz in #3570
- Add changelog for v2.6.1 by @satoqz in #3571
Full Changelog: v2.6.0...v2.6.1
v2.6.0
FEATURES
- Namespace Sealing: Allow Shamir seal configuration on namespace creation. [GH-3297]
- Partitions tenant storage with distinct cryptographic key material.
- Allows tenants to revoke access to their namespace via seal operation without impacting other tenants.
- Uses global synchronization of namespace seal status, allowing easier management from multi-node deployments.
- Auto Unseal plugins: Add a new
kmsplugin type that enables Auto Unseal mechanisms to be distributed as external binary plugins. [GH-2586]- Declaratively register KMS plugins via
plugin "kms" "name" { }stanzas in the server configuration, making"name"available as an Auto Unseal mechanism viaseal "name" { }. - KMS plugins automatically restart and recover from crashes, avoiding a full instance restart when a seal reaches a bad state (e.g., via a misbehaving PKCS#11 library).
- Pre-built plugins for many of the seals currently built into OpenBao are available at https://github.com/openbao/openbao-plugins. A plugin-based seal takes priority over a built-in seal if a matching plugin is installed. Note that several provider-specific built-in seals will be removed from OpenBao in v2.7.0 and remain available as external plugins only. Also see the deprecations section of these release notes.
- Develop custom Auto Unseal mechanisms tailored to your use case using the SDK.
- Declaratively register KMS plugins via
- Workflows: This adds new endpoints under
sys/workflowsto allow operators to create workflows and users to execute them.- Workflows allow the creation of simplified or managed interfaces over OpenBao's standard API.
- Use of the
allow_unauthenticated_workflowsserver configuration value enables unauthenticated execution of workflows; any dispatched requests still require authentication but this can be provided as a request parameter. - Workflows are built on the common profile engine powering declarative self-initialization and use the same syntax. [GH-2728]
- Authenticated root generation: New
/sys/generate-root-tokenendpoints are available as replacements for the deprecated unauthenticated ones. [GH-3041] - Distroless container images: This is a new container image variant based on distroless/static, available as
openbao-distroless. The only executable contained in these images is OpenBao itself. [GH-2592]
SECURITY
- command/agent: Ensure previously rendered secrets do not appear in stdout on failures. GHSA-444v-8vxr-p36h. [GH-3494]
- core/recovery: Use constant-time token comparison in recovery mode. GHSA-34fc-gh42-pj53. [GH-3388]
- core/policies: Prevent LIST operations bypassing
capabilities = ["deny"]from a more specific wildcard ACL grant. GHSA-xp3c-3jw3-4vcr. [GH-3389] - core/policies: If the value of a template expression contains a
+or*character, it will now be rejected by default. Setallow_wildcards_in_identity_templates = trueto overwrite. GHSA-59w7-v8rr-pr4p. [GH-3401] - core/policies: If the value of a template expression contains a
/character, it will now be rejected by default. Setallow_slashes_in_identity_templates = trueto overwrite. GHSA-59w7-v8rr-pr4p. [GH-3401] - secret/pki: If the value of a template expression in
allowed_uri_sans_templateandallowed_domainscontains a*character, it will now be rejected by default. Setallow_globs_in_identity_templates = trueto overwrite. GHSA-59w7-v8rr-pr4p. [GH-3401] - secret/ssh: If the value of a template expression in
allowed_usersorallowed_domainscontains a,character, it will now be rejected by default. Setallow_commas_in_identity_templates = trueto overwrite. GHSA-59w7-v8rr-pr4p. [GH-3401]
IMPROVEMENTS
- command: Allow overriding the location of
~/.vault-tokenvia theBAO_TOKEN_PATHenvironment variable. [GH-2706] - command/server: Error when unknown keys are present in the declarative self-initialization configuration. [GH-2883]
- command/server: Add CEL support to self-initialization, allowing finer control over structuring requests. [GH-2671]
- command/server: Add
text/templatesupport to self-initialization, allowing templating of values from other requests/responses. [GH-2727] - command/server: Allow conditional execution of self-initialization requests with
whenkeyword. [GH-2739] - command/server: Allow self-initialization stanzas in development server mode. [GH-2463]
- command/server: Allow setting headers on declarative self-initialization requests. [GH-2737]
- command/agent: Add
uidandgidconfiguration options for thefilesink. [GH-2851] - command/agent:
SIGHUPnow reloads the client TLS configuration. [GH-3038] - command/login: Support Kubernetes service account token authentication via
-method=kuberneteswith both interactive and non-interactive modes. [GH-1891] - http: Always include full JSON parse and complexity errors in the response instead of hiding it behind a constant error message. [GH-3240]
- http: Ensure that
passthrough_request_headerscan pass theHostheader to plugins. [GH-3325] - core: The
sys/backend is now a singleton shared across all namespaces, reducing idle memory usage of the OpenBao instance. [GH-3007] - core/leases: Lease lookup responses will now include
path,namespace_pathandrevoke_error. [GH-1906] - core/listeners: Add a parameter to allow cross-origin requests to include credentials (
Access-Control-Allow-Credentialsheader). [GH-2262] - core/profiles: Canonicalize headers before evaluating request. [GH-3465]
- core/profiles: Parse login MFA from request header information. [GH-3465]
- seal/azurekeyvault: Support explicitly setting Azure authentication methods and add support for authenticating using Azure managed identities. [GH-2519]
- seal/pkcs11: When using public/private key encryption, fall back to finding the public key via the private key's
CKA_IDif both key halves did not share the sameCKA_LABEL. [GH-3231] - physical/raft: Detect, log, and rollback transactions that have never been committed or rolled-back. If you see the message "transaction was leaked" in your logs, please open an issue. [GH-2185]
- physical/raft: Improve snapshot duration while slightly increasing snapshot size. [GH-3061]
- physical/raft: Support
auto_joinvia DNSSRVrecords. [GH-3397] - auth/cert: Add support for
X-Tls-Client-Cert, to allow processing of a leaf certificate forwarded from a TLS-terminating reverse proxy. [GH-2080] - auth/jwt: Add new Kubernetes JWT provider that authenticates to the Kubernetes API using a pod's service account token. [GH-2114]
- auth/kerberos: Add the
decode_pacoption in order to improve compatibility with Kerberos systems. [GH-2211] - auth/userpass: Add
password_hashfield to allow providing a pre-hashed bcrypt password instead of plaintext. [GH-2702] - secrets/pki: Add encode_json and decode_json CEL helpers. [GH-1549]
- secrets/totp: Add
generated,expire_time, andperiodfields to code generation response. [GH-2585] - secrets/ssh: Search for public and private key files if
-public-key-pathand-private-key-pathflags aren't given, respectively. [GH-2419] - database/mysql: Add multi-host connection failover support. Connection URLs can now specify multiple hosts (e.g.,
tcp(host1:3306,host2:3306)) for automatic failover when a host becomes unavailable. [GH-2312] - api, sdk: Add additional constants for commonly used headers. [GH-2323]
- api: Add
ClientCertBytesandClientKeyBytesas possible in-memory cert contents inTLSConfig. [GH-2798] - api: Add first-class support for
/sys/namespacesAPIs via.Sys().CreateNamespace(...)& co. [GH-2955] - api: Add methods ...
v2.6.0-beta20260622
FEATURES
- Namespace Sealing: Allow Shamir seal configuration on namespace creation. [GH-3297]
- Partitions tenant storage with distinct cryptographic key material.
- Allows tenants to revoke access to their namespace via seal operation without impacting other tenants.
- Uses global synchronization of namespace seal status, allowing easier management from multi-node deployments.
- Auto Unseal plugins: Add a new
kmsplugin type that enables Auto Unseal mechanisms to be distributed as external binary plugins. [GH-2586]- Declaratively register KMS plugins via
plugin "kms" "name" { }stanzas in the server configuration, making"name"available as an Auto Unseal mechanism viaseal "name" { }. - KMS plugins automatically restart and recover from crashes, avoiding a full instance restart when a seal reaches a bad state (e.g., via a misbehaving PKCS#11 library).
- Pre-built plugins for many of the seals currently built into OpenBao are available at https://github.com/openbao/openbao-plugins. A plugin-based seal takes priority over a built-in seal if a matching plugin is installed. Note that several provider-specific built-in seals will be removed from OpenBao in v2.7.0 and remain available as external plugins only. Also see the deprecations section of these release notes.
- Develop custom Auto Unseal mechanisms tailored to your use case using the SDK.
- Declaratively register KMS plugins via
- Workflows: This adds new endpoints under
sys/workflowsto allow operators to create workflows and users to execute them.- Workflows allow the creation of simplified or managed interfaces over OpenBao's standard API.
- Use of the
allow_unauthenticated_workflowsserver configuration value enables unauthenticated execution of workflows; any dispatched requests still require authentication but this can be provided as a request parameter. - Workflows are built on the common profile engine powering declarative self-initialization and use the same syntax. [GH-2728]
- Authenticated root generation: New
/sys/generate-root-tokenendpoints are available as replacements for the deprecated unauthenticated ones. [GH-3041] - Distroless container images: This is a new container image variant based on distroless/static, available as
openbao-distroless. The only executable contained in these images is OpenBao itself. [GH-2592]
IMPROVEMENTS
- command: Allow overriding the location of
~/.vault-tokenvia theBAO_TOKEN_PATHenvironment variable. [GH-2706] - command/server: Error when unknown keys are present in the declarative self-initialization configuration. [GH-2883]
- command/server: Add CEL support to self-initialization, allowing finer control over structuring requests. [GH-2671]
- command/server: Add
text/templatesupport to self-initialization, allowing templating of values from other requests/responses. [GH-2727] - command/server: Allow conditional execution of self-initialization requests with
whenkeyword. [GH-2739] - command/server: Allow self-initialization stanzas in development server mode. [GH-2463]
- command/server: Allow setting headers on declarative self-initialization requests. [GH-2737]
- command/agent: Add
uidandgidconfiguration options for thefilesink. [GH-2851] - command/agent:
SIGHUPnow reloads the client TLS configuration. [GH-3038] - command/login: Support Kubernetes service account token authentication via
-method=kuberneteswith both interactive and non-interactive modes. [GH-1891] - http: Always include full JSON parse and complexity errors in the response instead of hiding it behind a constant error message. [GH-3240]
- http: Ensure that
passthrough_request_headerscan pass theHostheader to plugins. [GH-3325] - core: The
sys/backend is now a singleton shared across all namespaces, reducing idle memory usage of the OpenBao instance. [GH-3007] - core/leases: Lease lookup responses will now include
path,namespace_pathandrevoke_error. [GH-1906] - core/listeners: Add a parameter to allow cross-origin requests to include credentials (
Access-Control-Allow-Credentialsheader). [GH-2262] - seal/azurekeyvault: Support explicitly setting Azure authentication methods and add support for authenticating using Azure managed identities. [GH-2519]
- seal/pkcs11: When using public/private key encryption, fall back to finding the public key via the private key's
CKA_IDif both key halves did not share the sameCKA_LABEL. [GH-3231] - physical/raft: Detect, log, and rollback transactions that have never been committed or rolled-back. If you see the message "transaction was leaked" in your logs, please open an issue. [GH-2185]
- physical/raft: Improve snapshot duration while slightly increasing snapshot size. [GH-3061]
- auth/cert: Add support for
X-Tls-Client-Cert, to allow processing of a leaf certificate forwarded from a TLS-terminating reverse proxy. [GH-2080] - auth/jwt: Add new Kubernetes JWT provider that authenticates to the Kubernetes API using a pod's service account token. [GH-2114]
- auth/kerberos: Add the
decode_pacoption in order to improve compatibility with Kerberos systems. [GH-2211] - auth/userpass: Add
password_hashfield to allow providing a pre-hashed bcrypt password instead of plaintext. [GH-2702] - secrets/pki: Add encode_json and decode_json CEL helpers. [GH-1549]
- secrets/totp: Add
generated,expire_time, andperiodfields to code generation response. [GH-2585] - secrets/ssh: Search for public and private key files if
-public-key-pathand-private-key-pathflags aren't given, respectively. [GH-2419] - database/mysql: Add multi-host connection failover support. Connection URLs can now specify multiple hosts (e.g.,
tcp(host1:3306,host2:3306)) for automatic failover when a host becomes unavailable. [GH-2312] - api, sdk: Add additional constants for commonly used headers. [GH-2323]
- api: Add
ClientCertBytesandClientKeyBytesas possible in-memory cert contents inTLSConfig. [GH-2798] - api: Add first-class support for
/sys/namespacesAPIs via.Sys().CreateNamespace(...)& co. [GH-2955] - api: Add methods to list and scan keys to the KVv1 and KVv2 client. [GH-3220]
- api: Allow disabling automatic configuration from environment variables in the API client via a
DisableEnvironmentfield onConfigand aNewConfigconstructor to create clean client configurations. [GH-2834] - sdk/helper/consts: Add
AllowedJWTSignatureAlgorithmsEAB. [GH-2464] - ui: Add
lang="en"attribute tohtmltag. [GH-2580] - ui: Update EmberJS to v4.12 LTS. [GH-2653]
CHANGES
- command: Remove buffering and delayed release of logs during startup phase of
server,agent,proxy&debugsubcommands. This includes the removal of the undocumented and hidden-disable-gated-logsflag. [GH-2620] - command:
operator generate-rootnow uses the authenticated/sys/generate-root-tokenendpoints instead of the deprecated/sys/generate-rootendpoints. [GH-3190] - core:
net/http.ServeMuxin Go 1.26 now uses a 307 redirect instead of a 301 redirect when given a bare path which doesn't exist in the multiplexer but which a path with a trailing slash exists for. This causes somePOST/PUToperations to fail with a 400 instead of 404, as OpenBao does not allow writes to paths ending in a slash. See also: https://go.dev/doc/go1.26. [GH-3072] - core/identity: Remove corrupt namespace identity groups created prior to v2.5.0 during unseal; affected groups must be recreated by an administrator. Check for
deleting corrupt groupin server startup logs. [GH-2454] - sys/init, sys/rekey/init: The
stored_sharesparameter was removed and will now be ignored. [[GH-2662](https://github.com/ope...
v2.5.5
SECURITY
- auth/ldap: Prevent unlikely post-bind LDAP injection via bind DN to group resolution. GHSA-6mwx-4547-5vc9. [GH-3306]
- secrets/ldap: Prevent potential LDAP injection with unsanitized DNs for service accounts. GHSA-6mwx-4547-5vc9. [GH-3306]
- secrets/transit: Prevent server crash due to unlock of unlocked mutex for RSA keys created with
derived=true. GHSA-8w8f-r2xv-4q4j. [GH-3309] - core/leases: Fix unauthorized cross-namespace lease revocation via leaked lease identifiers. GHSA-c36x-h252-g9x2. [GH-3307]
- core/namespaces: Fix namespace path canonicalization of "root" enabling unauthorized operations on the parent namespace. GHSA-mwr2-wmgp-crj6. [GH-3308]
BUG FIXES
- core/ha: Return to read-enabled standby mode instead of read-disabled standby mode after stepping down from active mode when standby reads are enabled. This also fixes SIGHUPs crashing standby nodes if they've previously stepped down from active. [GH-3223]
- auth/mfa: Correctly forward two-phase MFA validations on standby nodes. [GH-3246]
- sys/namespaces: Support clearing a namespace's
custom_metadataby providing a patch that setscustom_metadatatonullat the top-level. [GH-3273] - sys/plugins: Fix
/sys/plugins/catalogand/sys/plugins/catalog/<type>not returning versioned plugins. [GH-3186]
What's Changed
- fix: versioned plugins missing in catalog response (#3186 by @phil9909) backported by @phil9909 in #3219
- Replace zlint Docker container with go run (#3187 by @tsaarni) backported by @phil9909 in #3227
- fix two-phase MFA failure on standby node (#3246 by @phil9909) backported by @phil9909 in #3248
- Close the HA loop (#3223 by @satoqz) backported by @phil9909 in #3247
- Refactor namespace patch & support top-level clear (#3273 by @satoqz) backported by @satoqz in #3279
- Remove expired certs in cassandra tests (#3256 by @tsaarni) backported by @satoqz in #3278
- v2.5.5 dependency bumps by @satoqz in #3303
- Fix panic due to unlock of unlocked mutex in Transit (#3309 by @cipherboy) backported by @cipherboy in #3312
- Fix LDAP bind DN lookups in auth, secrets engine (#3306 by @cipherboy) backported by @cipherboy in #3313
- Fix namespace path canonicalization (#3308 by @satoqz) backported by @satoqz in #3311
- Fix cross-namespace lease lookup routing (#3307 by @satoqz) backported by @satoqz in #3310
- Add changelog for v2.5.5 by @satoqz in #3314
Full Changelog: v2.5.4...v2.5.5
v2.5.4
SECURITY
- core/auth: Fix audit logs dropping custom headers when using inline auth. GHSA-q8cj-789h-vg24 / CVE-2026-46358. [GH-3076]
- core: Prevent hidden default token issuance from auth plugin endpoints returning both a
logical.Auth{}response object and an error. GHSA-7j6w-vvw2-5f9c / CVE-2026-46405. [GH-3150] - core: Remove legacy lease endpoints (
sys/revoke,sys/renew,sys/revoke-prefix, andsys/revoke-force) due to cross-namespace lease modification. GHSA-v8v8-cm84-m686 / CVE-2026-45808. [GH-3152]
IMPROVEMENTS
- storage/postgresql: Set constraint name to
table+"_pkey"andha_table+"_pkey"and index totable+"_idx"for uniqueness when reusing the same database partition for multiple OpenBao instances. [GH-2876]
BUG FIXES
- auth/kerberos: Do not return
logical.Auth{}response during initial negotiation at the same time as an error. [GH-3150] - core/mfa: Handle invalidation for login MFA, ensuring standby nodes respond appropriately on writes. [GH-3083]
- core/policies: Fix
list_scan_response_keys_filter_pathincorrectly erring on empty list responses. [GH-3063] - core/quotas: Correctly handle default rate limit exempt paths on quota configuration invalidation. [GH-2953]
- core: Disallow logical secret engines from creating authentication tokens. [GH-3087]
- core: Forward generate-root, step-down and rekey requests to active node to resolve inconsistent standby behavior. [GH-3006]
- storage/raft: Wait for autopilot shutdown to avoid panic when racing to retrieve known servers. [GH-3054]
- storage/postgresql: Revert accidental rename of
ha_tableoption tohaTable. Both spellings are now supported to retain compatibility, thoughha_tabletakes precedence. [GH-2876]
What's Changed
- Remove 2.5.x community docs by @cipherboy in #3071
- Disallow non-auth plugins from creating tokens (#3087 by @cipherboy) backported by @phil9909 in #3112
- Handle invalidation of LoginMFA keys (#3083 by @cipherboy) backported by @phil9909 in #3113
- Fix audit logs dropping custom headers when using inline auth (#3076 by @jackyliao123) backported by @phil9909 in #3114
- fix: nil-guard d.autopilot before calling GetState (#3054 by @mpldr) backported by @phil9909 in #3115
- fix: Fix request handling filtering for the no data case (#3063 by @eklatzer) backported by @phil9909 in #3116
- Update vulnerable deps before 2.5.4 by @cipherboy in #3121
- Fix cache invalidation memory leak (#3105 by @cipherboy) backported by @phil9909 in #3131
- Use unique constraints, indices in PostgreSQL storage (#2876 by @cipherboy) backported by @phil9909 in #3132
- Correctly handle default_rate_limit_exempt_paths_toggle invalidation (#2953 by @cipherboy) backported by @phil9909 in #3134
- Fix
/v1/sys/forwarding regressions for standby instances (#3006 by @tsaarni) backported by @phil9909 in #3133 - Remove legacy cross-namespace lease endpoints (#3152 by @cipherboy) backported by @cipherboy in #3153
- Prevent errors from creating orphaned tokens (#3150 by @cipherboy) backported by @cipherboy in #3151
- Add release notes for v2.5.4 by @satoqz in #3154
Full Changelog: v2.5.3...v2.5.4
v2.5.3
SECURITY
- auth/cert: Prevent token renewal with different-but-valid certificate. GHSA-7ccv-rp6m-rffr / CVE-2026-39388. [GH-2932]
- auth/token: Prevent cross-namespace token renewal, revocation by accessor. GHSA-p49j-v9wc-wg57 / CVE-2026-40264. [GH-2934]
- core: Disallow
sys/generate-root/*by default due to unauthenticated cancellation; usedisable_unauthed_generate_root_endpoints=falseto temporarily re-enable. Upstream HCSEC-2026-08 / CVE-2026-5807. [GH-2912] - core: Forbid request path traversal using
.and..segments by default. If required, set theunsafe_relative_paths. Upstream HCSEC-2026-05 / CVE-2026-3605. [GH-2910] - core/plugins: Validate and restrict downloaded plugin binary size from OCI images; set
plugin_download_max_sizeto limit the size (defaults to 512MB). GHSA-r65v-xgwc-g56j / CVE-2026-39396. [GH-2941] - core/namespaces: Ensure lease revocation on namespace re-deletion. GHSA-vv66-6rp4-wr4f. [GH-2935]
- database/postgresql: Correctly quote schema name in revoke statement. GHSA-6vgr-cp5c-ffx3 / CVE-2026-39946. [GH-2931]
BUG FIXES
- command/server: Refuse repeated startup if self-initialization failed on initial run. [GH-2908]
- core: Fix namespace invalidation on standby when disable_cache=true is set. [GH-2822]
- core: Loosen overly strict check for view path check, strictly forbidding
..as a substring within path segments. [GH-2910] - secret/database, secret/openldap, secret/rabbitmq: Fix dynamic secret requests failing with an "Internal Server Error" on standby nodes [GH-2853]
What's Changed
- Add note for direct install using the Arch Linux package manager (#2718 by @hashworks) backported by @hashworks in #2719
- fix: some dynamic secret engines did not forward the request to the primary (#2853 by @phil9909 ) backported by @phil9909 in #2855
- Fix namespace invalidation without caching (#2822 by @cipherboy) backported by @phil9909 in #2856
- Make self-init failures fatal (#2908 by @satoqz & #2195 @KrzysztofKornalewski-Reply) backported by @satoqz in #2924
- v2.5.3 dependency bumps by @satoqz in #2907
- Forbid path traversal by default (#2910 @cipherboy) backported by @satoqz in #2929
- Check certificate match during renewal (#2932 by @cipherboy) backported by @satoqz in #2937
- Correctly quote schema name in PostgreSQL revoke (#2931 by @cipherboy) backported by @satoqz in #2938
- Prevent cross-namespace token accessor use (#2934 by @cipherboy) backported by @satoqz in #2939
- Additional v2.5.3 dependency bumps by @satoqz in #2930
- Ensure lease revocation on namespace re-deletion (#2935 by @cipherboy) backported by @satoqz in #2943
- Validate downloaded plugin binary size (#2941 by @JanMa) backported by @satoqz in #2944
- Forbid generate-root by default (#2912 by @cipherboy) backported by @cipherboy in #2945
- Add release notes for v2.5.3 by @satoqz in #2946
Full Changelog: v2.5.2...v2.5.3
v2.5.2
SECURITY
- auth/jwt: Prevent XSS via
error_descriptionparameter incallback_mode=directauth methods. CVE-2026-33758. [GH-2709] - auth/jwt: Prompt for confirmation during direct callback mode to authorize OpenBao token issuance. CVE-2026-33757. [GH-2710]
BUG FIXES
- command: External token helpers now inherit environment variables from the parent process. [GH-2570]
- core/metrics: Fix count of leases/tokens/kv-secrets/entities metric not being emitted. [GH-2672]
- core/mounts, core/namespaces: Fix lock ordering in mount deletion racing against namespace updates, causing deadlocks. [GH-2625]
- core/seal: Fix
/sys/rotate/rootcall rotating both root key and unseal key when using a Shamir Seal, losing all key shares. [GH-2619] - core: Skip re-scheduling lease expiration jobs that need to write to storage when a node unseals in read-only mode. [GH-2549]
- core: Fix potential deadlock in JobManager, which can cause mount deletion timeouts. [GH-2630]
- http: Forward help requests to active node when unable to handle them on standby with read requests handling disabled. [GH-2572]
- identity/oidc: Fix OIDC named key rotation silently skipping in non-root namespaces due to double namespace prefix in storage path lookup. [GH-2669]
- raft: Propagate peer join/remove/promote/demote and autopilot read/update requests to active node. [GH-2574]
What's Changed
- Bump github.com/bgentry/speakeasy to v0.2.0 (#2535 by @agrimault-dinum) backported by @agrimault-dinum in #2545
- Fix expired test certificates (#2552 by @satoqz) backported by @phil9909 in #2631
- Skip lease restoration on standby nodes (#2549 by @wslabosz-reply) backported by @phil9909 in #2632
- Pass full environment to token helper (#2570 by @satoqz) backported by @phil9909 in #2633
- Handle help requests on standby nodes when reads are disabled (#2572 by @wslabosz-reply) backported by @phil9909 in #2634
- Don't iterate namespaces on mount deletion (#2625 by @satoqz) backported by @phil9909 in #2635
- fix race condition in jobmanager (#2630 by @phil9909) backported by @phil9909 in #2636
- Bump github.com/cloudflare/circl to v1.6.3 (#2577 by @satoqz) backported by @satoqz in #2652
- Fix root key rotation endpoint rotating Shamir's KEK (#2619 by @wslabosz-reply) backported by @satoqz in #2650
- Bump to Go 1.25.8 (#2609 by @satoqz) backported by @satoqz in #2651
- Forward raft autopilot operations (#2574 by @wslabosz-reply) backported by @satoqz in #2659
- Fix regression in OIDC named key rotation (#2669 by @JAYKRISHNAN) backported by @phil9909 in #2694
- Fix missing
emitMetricsActiveNodemetrics (#2672 by @wslabosz-reply) backported by @satoqz in #2697 - Resolve GHSA-cpj3-3r2f-xj59 (#2709 by @gianklug) by @cipherboy in #2711
- Resolve GHSA-7q7g-x6vg-xpc3 (#2710 by @gianklug) by @cipherboy in #2713
- Add changelog for v2.5.2 by @cipherboy in #2715
Full Changelog: v2.5.1...v2.5.2
v2.5.1
SECURITY
- Build with Go 1.25.7 to resolve CVE-2025-68121 / GO-2026-4337. [GH-2426]
- Bump go.opentelemetry.io/otel/sdk to 1.40.0 to resolve CVE-2026-24051 / GO-2026-4394 / GHSA-9h8m-3fm2-qjrq. [GH-2518]
BUG FIXES
- seal: Fix Auto Unseal failing when upgrading to v2.5.0 or downgrading from v2.5.0 to an earlier version. This affected the following providers: AliCloud KMS, AWS KMS, Azure Key Vault, GCP Cloud KMS & OCI KMS. [GH-2505]
- core/mounts: Don't attempt to upgrade legacy mount tables when in read-only standby mode. [GH-2467]
- core/expiration: Fix total lease count not being decremented when revoking irrevocable leases. [GH-2414]
- pki: Fix "context canceled" issue when processing cache invalidation, leading to pki returning 500 until reload. [GH-2472]
- command: Fix panic when the home directory cannot be trivially deduced via environment variables. [GH-2446]
CHANGES
- core/identity: Remove pre-v2.5.0 corrupt namespace identity groups during unseal; corrupt groups need to be recreated by an admin. Check for
deleting corrupt groupin server startup logs. [GH-2454]
What's Changed
- Document installing with native package managers on Linux by @DrDaveD in #2431
- Bump Go to 1.25.7 (#2426 by @satoqz) backported by @satoqz in #2451
- docs(snapshot): add kubernetes snapshot cronjob example (#2276 by @eyenx) backported by @satoqz in #2450
- Internalize github.com/mitchellh/go-homedir (#2446 by @satoqz) backported by @satoqz in #2453
- Fix extraneous grpclogfaker logging (#2443 by @cipherboy) backported by @satoqz in #2452
- Don't upgrade mount table in standby mode (#2467 by @satoqz) backported by @phil9909 in #2502
- fix decrement of total lease count after irrevocable revocation and add tests to check it (#2414 by @driif) backported by @phil9909 in #2503
- docs: add hash parameter (#2474) by @phil9909 in #2504
- pki: fix "context canceled" issue when processing cache invalidation (#2472 by @phil9909) backported by @phil9909 in #2501
- Bump go-kms-wrapping to v2.7.0 (#2505 by @satoqz) backported by @satoqz in #2507
- Bump go.opentelemetry.io/otel/sdk from 1.39.0 to 1.40.0 (#2518) backported by @satoqz in #2527
- purge corrupt groups during unseal (#2454 by @phil9909) backported by @satoqz in #2529
- Ensure identity groups, entities deleted on actives (#2531 by @cipherboy) backported by @cipherboy in #2532
- Add changelog for v2.5.1 by @satoqz in #2511
Full Changelog: v2.5.0...v2.5.1
v2.5.0
Tip
This release adds support for horizontal read scalability!
SECURITY
- core/sys: BREAKING: default value of
disable_unauthed_rekey_endpointsistrue, to continue using unauthed rekey endpoints, setdisable_unauthed_rekey_endpoints=falsein listeners explicitly. [GH-2125]
CHANGES
- Remove the deprecated
creation_statements,revocation_statements,rollback_statements, andrenew_statementsfields from the dbpluginStatementsprotobuf message [GH-1962] - api: The deprecated api.MountConfigOutput.PluginName field was removed. This was already always empty. [GH-2036]
- auth/jwt: Return error msg on
OIDCDiscoveryURLincluding.well-known/openid-configurationcomponent. [GH-2066] - core/audit: removed
jsonxas a output format option for audit mounts [GH-2047] - sys/host-info: This endpoint may start reporting slightly higher memory usage than before (On Linux only). See https://github.com/shirou/gopsutil/releases/tag/v4.25.8 for more information. [GH-1887]
FEATURES
- Add declarative plugin distribution via OCI images: using the
pluginconfiguration keyword.- Plugins can be automatically downloaded via the
plugin_auto_download=trueoption. - Plugins can be manually downloaded via the
bao plugin initcommand. - Plugins can be automatically registered via the
plugin_auto_register=trueoption, regardless if they were manually provisioned or from OCI images. [GH-1824]
- Plugins can be automatically downloaded via the
- Support Horizontal Read Scalability: all existing HA standby nodes are automatically upgraded with read support.
- Requests which only perform storage read operations will be handled locally on the standby node.
- Requests which perform a storage write operation (or as indicated by plugins) are forwarded to the active leader.
- Results are eventually consistent: a write may not be immediately visible on the standby.
- To disable, set
disable_standby_reads=truein the config file before startup. [GH-1986]
- OIDC Provider: Add Client Credentials flow to OIDC Provider. [GH-1732]
- sdk/framework: add
Response.SchemaNameto allow custom response schema names in the generated OpenAPI spec. [GH-1714]
IMPROVEMENTS
- audit: Add http audit device for low-volume, webhook-based audit event reporting. [GH-1709]
- auth/jwt: Add type checking to role. [GH-1854]
- command: Add environment variables to provide configuration for Proxy, Agent, and
bao operator migrateviaBAO_PROXY_CONFIG_PATH,BAO_AGENT_CONFIG_PATH, andBAO_MIGRATE_CONFIG_PATH. [GH-2153] - command: Support
BAO_CONFIG_PATHinplugin init, just likeserver&c do. [GH-2164] - command:
server,operator diagnoseand 'operator validate-config` now support the environment variable BAO_CONFIG_FILE for the -config command option. [GH-2115] - core/metrics: Support custom path for metrics on metrics-only listeners. [GH-1853]
- core/namespaces: Use JobManager for namespace deletion, decreasing lock contention. [GH-2226]
- core/policies: Add endpoint to allow detailed listing of a subset of policies. [GH-1965]
- core/policies: Use per-namespace write lock, improving parallelism. [GH-2226]
- core: Added
metrics_onlyanddisallow_metricsoptions to control metrics endpoint exposure on a per-listener basis. [GH-1834] - database/valkey: Adds the ability to configure the Valkey database connection using a single connection_url parameter. [GH-1923]
- database: all database plugins now ignore "not found" errors on revoke by default. See Plugin Author Guide for rationale. [GH-2101]
- openapi: Add response schemas for token store operations and update operation suffixes. [GH-1840]
- pki: add
allowed_ip_sans_cidrparameter to PKI role system, to provide additional checks for IP SANs. [GH-1833] - storage/postgresql: implement
physical.FencingHABackendto minimize chances that writes on secondary nodes occur. [GH-1571] - transit: Add associated_data parameter to generate data key. [GH-1828]
- website: Add an example of current role statement from Valkey. [GH-1811]
DEPRECATIONS
- core/seal: Remove the undocumented "aead" seal mechanism. Consider switching to the static seal instead as a replacement. [GH-1910]
- core: Removed
FeatureFlagsparsing and related code. [GH-2045] - sdk: Removed
sdk/v2/helper/licensepackage. [GH-2045] - ui: Removed
internal/ui/feature-flagsendpoint and all its usage. [GH-2045]
BUG FIXES
- agent/auth: Fix token reissue error with kerberos method. [GH-2373]
- auth/jwt: Fix ordering of variable declarations in CEL program roles. [GH-1854]
- core/identity: Ensure periodic func only operates on a single namespace at a time, decreasing storage contention. [GH-2226]
- core/identity: fix corrupt data being stored when referencing
member_group_idsacross namespaces (requiresunsafe_cross_namespace_identity=true) [GH-2321] - core/namespaces: Ensure namespace creation is interruptable, allowing namespace deletion for cleanup. [GH-2226]
- core/namespaces: Fix deadlock on namespace creation, deletion due to transaction/lock ordering. [GH-2226]
- core/namespaces: Fix storage failures in namespace creation leading to a total system deadlock. [GH-2166]
- core/namespaces: improve recovery from partial deletion of namespaces, preventing server startup failure. [GH-2188]
- database/valkey: The creation_statements parameter now correctly accepts a standard array of strings for ACL rules (e.g.,
["+@read", "~*"]). Previously, it incorrectly required a stringified JSON array. The old format is still supported for backward compatibility. [GH-1959] - helper/jobmanager: Fix queue length metrics to report as gauges. [GH-2226]
- physical/postgresql: ensure underlying HA lock removal from database causes lock loss, write failures. [GH-2100]
- raft: return correct raft leader id from read replica nodes when using
bao operator raft list-peers. [GH-2331] - sdk/logical: Use created transaction for
WithTransactioncallback. [GH-2226] - secrets/pki: Fix ordering of variable declarations in CEL program roles. [GH-1854]
What's Changed over Beta
- Fix audit log configuration on active node (#2169 by @cipherboy) backported by @phil9909 in #2170
- backport: detect platform to download correct OCI image variant (#2183 by @JanMa) backported by @JanMa in #2186
- Fix standby namespace deletion (#2188 by @cipherboy) backported by @phil9909 in #2206
- Update go-kms-wrapping/wrappers/static (#2292 by @JanMa) backported by @satoqz in #2297
- Support BAO_CONFIG_PATH in plugin init (#2164 by @satoqz) backported by @phil9909 in #2304
- Fix deadlock in transactional namespace creation (#2166 by @satoqz) backported by @phil9909 in #2303
- Add BAO_{AGENT,PROXY,MIGRATE}_CONFIG_PATH variables (#2153 by @kyounghunJang) backported by @satoqz in #2306
- Fix incorrectly returned leader nodes from read replicas (#2331 by @phyrog) backported by @phyrog in #2334
- Fix timing issue in runAutoseal test function (#2335 by @phyrog) backported by @phyrog in #2348
- Forward secret mount disable request (#2357 by @wslabosz-reply) backported by @phil9909 in #2359
- Fix cross namespace identity corrupts data (#2321 by @phil9909) backported by @phil9909 in https://github.com/openbao/openbao/pu...