Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
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.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-91858 — Reproductor ejecutable de Spring Boot y Quarkus para CVE-2026-91858, un XXE en Apache Camel camel-fop a través de un TransformerFactory de terceros, con verificación de afectación y parcheo. | Kitploit
Herramientas/GitHubGitHub/oscerd/cve-2026-91858
Herramientas DefensivasAnálisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebAprendizaje y Educación
GitHuboscerd/cve-2026-91858

CVE-2026-91858

Reproductor ejecutable de Spring Boot y Quarkus para CVE-2026-91858, un XXE en Apache Camel camel-fop a través de un TransformerFactory de terceros, con verificación de afectación y parcheo.

Ver Repositorio
10hace 19h 12mAú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

CVE-2026-91858 — camel-fop: XML External Entity (XXE) mediante un TransformerFactory de terceros

Reproductor de prueba de concepto ejecutable para la vulnerabilidad de Apache Camel en la que el FopProducer de camel-fop creaba su javax.xml.transform.TransformerFactory con solo FEATURE_SECURE_PROCESSING antes de ejecutar una transformación de identidad sobre el cuerpo del mensaje XSL-FO. En el transformador integrado del JDK, esa característica por sí sola ya vacía los límites accessExternalDTD/accessExternalStylesheet, por lo que se rechazan los recursos externos. Pero cuando un TransformerFactory JAXP de terceros, como Saxon-HE, está en el classpath — por ejemplo, porque la aplicación también usa camel-xslt-saxon o camel-saxon — TransformerFactory.newInstance() devuelve esa implementación, y FEATURE_SECURE_PROCESSING por sí solo no restringe el acceso a recursos externos en ella. Un DOCTYPE con un subconjunto externo declarado en el cuerpo XSL-FO se resuelve entonces mientras se transforma el cuerpo, de modo que el documento de un remitente externo puede leer archivos legibles por el proceso de Camel o hacer que este emita solicitudes a hosts que nombre (CWE-611).

RuntimeDirectorioStack
Camel Spring Bootcamel-spring-boot/Spring Boot 3.5.13 + camel-fop 4.22.0 (afectado; corregido en 4.22.1) + Saxon-HE 13.0
Camel Quarkuscamel-quarkus/Quarkus 3.39.0 + camel-quarkus-fop (Camel 4.22.0, afectado; control corregido CQ 3.40.0 / Camel 4.22.1) + Saxon-HE 13.0

Ambos módulos demuestran el comportamiento afectado y el corregido contra el FopProducer real. Saxon-HE está en el classpath en ambos — es la precondición para la falla; un despliegue predeterminado que use el transformador del JDK no se ve afectado antes ni después de la corrección.

Qué demuestra

El endpoint del verificador /exploit/attack inicia un callback HTTP en proceso y envía un documento XSL-FO a fop:pdf cuyo DOCTYPE declara un DTD externo que apunta a ese callback:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE fo:root SYSTEM "http://localhost:<port>/external.dtd">
<fo:root …>…Hello…</fo:root>

El oráculo es simplemente si se solicitó la callback — una prueba definitiva de que se obtuvo el recurso externo:

  • Afectado: TransformerFactory.newInstance() devuelve Saxon, que bajo el procesamiento seguro por sí solo todavía obtiene el DTD externo — la callback se activa (el mismo mecanismo lee URLs file://).
  • Corregido: ACCESS_EXTERNAL_DTD se establece en "", por lo que Saxon rechaza el DTD externo; la callback nunca se activa.
# Camel Spring Boot
cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack     # affected: callback hit = true; >>> PROVEN
docker compose down
# Patched control
mvn clean package -Dcamel.version=4.22.1
java -Djava.awt.headless=true -jar target/cve-2026-91858-fop-xxe-0.0.1-SNAPSHOT.jar &
curl -s http://localhost:8080/exploit/attack     # fixed: callback hit = false; >>> Not exploited
# Camel Quarkus
cd camel-quarkus
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack     # affected (Camel 4.22.0): callback hit = true
docker compose down
# Patched control: CQ 3.40.0 ships Camel 4.22.1
mvn clean package -Dcamel-quarkus.version=3.40.0 -Dquarkus.platform.version=3.40.0
java -Djava.awt.headless=true -jar target/quarkus-app/quarkus-run.jar &
curl -s http://localhost:8080/exploit/attack     # fixed: callback hit = false

Resumen de la vulnerabilidad

PropiedadValor
Componentecamel-fop (FopProducer)
CWECWE-611 (Restricción inadecuada de la referencia a entidades externas XML)
GravedadMEDIA
Vector de ataqueEl XSL-FO de un remitente externo llega a un productor fop:, en un despliegue que también tiene un TransformerFactory JAXP de terceros (p. ej. Saxon-HE) en el classpath
ImpactoLectura de archivos locales legibles por el proceso de Camel; SSRF hacia hosts internos que el documento nombra
Versiones afectadasDesde 4.0.0 anterior a 4.18.5, desde 4.19.0 anterior a 4.22.1 (solo con un TransformerFactory no perteneciente al JDK presente)
Versiones corregidas4.18.5, 4.22.1, 4.23.0
JIRACAMEL-24605
CréditoClaude Security Scan Tool

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

El módulo afectado de Quarkus está construido sobre CQ 3.39.0 (Camel 4.22.0). El control parcheado es CQ 3.40.0 (Camel 4.22.1). Saxon-HE 13.0 se añade a ambos módulos como sustituto de una aplicación que también usa camel-xslt-saxon/camel-saxon; sin un TransformerFactory no perteneciente al JDK, la falla no es alcanzable.

La corrección

FopProducer ahora también establece XMLConstants.ACCESS_EXTERNAL_DTD y XMLConstants.ACCESS_EXTERNAL_STYLESHEET en la cadena vacía en el TransformerFactory que crea (además de FEATURE_SECURE_PROCESSING), coincidiendo con la configuración segura de procesamiento XML usada por XmlConverter. Por lo tanto, el acceso a DTD y hojas de estilo externas se rechaza en cualquier implementación JAXP que respete esos atributos, incluida Saxon-HE.

Mitigación si no puede actualizar

No envíe XSL-FO no confiable a un productor fop:, o elimine el TransformerFactory JAXP alternativo (como Saxon-HE) del classpath para que se use el transformador del JDK —que ya rechaza las DTD externas bajo procesamiento seguro—.

Descargo de responsabilidad

Este repositorio se publica con fines educativos y defensivos: para ayudar a los usuarios de Apache Camel a comprender la vulnerabilidad, verificar si se ven afectados y confirmar que la actualización la resuelve. La DTD externa apunta a una devolución de llamada en proceso en localhost; no se contacta nada fuera del reproductor y no se lee ningún archivo sensible. No utilice este material contra sistemas que no sean de su propiedad o que no opere.

Descargar herramienta