Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-43867 — Reproducer for CVE-2026-43867 — Apache Camel camel-pqc AwsSecretsManagerKeyLifecycleManager unsafe key-metadata deserialization (RCE) | Kitploit
Tools/GitHubGitHub/oscerd/cve-2026-43867
Vulnerability AnalysisCode AnalysisExploitationCloud SecurityBinary Exploitation
GitHuboscerd/cve-2026-43867

CVE-2026-43867

Reproducer for CVE-2026-43867 — Apache Camel camel-pqc AwsSecretsManagerKeyLifecycleManager unsafe key-metadata deserialization (RCE)

Repository anzeigen
vor 1 MonatNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

camel-pqc AWS Secrets Manager Key-Metadata Unsafe Deserialization Reproducer (CVE-2026-43867)

Dieses Projekt demonstriert eine Java-Deserialisierungsschwachstelle in der Apache Camel-Komponente camel-pqc, die als CVE-2026-43867 geführt wird. AwsSecretsManagerKeyLifecycleManager.deserializeMetadata() liest persistierte Post-Quanten-Schlüsselmetadaten aus einem AWS Secrets Manager-Secret zurück, indem der gespeicherte Wert Base64-decodiert und mit einem rohen java.io.ObjectInputStream.readObject() deserialisiert wird, ohne ObjectInputFilter — der Cast zu KeyMetadata erfolgt erst nachdem readObject() zurückkehrt, sodass alle readObject()-Nebeneffekte zuerst ausgeführt werden. Ein Principal, der in dieses Secret schreiben kann (secretsmanager:PutSecretValue), kann ein präpariertes serialisiertes Objekt ablegen, das bei normalen Schlüssellebenszyklus-Operationen deserialisiert wird, was potenziell zu Codeausführung führt.

Sicherheitshinweis: https://camel.apache.org/security/CVE-2026-43867.html

Schwachstellenübersicht

Gleicher Fehler wie CVE-2026-46590 (unabhängig gemeldet; dieses Advisory deckt auch die HashiCorp Vault- und dateibasierten verwandten Manager ab) und eine unvollständige Korrektur-Nachfolge zu CVE-2026-40048 (CAMEL-23200), die FileBasedKeyLifecycleManager auf ein JSON/PKCS#8/X.509-Format umgestellt, aber keinen ObjectInputFilter hinzugefügt und die AWS/Vault-Manager nicht abgedeckt hat.

Technische Details

root@kitploit:~
// AwsSecretsManagerKeyLifecycleManager - betroffen 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)) {   // KEIN ObjectInputFilter
        return (KeyMetadata) ois.readObject();                    // Gadget wird hier aktiv, vor dem Cast
    }
}

getKeyMetadata(keyId) liest das Secret namens <keyPrefix>/<keyId>/metadata, parst seinen JSON-Envelope ({"metadata":"<base64>","keyId":...,"algorithm":...}) und übergibt das metadata-Feld an deserializeMetadata. Der Fix (4.18.3 / 4.21.0) führt einen gemeinsamen KeyMetadataCodec ein, der Metadaten als JSON für alle Manager speichert und die verbleibenden Legacy-ObjectInputStream-Lesevorgänge mit einer Whitelist ObjectInputFilter einschränkt.

Angreifer vs. Opfer

Das Opfer ist die Anwendung, die PQC-Schlüssel mit dem AWS-Manager verwaltet. Der Angreifer ist jeder Principal, der das Metadaten-Secret beschreiben kann (secretsmanager:PutSecretValue). Dieser PoC verwendet LocalStack, um AWS Secrets Manager zu emulieren; der /exploit/attack-Endpunkt schreibt ein präpariertes Metadaten-Secret und treibt dann den Lesepfad des Managers an.

root@kitploit:~
CVE-2026-43867/
├── pom.xml                 # camel-pqc 4.18.2 + aws-sdk secretsmanager 2.41.28 + commons-collections 3.2.1
├── Dockerfile              # führt die App aus (--add-opens für Gadget-Bau)
├── docker-compose.yml      # LocalStack (Secrets Manager) + die Reproducer-App
├── README.md
└── src/main/
    ├── java/com/example/
    │   ├── Application.java
    │   ├── Gadget.java             # CommonsCollections6-Gadget, wird während readObject() ausgelöst
    │   └── ExploitController.java  # schreibt das präparierte Secret, ruft dann getKeyMetadata() auf
    └── resources/
        └── application.properties

