CVE-2026-42183: Argo Workflows: SSO RBAC Delegation Nil Pointer Dereference DoS (gatekeeper.go)

Published May 4, 2026
·
Updated

Summary A nil pointer dereference in server/auth/gatekeeper.go rbacAuthorization() causes a panic (denial of service) for SSO users whose claims match a namespace-level RBAC rule but not an SSO-namespace rule, when SSODELEGATERBACTONAMESPACE=true.

Details When getServiceAccount(claims, ssoNamespace) returns nil (no matching rule), the error is suppressed and loginAccount remains nil. If RBAC delegation finds a matching namespaceAccount, line 304 calls precedence(loginAccount) which unconditionally accesses serviceAccount.Annotations — nil pointer dereference.

Affected code (v4.0.4):

go // gatekeeper.go:304 } else if precedence(namespaceAccount) > precedence(loginAccount) { // loginAccount is nil here -> precedence(nil) -> PANIC

// gatekeeper.go:232-234 func precedence(serviceAccount corev1.ServiceAccount) int { i, := strconv.Atoi(serviceAccount.Annotations[common.AnnotationKeyRBACRulePrecedence]) return i }

PoC Live-tested 2026-04-17: kind cluster, Argo Workflows v4.0.4, Dex v2.43.1 OIDC provider.

1. Deploy Argo Workflows with --auth-mode=sso --auth-mode=client, SSO pointing to Dex, RBAC enabled. 2. Set SSODELEGATERBACTONAMESPACE=true on the argo-server deployment. 3. Create an RBAC ServiceAccount with workflows.argoproj.io/rbac-rule: "true" annotation in a target namespace (e.g., target-ns). 4. Do not create a matching RBAC rule in the SSO namespace (argo). 5. Authenticate via the Dex SSO flow. 6. Request GET /api/v1/workflows/target-ns with the SSO session cookie. 7. Server returns HTTP 500: {"code":13,"message":"runtime error: invalid memory address or nil pointer dereference"} 8. Server logs: Recovered from panic with stack trace at gatekeeper.go:233 (precedence()) called from gatekeeper.go:304.

Every subsequent API request from affected SSO users triggers the same panic.

Impact Permanent denial of service for any SSO user whose claims don't match SSO-namespace RBAC but do match a target namespace rule. Realistic in multi-tenant deployments with per-namespace RBAC. The gRPC recovery interceptor catches the panic so the server process survives, but the affected user gets HTTP 500 on every request.

Suggested Fix Add nil check: if loginAccount == nil || precedence(namespaceAccount) > precedence(loginAccount)

AI Disclosure This advisory was prepared with AI assistance (Claude Code, Anthropic).

Other sources

Argo Workflows is an open source container-native workflow engine for orchestrating parallel jobs on Kubernetes. From version 4.0.0 to before version 4.0.5, a nil pointer dereference in server/auth/gatekeeper.go rbacAuthorization() causes a panic (denial of service) for SSO users whose claims match a namespace-level RBAC rule but not an SSO-namespace rule, when SSODELEGATERBACTONAMESPACE=true. This issue has been patched in version 4.0.5.

MITRE

Affected Software

2 affected componentsFixes available
go/github.com/argoproj/argo-workflows/v4>=4.0.0<=4.0.4
4.0.5
argoproj Argo Workflows Go>=4.0.0<4.0.5

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade go/github.com/argoproj/argo-workflows/v4 to a version that resolves this vulnerability.

    Fixed in 4.0.5
  2. Upgrade

    Upgrade Argo Workflows to a version that resolves this vulnerability.

    Fixed in 4.0.5
  3. Configuration

    Set SSO_DELEGATE_RBAC_TO_NAMESPACE=false on the argo-server deployment to avoid triggering the nil pointer dereference in server/auth/gatekeeper.go rbacAuthorization() (precedence(loginAccount) called when loginAccount is nil) for SSO users whose claims match a namespace-level RBAC rule but not an SSO-namespace rule.

    Argo Workflows (argo-server) SSO_DELEGATE_RBAC_TO_NAMESPACE = false

Event History

May 4, 2026
Advisory Published
via GitHub·08:01 PM
Data Sourced
via GitHub·08:01 PM
DescriptionWeaknessAffected Software
May 9, 2026
CVE Published
via MITRE·03:44 AM
Data Sourced
via MITRE·03:44 AM
DescriptionWeakness
Data Sourced
via NVD·04:16 AM
RemedyDescriptionSeverityWeaknessAffected Software

Frequently Asked Questions

1

What is the severity of CVE-2026-42183?

CVE-2026-42183 has a severity rating of high due to its potential to cause denial of service.

2

How do I fix CVE-2026-42183?

To fix CVE-2026-42183, upgrade to version 4.0.5 of the Argo Workflows package.

3

Which versions are affected by CVE-2026-42183?

CVE-2026-42183 affects versions of Argo Workflows from 4.0.0 to 4.0.4.

4

What condition triggers the issue in CVE-2026-42183?

The issue in CVE-2026-42183 is triggered when SSO_DELEGATE_RBAC_TO_NAMESPACE is set to true and the claims match a namespace-level RBAC rule but not an SSO-namespace rule.

5

Where does the vulnerability occur in CVE-2026-42183?

CVE-2026-42183 occurs in the `server/auth/gatekeeper.go` file within the `rbacAuthorization()` function.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203