Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-78162 — Reproductor de prueba de concepto ejecutable para CVE-2026-78162, que demuestra la deserialización de Java no autenticada en Apache Camel camel-hazelcast tanto en Spring Boot como en Quarkus. | Kitploit
Herramientas/GitHubGitHub/oscerd/cve-2026-78162
Herramientas DefensivasAnálisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebAprendizaje y Educación
GitHuboscerd/cve-2026-78162

CVE-2026-78162

Reproductor de prueba de concepto ejecutable para CVE-2026-78162, que demuestra la deserialización de Java no autenticada en Apache Camel camel-hazelcast tanto en Spring Boot como en Quarkus.

Ver Repositorio
9hace 2 díasAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2026-78162 — camel-hazelcast: instancia gestionada sin filtro de deserialización de Java

Reproductor de prueba de concepto ejecutable para la vulnerabilidad de Apache Camel en la que camel-hazelcast creaba instancias de Hazelcast sin un JavaSerializationFilterConfig en dos rutas de configuración que el endurecimiento de CVE-2026-43865 nunca alcanzó. En esas rutas, un miembro/cliente de Hazelcast construido por Camel deserializa valores leídos del clúster sin ninguna restricción de clase, por lo que un atacante capaz de publicar en el clúster puede hacer que un objeto Java serializado de su elección sea deserializado dentro de la capa de serialización de Hazelcast — ejecución remota de código (CWE-502). Los clústeres de Hazelcast no tienen ni autenticación ni TLS habilitados por defecto.

Este reproductor ejercita la más clara de las dos rutas: ReplicatedHazelcastAggregationRepository, que sobrescribe doStart() sin llamar a super.doStart() y, en una compilación afectada, inicia su propio miembro local sin aplicar el filtro por defecto. (La ruta hermana, HazelcastDefaultComponent#getOrCreateHzClientInstance() para hazelcastMode=client, queda cubierta por la misma corrección.)

Entorno de ejecuciónDirectorioStack
Camel Spring Bootcamel-spring-boot/Spring Boot 3.5.13 + camel-hazelcast 4.22.0 (afectado; corregido en 4.22.1)
Camel Quarkuscamel-quarkus/Quarkus 3.29.0 + camel-quarkus-hazelcast 3.29.0 (Camel 4.15.0, afectado)

Control corregido-vs-afectado: la corrección se incluye en Camel 4.18.5 / 4.22.1 / 4.23.0. El módulo de Spring Boot puede ejecutar tanto la compilación afectada (4.22.0) como la compilación corregida (4.22.1), por lo que también demuestra el comportamiento parcheado. Ninguna versión publicada de Camel Quarkus incluye todavía un Camel corregido (la última, 3.29.0, está sobre Camel 4.15.0), por lo que el módulo de Quarkus demuestra únicamente el caso afectado.

Qué demuestra

La aplicación ejecuta una ruta de Camel respaldada por un ReplicatedHazelcastAggregationRepository sin ningún HazelcastInstance proporcionado externamente, por lo que el repositorio inicia su propio miembro local de Hazelcast (clúster por defecto dev, puerto 5701). En la compilación afectada, ese miembro no tiene ningún JavaSerializationFilterConfig.

Un cliente atacante se une entonces al clúster y publica un objeto serializado en el ReplicatedMap de respaldo. Un cliente de Hazelcast solo envía bytes — no almacena ni deserializa los valores del mapa — por lo que cualquier deserialización que se produzca es atribuible al miembro víctima. El objeto publicado es un marcador deliberadamente benigno, com.example.PwnMarker: no contiene ninguna cadena de gadgets ni ejecuta ningún comando, solo registra (mediante un flag global de la JVM) que su readObject se ejecutó. Un atacante real publicaría aquí una clase de gadget conocida en su lugar, para lograr RCE — demostrar que la clase fue deserializada es suficiente.

Dado que el filtro por defecto de la corrección es una lista blanca de prefijos de nombre de clase java., javax. y org.apache.camel., com.example.PwnMarker es el oráculo perfecto:

  • Compilación afectada → sin filtro → PwnMarker es deserializado, readObject se ejecuta en el miembro víctima → PROBADO.
  • Compilación corregida → la lista blanca rechaza com.example.PwnMarker antes de readObject → java.lang.SecurityException: Resolving class com.example.PwnMarker is not allowed → no explotado.
cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack
docker compose down

Salida esperada en una compilación afectada:

=== 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

Resumen de la vulnerabilidad

PropiedadValor
Componentecamel-hazelcast (camel-hazelcast-starter / camel-quarkus-hazelcast)
CWECWE-502 (Deserialización de datos no confiables)
GravedadMEDIA
Vector de ataqueUn atacante que pueda publicar en el clúster de Hazelcast al que está conectada una instancia afectada; el miembro/cliente construido por Camel deserializa el objeto publicado sin restricción de clases
ImpactoEjecución remota de código dentro del proceso de Camel (mediante una clase gadget), antes de que Camel procese el exchange
Versiones afectadasDesde 4.0.0 anterior a 4.18.5, desde 4.19.0 anterior a 4.22.1
Versiones corregidas4.18.5, 4.22.1, 4.23.0
JIRACAMEL-24413, CAMEL-24420
Créditocattier de TCBS; Leon Zlobecki

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

La corrección

HazelcastSerializationFilterHelper.applyDefault(...) incorporó una sobrecarga de ClientConfig y ahora se invoca en ambas rutas anteriormente no cubiertas — ReplicatedHazelcastAggregationRepository#doStart() y HazelcastDefaultComponent#getOrCreateHzClientInstance() — de modo que toda configuración de Hazelcast que Camel construye por sí mismo incluye el JavaSerializationFilterConfig predeterminado (lista blanca java. / javax. / org.apache.camel., lista negra java.net.). Un Config, ClientConfig o HazelcastInstance proporcionado por el usuario sigue sin modificarse. Este aviso es una continuación de corrección incompleta de CVE-2026-43865.

Mitigación si no puede actualizar

Proporcione una configuración explícita de Hazelcast que incluya un JavaSerializationFilterConfig, o inyecte un HazelcastInstance preconstruido (Camel nunca sobrescribe una configuración proporcionada por el usuario); establezca el -Djdk.serialFilter=... a nivel de JVM; y habilite la autenticación de clúster de Hazelcast y TLS.

Descargo de responsabilidad

Este repositorio se publica con fines educativos y defensivos: para ayudar a los usuarios de Apache Camel a comprender la vulnerabilidad, verificar si se ven afectados y confirmar que la actualización la resuelve. El payload es un marcador benigno que no ejecuta código. No utilice este material contra sistemas que no sean de su propiedad o que no opere.

Descargar herramienta