Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2026-55175

CVE-2026-55175: Spinnaker Kustomize RCE Vulnerability

CVE-2026-55175 is a remote code execution flaw in Spinnaker's Kustomize bake operations that allows unsafe YAML tag processing. This vulnerability enables attackers to execute code on rosco pods during bakes. Learn about affected versions and patches.

Published:

CVE-2026-55175 Overview

CVE-2026-55175 affects Spinnaker, an open source multi-cloud continuous delivery platform. The vulnerability resides in the rosco microservice, which processes Kubernetes manifests. Kustomize bake operations perform unsafe YAML tag processing when parsing kustomization files. Attackers with permission to trigger a Kustomize bake can achieve remote code execution on rosco pods. The flaw is classified as insecure deserialization [CWE-502]. Affected releases include versions prior to 2026.1.1, 2026.0.3, 2025.4.4, and 2025.3.4 on their respective release lines. The Spinnaker project addressed the issue in these patched versions.

Critical Impact

Attackers with access to trigger Kustomize bake operations can execute arbitrary code on rosco pods, compromising the continuous delivery pipeline and any credentials or workloads reachable from those pods.

Affected Products

  • Spinnaker rosco versions prior to 2025.3.4 on the 2025.3.x line
  • Spinnaker rosco versions prior to 2025.4.4 on the 2025.4.x line
  • Spinnaker rosco versions prior to 2026.0.3 and 2026.1.1 on the 2026.x lines

Discovery Timeline

  • 2026-07-10 - CVE-2026-55175 published to NVD
  • 2026-07-15 - Last updated in NVD database

Technical Details for CVE-2026-55175

Vulnerability Analysis

Spinnaker's rosco service compiles Kubernetes manifests from templating tools including Helm and Kustomize. When performing a Kustomize bake, rosco reads kustomization.yaml and related files through KustomizationFileReader. The reader used a YAML parser configured to honor arbitrary YAML tags, including those that trigger Java object instantiation during deserialization.

An attacker who supplies a crafted kustomization artifact can embed tags that cause the parser to instantiate attacker-controlled classes. This behavior matches the classic insecure deserialization pattern documented in [CWE-502]. Because rosco runs bake operations as a service, code executes with the privileges of the rosco pod, including any mounted service account tokens, cloud credentials, or registry secrets.

Root Cause

The root cause is a YAML parser configuration in KustomizationFileReader.java that did not restrict polymorphic type handling. Untrusted YAML documents fetched from source artifacts were parsed with default settings that permit resolution of custom tags into JVM classes.

Attack Vector

Exploitation requires the ability to influence the Kustomize bake input, typically by controlling a Git repository or artifact referenced by a Spinnaker pipeline. The attack is network-based and requires low privileges but high complexity, since the attacker must place a malicious kustomization.yaml in a location rosco will fetch and bake.

java
// Security patch in KustomizationFileReader.java
// Source: https://github.com/spinnaker/spinnaker/commit/2d75818b85cc4c35144d5e5ed45e7340fcab5dfe

package com.netflix.spinnaker.rosco.manifests.kustomize;

+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.collect.ImmutableList;
import com.netflix.spinnaker.kork.artifacts.model.Artifact;
import com.netflix.spinnaker.kork.core.RetrySupport;

The patch introduces a hardened Jackson ObjectMapper with restrictive DeserializationFeature settings so that unsafe YAML tags no longer resolve to arbitrary Java classes during bake operations.

Detection Methods for CVE-2026-55175

Indicators of Compromise

  • Unexpected outbound network connections initiated by rosco pods to attacker-controlled hosts.
  • New processes spawned by the rosco JVM such as /bin/sh, curl, wget, or nc.
  • Kustomize bake stages that reference untrusted or newly added external Git repositories.
  • Modifications to kustomization.yaml containing non-standard YAML tags such as !!javax. or !!com. type references.

Detection Strategies

  • Inspect Spinnaker pipeline execution logs for bake stages that error out during YAML parsing or execute unusually long.
  • Compare deployed rosco container image digests against the fixed release tags rosco-2025.3.4, rosco-2025.4.4, rosco-2026.0.3, and rosco-2026.1.1.
  • Scan bake input artifacts for YAML documents containing explicit type tags or Java class references.

Monitoring Recommendations

  • Enable Kubernetes audit logging on the rosco namespace and alert on process execution events from the container runtime.
  • Forward rosco application logs to a central SIEM and build detections for YAML parsing exceptions correlated with subsequent shell activity.
  • Monitor egress traffic from rosco pods and baseline expected destinations (source repositories, artifact stores, cloud APIs).

How to Mitigate CVE-2026-55175

Immediate Actions Required

  • Upgrade rosco to 2025.3.4, 2025.4.4, 2026.0.3, 2026.1.1, or later, matching your release line.
  • Restrict which users and pipelines can define or modify Kustomize bake stages within Spinnaker.
  • Rotate any credentials, service account tokens, and cloud keys accessible to rosco pods if exploitation is suspected.

Patch Information

The Spinnaker maintainers released fixes in rosco-2025.3.4, rosco-2025.4.4, rosco-2026.0.3, and rosco-2026.1.1. Technical details are described in GitHub Security Advisory GHSA-p68j-q7hf-3qcp. Primary code changes are in commit 2d75818b and related backports.

Workarounds

  • Disable Kustomize bake stages in Spinnaker pipelines until upgrades are applied.
  • Restrict rosco egress and source repository access to trusted, curated Git remotes only.
  • Apply Kubernetes NetworkPolicy and least-privilege service account bindings to limit blast radius from rosco pod compromise.
bash
# Example: pin rosco to a patched image tag in Halyard or Kubernetes manifest
kubectl set image deployment/spin-rosco \
  rosco=us-docker.pkg.dev/spinnaker-community/docker/rosco:2026.1.1 \
  -n spinnaker

# Verify the running version
kubectl exec -n spinnaker deploy/spin-rosco -- \
  curl -s http://localhost:8087/resolvedEnv | grep -i version

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.