Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
POC_CVE-2026-42880 — Reproduit la CVE-2026-42880, une vulnérabilité critique d'ArgoCD exposant les secrets Kubernetes via ServerSideDiff. Inclut une configuration de laboratoire automatisée, des scripts de déclenchement et un modèle de détection Nuclei pour les tests de sécurité. | Kitploit
Outils/GitHubGitHub/haerin-l/poc_cve-2026-42880
Analyse des VulnérabilitésExploitationTests d'IntrusionSécurité CloudMauvaise ConfigurationApprentissage et ÉducationLabs et Pratique
GitHubhaerin-l/poc_cve-2026-42880

POC_CVE-2026-42880

Reproduit la CVE-2026-42880, une vulnérabilité critique d'ArgoCD exposant les secrets Kubernetes via ServerSideDiff. Inclut une configuration de laboratoire automatisée, des scripts de déclenchement et un modèle de détection Nuclei pour les tests de sécurité.

Voir le dépôt
6il y a 4 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2026-42880 — Exposition de Secrets ArgoCD via ServerSideDiff

Un environnement de laboratoire pour reproduire et détecter CVE-2026-42880, une vulnérabilité critique dans Argo CD où le gestionnaire gRPC ServerSideDiff expose les données Secret Kubernetes aux utilisateurs en lecture seule.


Vue d'ensemble de la vulnérabilité

ChampDétails
ID CVECVE-2026-42880
GHSAGHSA-3v3m-wc6v-x4x3
CVSS9.6 (Critique) — AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:N
Versions affectéesArgoCD 3.2.0–3.2.10, 3.3.0–3.3.8
Versions corrigées3.2.11, 3.3.9+
CWECWE-200, CWE-212

Cause racine

serverSideDiff() dans le gestionnaire gRPC d'ArgoCD appelle le dry-run SSA de Kubernetes et retourne predictedLive sans appeler hideSecretData(), exposant les valeurs Secret encodées en base64 dans la réponse.

Chemin vulnérable (v3.2.0) :
argocd app diff --server-side-diff
  → Gestionnaire gRPC ServerSideDiff
    → Dry-run SSA Kubernetes (fusionne tous les gestionnaires de champs)
      ← predictedLive retourné (inclut les données du contrôleur externe)
        ❌ hideSecretData() NON appelée → valeurs Secret réelles exposées

Chemin corrigé (v3.2.11) :
  ...même dry-run SSA...
    ✅ HideSecretData() appelée → valeurs remplacées par ++++

Prérequis de l'attaque

Les trois conditions doivent être satisfaites simultanément :

#ConditionDétails
1Version ArgoCD vulnérable3.2.0–3.2.10 ou 3.3.0–3.3.8
2Annotation d'applicationargocd.argoproj.io/compare-options: ServerSideDiff=true,IncludeMutationWebhook=true
3Gestionnaire de champ externe sur les données SecretChamps data du Secret possédés par un gestionnaire non-ArgoCD (ex. External Secrets Operator, Helm, kubectl)

Seul le rôle role:readonly est requis — aucune permission d'écriture n'est nécessaire.


Architecture du laboratoire

