OpenBao AWS Plugin
CVE-2025-59048
HIGH
Severity by source
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
Network auth endpoint with attacker-held IAM role gives AV:N/PR:L; AC:H because a trusted/untrusted role-name collision must exist outside attacker control; C:H/I:H from secret access, A:N.
Primary rating from Vendor (github).
CVSS VectorVendor: github
Lifecycle Timeline
3DescriptionCVE.org
OpenBao's AWS Plugin generates AWS access credentials based on IAM policies. Prior to version 0.1.1, the AWS Plugin is vulnerable to cross-account IAM role Impersonation in the AWS auth method. The vulnerability allows an IAM role from an untrusted AWS account to authenticate by impersonating a role with the same name in a trusted account, leading to unauthorized access. This impacts all users of the auth-aws plugin who operate in a multi-account AWS environment where IAM role names may not be unique across accounts. This vulnerability has been patched in version 0.1.1 of the auth-aws plugin. A workaround for this issue involves guaranteeing that IAM role names are unique across all AWS accounts that could potentially interact with your OpenBao environment, and to audit for any duplicate IAM roles.
AnalysisAI
Cross-account IAM role impersonation in OpenBao's auth-aws plugin (versions up to and including 0.1.0) lets an authenticated attacker holding credentials for an IAM role in an untrusted AWS account authenticate to OpenBao by presenting a role name that collides with a trusted role in a different account, granting unauthorized access to secrets, data, and elevated privileges. The flaw is rooted in a client cache that is keyed only by AWS region and STS role and fails to incorporate the AWS Account ID, so a cached credential for one account is reused for another. Exploitation is environment-gated: it only affects multi-account AWS deployments where IAM role names are not globally unique, and a role-name collision must exist; EPSS is low (0.27%, 17th percentile) and no public exploit code has been identified at time of analysis.
Technical ContextAI
The auth-aws plugin is a Go-based OpenBao/Vault auth method that authenticates principals by calling AWS STS AssumeRole and validating the resulting identity (IAM principal ARN / account ID) against configured bindings. CWE-694 (Use of Multiple Resources with Duplicate Identifier) describes the root cause precisely: the backend maintains in-memory client caches (EC2ClientsMap and IAMClientsMap) originally keyed on region and stsRole alone, omitting the AWS account ID. Because role names are frequently reused across AWS accounts, the cache could return a client/credential scoped to one account when servicing a request for a same-named role in another, and stsRoleForAccount did not reject resolution when no per-account STS configuration existed and the account differed from the configured default. The patch restructures both maps into a three-level key of region → accountID → stsRole, adds an explicit error when no STS config exists for a non-default account, and adds a regression test (TestClientCache) asserting that IAM clients for different accounts are isolated in the cache. The plugin generates AWS credentials derived from IAM policies, which is why a bypass translates into credential exposure and privilege escalation rather than merely an authentication nuisance.
RemediationAI
Vendor-released patch: upgrade the auth-aws plugin to version 0.1.1 (fixed in 0.1.1; vulnerable <= 0.1.0), available from the advisory at https://github.com/openbao/openbao-plugins/security/advisories/GHSA-jp7h-4f3c-9rc7 and the fix commit at https://github.com/openbao/openbao-plugins/commit/2a77af36834746ca6d3ac9bd1049154c84b3efae, which keys the EC2/IAM client caches by region, account ID, and STS role and rejects requests for non-default accounts lacking STS configuration. If an immediate upgrade is not possible, the primary and most effective workaround is to guarantee that IAM role names are unique across every AWS account that could interact with OpenBao: audit the AWS organization for duplicate names and rename them using account-specific identifiers, since removing wildcards from bound_iam_principal_arn is a good hardening step but will NOT mitigate the flaw while duplicate names persist (trade-off: renaming roles can break existing policy attachments or trust relationships and requires coordinated change management). Additionally, restrict each OpenBao AWS auth role to specific bound_iam_principal_arn values and tighten trust policies on roles assumed by the plugin, accepting that these reduce but do not eliminate exposure in collision scenarios. Environments that are single-account, or that already enforce globally unique IAM role names, are not affected and need not treat this as urgent.
Vault and Vault Enterprise (“Vault”) TLS certificate auth method did not correctly validate client certificates when con
Timing-based leakage of the single recovery token in OpenBao lets a remote, unauthenticated attacker who can reach the i
OpenBao exists to provide a software solution to manage, store, and distribute sensitive data including secrets, certifi
Vault’s SSH secrets engine did not require the valid_principals list to contain a value by default. Rated high severity
OpenBao versions prior to 2.6.0 fail to reject syntax-significant characters when templated identity data is substituted
OpenBao versions before 2.3.0 contain an unauthenticated denial-of-service vulnerability in the root rekey and recovery
OpenBao is an open source identity-based secrets management system. Rated high severity (CVSS 7.5), this vulnerability i
Vault Community and Vault Enterprise (“Vault”) clusters using Vault’s Integrated Storage backend are vulnerable to a den
A privileged Vault operator with write permissions to the root namespace’s identity endpoint could escalate their own or
OpenBao exists to provide a software solution to manage, store, and distribute sensitive data including secrets, certifi
OpenBao 2.5.2 and earlier fails to properly quote PostgreSQL schema names during role revocation in the PostgreSQL datab
Vault Community and Vault Enterprise Key/Value (kv) Version 2 plugin may unintentionally expose sensitive information in
Same technique Authentication Bypass
View allShare
External POC / Exploit Code
Leaving vuln.today