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
POC_CVE-2026-42880 — Reproduce CVE-2026-42880, una vulnerabilidad crítica de ArgoCD que expone Secretos de Kubernetes a través de ServerSideDiff. Incluye configuración automatizada de laboratorio, scripts de activación y una plantilla de detección Nuclei para pruebas de seguridad. | Kitploit
Herramientas/GitHubGitHub/haerin-l/poc_cve-2026-42880
Análisis de VulnerabilidadesExplotaciónPruebas de PenetraciónSeguridad en la NubeMala ConfiguraciónAprendizaje y EducaciónLabs y Práctica
GitHubhaerin-l/poc_cve-2026-42880

POC_CVE-2026-42880

Reproduce CVE-2026-42880, una vulnerabilidad crítica de ArgoCD que expone Secretos de Kubernetes a través de ServerSideDiff. Incluye configuración automatizada de laboratorio, scripts de activación y una plantilla de detección Nuclei para pruebas de seguridad.

Ver Repositorio
2hace 3 mesesAú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-42880 — Exposición de Secretos de ArgoCD mediante ServerSideDiff

Un entorno de laboratorio para reproducir y detectar CVE-2026-42880, una vulnerabilidad crítica en Argo CD donde el manejador gRPC ServerSideDiff expone datos de Secretos de Kubernetes a usuarios de solo lectura.


Resumen de la Vulnerabilidad

CampoDetalles
CVE IDCVE-2026-42880
GHSAGHSA-3v3m-wc6v-x4x3
CVSS9.6 (Crítico) — AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:N
Versiones afectadasArgoCD 3.2.0–3.2.10, 3.3.0–3.3.8
Versiones parcheadas3.2.11, 3.3.9+
CWECWE-200, CWE-212

Causa Raíz

serverSideDiff() en el manejador gRPC de ArgoCD llama al dry-run de SSA de Kubernetes y devuelve predictedLive sin llamar a hideSecretData(), exponiendo valores de Secretos codificados en base64 en la respuesta.

