Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
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.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-78162 — Proof-of-concept eseguibile che riproduce CVE-2026-78162, dimostrando la deserializzazione Java non autenticata in Apache Camel camel-hazelcast su Spring Boot e Quarkus. | Kitploit
Strumenti/GitHubGitHub/oscerd/cve-2026-78162
Strumenti DifensiviAnalisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebApprendimento e Formazione
GitHuboscerd/cve-2026-78162

CVE-2026-78162

Proof-of-concept eseguibile che riproduce CVE-2026-78162, dimostrando la deserializzazione Java non autenticata in Apache Camel camel-hazelcast su Spring Boot e Quarkus.

Vedi Repository
92 giorni 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

CVE-2026-78162 — camel-hazelcast: istanza gestita senza filtro di deserializzazione Java

Reproduttore proof-of-concept eseguibile per la vulnerabilità di Apache Camel in cui camel-hazelcast creava istanze Hazelcast senza un JavaSerializationFilterConfig su due percorsi di configurazione che l'hardening di CVE-2026-43865 non aveva raggiunto. Su quei percorsi un member/client Hazelcast creato da Camel deserializza i valori letti dal cluster senza alcuna restrizione di classe, quindi un attaccante in grado di pubblicare nel cluster può far deserializzare un oggetto Java serializzato di sua scelta all'interno del livello di serializzazione di Hazelcast — esecuzione di codice remoto (CWE-502). I cluster Hazelcast non hanno né autenticazione né TLS abilitati per impostazione predefinita.

Questo reproduttore percorre il più chiaro dei due percorsi: ReplicatedHazelcastAggregationRepository, che sovrascrive doStart() senza chiamare super.doStart() e, su una build affetta, avvia il proprio member locale senza applicare il filtro predefinito. (Il percorso gemello, HazelcastDefaultComponent#getOrCreateHzClientInstance() per hazelcastMode=client, è coperto dalla stessa correzione.)

RuntimeDirectoryStack
Camel Spring Bootcamel-spring-boot/Spring Boot 3.5.13 + camel-hazelcast 4.22.0 (affetto; corretto in 4.22.1)
Camel Quarkuscamel-quarkus/Quarkus 3.29.0 + camel-quarkus-hazelcast 3.29.0 (Camel 4.15.0, affetto)

Controllo corretto-vs-affetto: la correzione è inclusa in Camel 4.18.5 / 4.22.1 / 4.23.0. Il modulo Spring Boot può eseguire sia la build affetta (4.22.0) sia quella corretta (4.22.1), quindi dimostra anche il comportamento corretto. Nessuna versione rilasciata di Camel Quarkus include ancora un Camel corretto (l'ultima, 3.29.0, è su Camel 4.15.0), quindi il modulo Quarkus dimostra solo il caso affetto.

Cosa dimostra

L'app esegue una route Camel supportata da un ReplicatedHazelcastAggregationRepository senza alcuna HazelcastInstance fornita dall'esterno, quindi il repository avvia il proprio member Hazelcast locale (cluster predefinito dev, porta 5701). Sulla build affetta quel member non ha alcun JavaSerializationFilterConfig.

Un client attaccante si unisce quindi al cluster e pubblica un oggetto serializzato nella ReplicatedMap di supporto. Un client Hazelcast invia solo byte — non memorizza né deserializza i valori della mappa — quindi qualsiasi deserializzazione che si verifichi è attribuibile al member vittima. L'oggetto pubblicato è un marker deliberatamente benigno, com.example.PwnMarker: non contiene alcuna gadget chain e non esegue alcun comando, registra soltanto (tramite un flag globale della JVM) che il suo readObject è stato eseguito. Un vero attaccante pubblicherebbe qui una classe gadget nota, per l'RCE — dimostrare che la classe è stata effettivamente deserializzata è sufficiente.

Poiché il filtro predefinito della correzione è una whitelist di prefissi di nome classe java., javax. e org.apache.camel., com.example.PwnMarker è l'oracolo perfetto:

  • Build affetta → nessun filtro → PwnMarker viene deserializzato, readObject viene eseguito sul member vittima → PROVEN.
  • Build corretta → la whitelist rifiuta com.example.PwnMarker prima di readObject → java.lang.SecurityException: Resolving class com.example.PwnMarker is not allowed → non sfruttato.
cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack
docker compose down

Output atteso su una build affetta:

=== CVE-2026-78162 — camel-hazelcast ReplicatedHazelcastAggregationRepository ===
=== missing JavaSerializationFilterConfig on the Camel-built member ===

Attacker client joined the victim cluster 'dev' at 127.0.0.1:5701.
Attacker published a com.example.PwnMarker into ReplicatedMap 'aggregation'.

Result:
>>> PROVEN: the Camel-built Hazelcast member deserialized an attacker-supplied, non-whitelisted
>>> class (com.example.PwnMarker) with no JavaSerializationFilterConfig in effect — its readObject
>>> executed inside the victim. A real attacker would publish a gadget class here instead, for RCE.
>>>   PwnMarker.readObject executed inside the victim member; tag=attacker-rce-marker; thread=hz.*.partition-operation.thread-1

Riepilogo della vulnerabilità

ProprietàValore
Componentecamel-hazelcast (camel-hazelcast-starter / camel-quarkus-hazelcast)
CWECWE-502 (Deserializzazione di dati non attendibili)
GravitàMEDIA
Vettore di attaccoUn attaccante in grado di pubblicare nel cluster Hazelcast a cui è connessa un'istanza interessata; il membro/client creato da Camel deserializza l'oggetto pubblicato senza alcuna restrizione di classe
ImpattoEsecuzione di codice remoto all'interno del processo Camel (tramite una classe gadget), prima che Camel elabori lo scambio
Versioni interessateDalla 4.0.0 precedente alla 4.18.5, dalla 4.19.0 precedente alla 4.22.1
Versioni corrette4.18.5, 4.22.1, 4.23.0
JIRACAMEL-24413, CAMEL-24420
Riconoscimenticattier di TCBS; Leon Zlobecki

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

La correzione

HazelcastSerializationFilterHelper.applyDefault(...) ha acquisito un overload ClientConfig ed è ora invocato su entrambi i percorsi precedentemente non coperti — ReplicatedHazelcastAggregationRepository#doStart() e HazelcastDefaultComponent#getOrCreateHzClientInstance() — così ogni configurazione Hazelcast costruita da Camel stesso include il JavaSerializationFilterConfig predefinito (whitelist java. / javax. / org.apache.camel., blacklist java.net.). Un Config, ClientConfig o HazelcastInstance fornito dall'utente rimane comunque inalterato. Questo avviso è un seguito di correzione incompleta di CVE-2026-43865.

Mitigazione se non è possibile aggiornare

Fornire una configurazione Hazelcast esplicita che includa un JavaSerializationFilterConfig, oppure iniettare un HazelcastInstance pre-costruito (una configurazione fornita dall'utente non viene mai sovrascritta da Camel); impostare -Djdk.serialFilter=... a livello di JVM; e abilitare l'autenticazione e TLS del cluster Hazelcast.

Disclaimer

Questo repository è pubblicato per scopi educativi e difensivi: per aiutare gli utenti di Apache Camel a comprendere la vulnerabilità, verificare se sono interessati e confermare che l'aggiornamento la risolve. Il payload è un marker benigno che non esegue alcun codice. Non utilizzare questo materiale contro sistemi di cui non si è proprietari o gestori.

Scarica lo strumento