Advisory · CVE-2026-93991
Argo Workflows authorization bypass leaks workflows across namespaces
Argo Workflows 4.1.0 through 4.1.3 skips cluster-scoped access review in ListArchivedWorkflows when the metadata.namespace selector uses the NotEquals operator, letting namespace-scoped users read archived workflows from other namespaces. Fixed in 4.1.4.
- Vendor
- argoproj
- Product
- Argo Workflows
- Identifier / CWE
- CVE-2026-93991
CWE-639 - Action timing
- Immediate
Explain it like I’m five
The building has locked filing cabinets per office, but the receptionist hands over files from any office if you ask for 'everything except my office'. A quirk in the request wording lets anyone skip the access check.
- 01Namespace-scoped user
An attacker holds list permissions scoped to a single Kubernetes namespace.
- 02Negated selector
They call ListArchivedWorkflows with a metadata.namespace field selector using the NotEquals operator.
- 03Access review skipped
Argo Workflows 4.1.0 through 4.1.3 fails to apply the cluster-scoped access review for this selector form.
- 04Cross-namespace read
Archived workflows from all other namespaces are returned, exposing spec arguments, parameter values, and annotations that may contain secrets.
What happened
Argo Workflows versions 4.1.0 through 4.1.3 contain an authorization bypass (CWE-639) in the ListArchivedWorkflows API. When the metadata.namespace field selector uses the NotEquals operator, the server fails to apply the cluster-scoped access review, so a user with list permissions in only one namespace can retrieve archived workflows from every other namespace. Archived workflow records include spec arguments, parameter values, and annotations, which routinely carry credentials and configuration secrets. The project fixed the issue in release 4.1.4.
What to do
- Upgrade Argo Workflows to 4.1.4 or later using the project’s release guidance.
- Until the upgrade is complete, restrict who holds list permissions on archived workflows and limit network access to the Argo Server API.
- Audit API server audit logs for ListArchivedWorkflows calls using negated namespace field selectors during the exposure window.
- Treat any workflow parameters or annotations readable cross-namespace as exposed: identify secrets that could have been disclosed and rotate them.
- Confirm the deployed version is 4.1.4+ on every Argo instance, including dev and staging clusters.
Management note
This is a namespace-isolation failure in a platform that runs other teams’ code, secrets, and pipeline definitions. Multi-tenant Argo deployments should assume archived workflow contents were readable by any namespace-scoped user on affected versions, and remediation has to include secret rotation, not just the upgrade.