root@kitploit:~
Vulnerable path (v3.2.0):
argocd app diff --server-side-diff
  → gRPC ServerSideDiff handler
    → Kubernetes SSA dry-run (merges ALL field managers)
      ← predictedLive returned (includes external-controller's data)
        ❌ hideSecretData() NOT called → real Secret values exposed

Patched path (v3.2.11):
  ...same SSA dry-run...
    ✅ HideSecretData() called → values replaced with ++++

Prerrequisitos del Ataque

Las tres condiciones deben cumplirse simultáneamente:

#CondiciónDetalles
1Versión vulnerable de ArgoCD3.2.0–3.2.10 o 3.3.0–3.3.8
2Anotación de la aplicaciónargocd.argoproj.io/compare-options: ServerSideDiff=true,IncludeMutationWebhook=true
3Administrador de campos externo en datos del SecretCampos data del Secret propiedad de un administrador que no sea ArgoCD (por ejemplo, External Secrets Operator, Helm, kubectl)

Solo se requiere role:readonly — no se necesitan permisos de escritura.


Arquitectura del Laboratorio

root@kitploit:~
Host Machine
├── localhost:30080 ──→ Kind Cluster: cve-vuln   (ArgoCD v3.2.0  ⚠ VULNERABLE)
│                         └── ns: production
│                              ├── Secret: db-credentials
│                              │    metadata → argocd-controller (synced from Git)
│                              │    data.*  → external-controller ⚠ (injected separately)
│                              └── Secret: api-credentials (same setup)
│
├── localhost:30081 ──→ Kind Cluster: cve-patched (ArgoCD v3.2.11 ✓ PATCHED)
│                         └── (identical config — only ArgoCD version differs)
│
└── localhost:3010  ──→ Docker Container: cve-lab-gitea
                          └── repo: gitadmin/manifests.git
                               └── secret.yaml (no data field — CVE prerequisite)

Por qué es importante la división del administrador de campos

root@kitploit:~
db-credentials Secret (namespace: production)
┌──────────────────────────────────────────────────────────────┐
│  metadata.*  → argocd-controller   (ArgoCD syncs from Git)   │
│  data.*      → external-controller (injected by setup script)│
└──────────────────────────────────────────────────────────────┘

SSA dry-run: Kubernetes fusiona los campos de ambos administradores en predictedLive
  → ArgoCD NO es propietario de los datos → los datos no son enmascarados por ArgoCD
  → v3.2.0 devuelve predictedLive sin hideSecretData() → EXPUESTO

Prerrequisitos

HerramientaInstalación
kindbrew install kind
kubectlbrew install kubectl
Docker Desktopdocker.com
argocd CLIbrew install argocd
nucleibrew install nuclei
curl, jq, gitpreinstalado en macOS o brew install jq

Requisitos de recursos: 8GB+ de RAM libre, 15GB+ de disco libre, puertos 30080 / 30081 / 3010 disponibles.


Cómo Ejecutar

Paso 1 — Configurar el entorno vulnerable (ArgoCD v3.2.0)

root@kitploit:~
bash scripts/01-setup-vuln.sh
# or: make setup-vuln

Tarda ~10 minutos. Cuando termine:

root@kitploit:~
══════════════════════════════════════════════════════
 Vulnerable ArgoCD lab ready!
══════════════════════════════════════════════════════
 ArgoCD UI   : http://localhost:30080
 Admin pass  : <auto-generated>
 Viewer pass : viewerpass123
 Token file  : .vuln-viewer-token
══════════════════════════════════════════════════════

Paso 2 — Configurar el entorno parcheado para comparación (opcional)

root@kitploit:~
bash scripts/02-setup-patched.sh
# or: make setup-patched

Paso 3 — Desencadenar el CVE

root@kitploit:~
bash scripts/03-trigger-cve.sh
# or: make trigger

Salida esperada — vulnerable (v3.2.0):

root@kitploit:~
===== /Secret production/db-credentials ======
<   db_password: ++++++++                          ← masked live state
---
>   db_password: U3VwM3JTM2NyM3REQiFQYXNzIzIwMjY=  ← EXPOSED predictedLive!

[EXPOSED] decoded: Sup3rS3cr3tDB!Pass#2026
⚠  RESULT: SECRET DATA EXPOSED — VULNERABLE

Salida esperada — parcheado (v3.2.11):

root@kitploit:~
>   db_password: ++++++++   ← enmascarado
✓  RESULT: no unmasked data in predictedLive — PATCHED

Paso 4 — Detección con Nuclei

root@kitploit:~
# Clúster vulnerable → debería producir un hallazgo [critical]
nuclei -t nuclei/CVE-2026-42880.yaml \
  -u http://localhost:30080 \
  -var username=viewer \
  -var password=viewerpass123

# Clúster parcheado → no debería producir hallazgos
nuclei -t nuclei/CVE-2026-42880.yaml \
  -u http://localhost:30081 \
  -var username=viewer \
  -var password=viewerpass123

Paso 5 — Desmontaje

root@kitploit:~
bash scripts/99-teardown.sh
# or: make teardown

Estructura de Directorios

root@kitploit:~
argocd-cve-2026-42880-lab2/
├── README.md
├── LAB_SETUP_GUIDE.md              # Lab setup guide + troubleshooting (English)
├── VULNERABILITY_ANALYSIS.md       # Code-level vulnerability analysis (English)
├── Nuclei_Template_Report.md       # Nuclei template design and test results (English)
├── Makefile
│
├── REPORT/                         # Korean reports
│   ├── LAB_REPORT_KR.md
│   ├── Nuclei_Template_Report_KR.md
│   └── Vulnerability_Analysis_KR.md
│
├── kind/
│   ├── cluster-vuln.yaml           # Kind cluster: cve-vuln    (port 30080)
│   └── cluster-patched.yaml        # Kind cluster: cve-patched (port 30081)
│
├── git-manifests/
│   └── secret.yaml                 # Secret without data field (CVE prerequisite)
│
├── manifests/
│   ├── application.yaml            # ArgoCD Application with vulnerable annotation
│   ├── argocd-cm-patch.yaml        # ConfigMap: TLS off, viewer account, ServerSideDiff
│   ├── argocd-rbac-patch.yaml      # RBAC: viewer → role:readonly
│   ├── argocd-nodeport.yaml        # NodePort 30080 (vuln cluster)
│   └── argocd-nodeport-patched.yaml# NodePort 30081 (patched cluster)
│
├── nuclei/
│   └── CVE-2026-42880.yaml         # Nuclei detection template
│
└── scripts/
    ├── 01-setup-vuln.sh            # Full automated setup: vulnerable env
    ├── 02-setup-patched.sh         # Full automated setup: patched env
    ├── 03-trigger-cve.sh           # Trigger CVE + compare both clusters
    └── 99-teardown.sh              # Remove all lab resources

Lógica de Detección de la Plantilla de Nuclei

La plantilla utiliza una cadena HTTP de 4 pasos para verificar todos los prerrequisitos del CVE sin desencadenar la extracción real de Secretos:

root@kitploit:~
Step 1  GET /api/version
        → extract argocd_version (no auth required)

Step 2  POST /api/v1/session
        → authenticate as viewer (role:readonly), extract token

Step 3  GET /api/v1/applications
        → find app with ServerSideDiff=true,IncludeMutationWebhook=true

Step 4  GET /api/v1/applications/{app}/managed-resources
        → verify: version in range + Secret present + f:data owned by external manager
        → FINDING reported only if all 5 matchers pass (AND condition)

Referencias

  • NVD — CVE-2026-42880
  • GHSA-3v3m-wc6v-x4x3
  • PR de Parche #27598
  • Documentación de Server-Side Diff de ArgoCD
  • Server-Side Apply de Kubernetes

Advertencia: Todas las credenciales en este laboratorio son datos de prueba falsos solo para fines de investigación de seguridad. Nunca usarlas en producción.

Descargar herramienta