Machine hôte
├── localhost:30080 ──→ Cluster Kind : cve-vuln   (ArgoCD v3.2.0  ⚠ VULNÉRABLE)
│                         └── ns: production
│                              ├── Secret: db-credentials
│                              │    metadata → argocd-controller (synchronisé depuis Git)
│                              │    data.*  → external-controller ⚠ (injecté séparément)
│                              └── Secret: api-credentials (même configuration)
│
├── localhost:30081 ──→ Cluster Kind : cve-patched (ArgoCD v3.2.11 ✓ CORRIGÉ)
│                         └── (configuration identique — seule la version d'ArgoCD diffère)
│
└── localhost:3010  ──→ Conteneur Docker : cve-lab-gitea
                          └── dépôt : gitadmin/manifests.git
                               └── secret.yaml (pas de champ data — condition préalable de la CVE)

Pourquoi la séparation des gestionnaires de champs est importante

Secret db-credentials (namespace: production)
┌──────────────────────────────────────────────────────────────┐
│  metadata.*  → argocd-controller   (ArgoCD synchronise depuis Git) │
│  data.*      → external-controller (injecté par le script de configuration)│
└──────────────────────────────────────────────────────────────┘

Dry-run SSA : Kubernetes fusionne les champs des deux gestionnaires dans predictedLive
  → ArgoCD ne possède PAS data → data n'est pas masquée par ArgoCD
  → v3.2.0 retourne predictedLive sans hideSecretData() → EXPOSÉ

Prérequis

OutilInstallation
kindbrew install kind
kubectlbrew install kubectl
Docker Desktopdocker.com
CLI argocdbrew install argocd
nucleibrew install nuclei
curl, jq, gitpréinstallé sur macOS ou brew install jq

Besoins en ressources : 8 Go+ de RAM libre, 15 Go+ d'espace disque libre, ports 30080 / 30081 / 3010 disponibles.


Comment exécuter

Étape 1 — Configurer l'environnement vulnérable (ArgoCD v3.2.0)

bash scripts/01-setup-vuln.sh
# ou : make setup-vuln

Prend ~10 minutes. Terminé :

══════════════════════════════════════════════════════
 Laboratoire ArgoCD vulnérable prêt !
══════════════════════════════════════════════════════
 Interface ArgoCD : http://localhost:30080
 Mot de passe admin : <généré automatiquement>
 Mot de passe viewer : viewerpass123
 Fichier de jeton : .vuln-viewer-token
══════════════════════════════════════════════════════

Étape 2 — Configurer l'environnement corrigé pour comparaison (optionnel)

bash scripts/02-setup-patched.sh
# ou : make setup-patched

Étape 3 — Déclencher la CVE

bash scripts/03-trigger-cve.sh
# ou : make trigger

Sortie attendue — vulnérable (v3.2.0) :

===== /Secret production/db-credentials ======
<   db_password: ++++++++                          ← état live masqué
---
>   db_password: U3VwM3JTM2NyM3REQiFQYXNzIzIwMjY=  ← predictedLive EXPOSÉ !

[EXPOSÉ] décodé : Sup3rS3cr3tDB!Pass#2026
⚠  RÉSULTAT : DONNÉES SECRET EXPOSÉES — VULNÉRABLE

Sortie attendue — corrigé (v3.2.11) :

>   db_password: ++++++++   ← masqué
✓  RÉSULTAT : aucune donnée non masquée dans predictedLive — CORRIGÉ

Étape 4 — Détection avec Nuclei

# Cluster vulnérable → devrait produire un résultat [critique]
nuclei -t nuclei/CVE-2026-42880.yaml \
  -u http://localhost:30080 \
  -var username=viewer \
  -var password=viewerpass123

# Cluster corrigé → ne devrait produire aucun résultat
nuclei -t nuclei/CVE-2026-42880.yaml \
  -u http://localhost:30081 \
  -var username=viewer \
  -var password=viewerpass123

Étape 5 — Nettoyage

bash scripts/99-teardown.sh
# ou : make teardown

Structure des répertoires

argocd-cve-2026-42880-lab2/
├── README.md
├── LAB_SETUP_GUIDE.md              # Guide de configuration du lab + dépannage (anglais)
├── VULNERABILITY_ANALYSIS.md       # Analyse de vulnérabilité au niveau du code (anglais)
├── Nuclei_Template_Report.md       # Conception du template Nuclei et résultats de test (anglais)
├── Makefile
│
├── REPORT/                         # Rapports en coréen
│   ├── LAB_REPORT_KR.md
│   ├── Nuclei_Template_Report_KR.md
│   └── Vulnerability_Analysis_KR.md
│
├── kind/
│   ├── cluster-vuln.yaml           # Cluster Kind : cve-vuln    (port 30080)
│   └── cluster-patched.yaml        # Cluster Kind : cve-patched (port 30081)
│
├── git-manifests/
│   └── secret.yaml                 # Secret sans champ data (condition préalable de la CVE)
│
├── manifests/
│   ├── application.yaml            # Application ArgoCD avec annotation vulnérable
│   ├── argocd-cm-patch.yaml        # ConfigMap : TLS désactivé, compte viewer, ServerSideDiff
│   ├── argocd-rbac-patch.yaml      # RBAC : viewer → role:readonly
│   ├── argocd-nodeport.yaml        # NodePort 30080 (cluster vulnérable)
│   └── argocd-nodeport-patched.yaml# NodePort 30081 (cluster corrigé)
│
├── nuclei/
│   └── CVE-2026-42880.yaml         # Template de détection Nuclei
│
└── scripts/
    ├── 01-setup-vuln.sh            # Configuration automatisée complète : environnement vulnérable
    ├── 02-setup-patched.sh         # Configuration automatisée complète : environnement corrigé
    ├── 03-trigger-cve.sh           # Déclencher la CVE + comparer les deux clusters
    └── 99-teardown.sh              # Supprimer toutes les ressources du laboratoire

Logique de détection du template Nuclei

Le template utilise une chaîne HTTP en 4 étapes pour vérifier toutes les conditions préalables de la CVE sans déclencher l'extraction réelle des Secrets :

Étape 1  GET /api/version
        → extraire argocd_version (aucune authentification requise)
Télécharger l’outil