In einem realen Angriff werden die serialisierten Bytes offline vom Angreifer erzeugt (z. B. mit ysoserial). Dieser PoC baut das Gadget prozessintern, weshalb die JVM mit --add-opens java.base/java.util=ALL-UNNAMED läuft — ein Detail des Gadget-Baus, nicht zusammenhängend mit der Schwachstelle.

Voraussetzungen

  • Java 17+ und Maven 3.8+
  • Docker (führt LocalStack und die App aus)

Reproduktionsschritte

Schritt 1: Alles bauen und starten

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

Dies startet LocalStack (emuliert AWS Secrets Manager) und die Reproducer-App, die ihren AwsSecretsManagerKeyLifecycleManager über den Endpunkt-Override auf LocalStack ausrichtet.

Schritt 2: Deserialisierung auslösen (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

Schritt 3: Überprüfen

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

Bereinigen

root@kitploit:~
docker compose down

Angriffsvektoren

Jede Anwendung, die AwsSecretsManagerKeyLifecycleManager verwendet und deren Schlüsselmetadaten-Secret von einer anderen Partei als der eigenen vertrauenswürdigen Identität beschrieben werden kann. Die Deserialisierung erfolgt während normaler Schlüssellebenszyklus-Operationen (getKeyMetadata, loadExistingKeys, listKeys, Rotationsprüfungen, …).

Ausnutzungsbedingungen

  1. Eine Anwendung, die camel-pqc's AwsSecretsManagerKeyLifecycleManager in einer betroffenen Version verwendet.
  2. Der Angreifer kann das Metadaten-Secret beschreiben (secretsmanager:PutSecretValue darauf).
  3. Eine Gadget-Bibliothek im Klassenpfad (hier commons-collections:3.2.1).

Empfohlener Fix

Upgrade auf 4.18.3 / 4.21.0 (CAMEL-23726). Metadaten werden als JSON gespeichert und alle verbleibenden Legacy- ObjectInputStream-Lesevorgänge werden durch einen Whitelist-ObjectInputFilter eingeschränkt.

Abhilfemaßnahmen

Bis zum Upgrade:

  1. Beschränken Sie secretsmanager:PutSecretValue auf das camel-pqc-Metadaten-Secret auf die eigene Identität der Anwendung (Least-Privilege-IAM).
  2. Halten Sie PQC-Schlüsselmaterial in einem separaten Secret von Daten, die weniger vertrauenswürdige Principals schreiben können.
  3. Entfernen Sie Gadget-Bibliotheken aus dem Klassenpfad (Upgrade/Entfernung von commons-collections 3.x und ähnlichen).

Haftungsausschluss

Dieser Reproducer wird ausschließlich für Sicherheitsforschung und autorisierte Tests bereitgestellt, für eine öffentlich offengelegte und behobene Schwachstelle. Verwenden Sie ihn nicht gegen Systeme ohne ausdrückliche Genehmigung.

Tool herunterladen
EigenschaftWert
Komponentecamel-pqc (AwsSecretsManagerKeyLifecycleManager)
Betroffene Klasseorg.apache.camel.component.pqc.lifecycle.AwsSecretsManagerKeyLifecycleManager#deserializeMetadata
CWECWE-502: Deserialisierung nicht vertrauenswürdiger Daten
AuswirkungCodeausführung in der schlüsselverwaltenden Anwendung (erfordert Schreibzugriff auf das Metadaten-Secret)
Betroffene VersionenVon 4.18.0 vor 4.18.3, von 4.19.0 vor 4.21.0
Behobene Versionen4.18.3, 4.21.0 (camel-pqc befindet sich nicht auf dem 4.14.x LTS-Zweig)
JIRACAMEL-23726
Gemeldet vonVenkatraman Kumar (Securin)