CVE-2026-66906
Apache Camel: Camel-Azure-Storage-Blob: la operación downloadBlobToFile construye el destino de descarga local a partir del nombre del blob remoto sin restringirlo al fileDir configurado
- Publicado
- 24 ago 2026
- Actualizado
- 25 ago 2026
- Asignación de CNA
- apache
- Evidencia observada
- 24 ago 2026
CVSS primario
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:NBajo · próximos 30 días
- Percentil
- 43,6 %
- Fecha del modelo
- 21 sept 2026
EPSS es una estimación estadística, no una certeza o una medida de impacto. Combínelo con CVSS, estado KEV, exposición y su entorno.
Resumen
Vulnerabilidad de traversal de ruta relativa en el componente camel-azure-storage-blob de Apache Camel. Este problema afecta a Apache Camel: desde 4.0.0 antes de 4.14.9, desde 4.15.0 antes de 4.18.4, desde 4.19.0 antes de 4.22.0. El componente camel-azure-storage-blob puede descargar un blob de Azure Storage al sistema de archivos local mediante su operación downloadBlobToFile, escribiendo en el directorio nombrado por la opción de endpoint fileDir, que está documentada como utilizable tanto desde el producer como desde el consumer. BlobOperations.downloadBlobToFile construía el destino local uniendo fileDir con el nombre del blob remoto exactamente como lo reportaba el SDK de Azure (new File(fileDir, client.getBlobName())) y pasaba el resultado directamente a la llamada de descarga del SDK, sin normalización léxica y sin comprobar que la ubicación resuelta permaneciera dentro de fileDir. El nombre del blob no son datos controlados por la ruta: el consumer enumera el contenedor en BlobConsumer.createBatchExchangesFromContainer, que lista los blobs y crea un exchange por cada entrada a partir de BlobItem.getName() tal cual, sin aplicar filtrado de nombres por defecto. Un nombre de blob que contenga segmentos de directorio padre se resolvía, por tanto, a una ubicación fuera del fileDir configurado, permitiendo que cualquiera capaz de influir en los nombres presentes en el contenedor consumido hiciera que Camel creara o sobrescribiera un archivo en una ubicación de su elección, con los privilegios del proceso de Camel. Dependiendo de lo que el proceso pueda escribir, sobrescribir un archivo fuera del directorio de descarga puede escalar más allá de la pérdida de integridad de ese archivo. Los contenedores de blobs de Azure Storage usan un espacio de nombres plano en el que el nombre del blob es una clave opaca, por lo que un nombre que contenga tales segmentos se almacena y se lista tal como se proporciona. La opción fileDir es un parámetro de configuración ordinario del grupo común y no lleva ningún marcador de seguridad, por lo que nada señalaba a los usuarios que su valor no se estaba aplicando como límite de contención. Los otros consumidores de descarga de archivos de Camel — camel-file, camel-ftp, camel-smb, camel-mina-sftp y camel-azure-files — ya restringían sus descargas locales al directorio configurado mediante una comprobación del límite de segmentos de ruta; la ruta de descarga de camel-azure-storage-blob no estaba cubierta por ese trabajo. Se recomienda a los usuarios actualizar a la versión 4.22.0, que corrige el problema. Si los usuarios están en la rama de versiones LTS 4.14.x, se les sugiere actualizar a 4.14.9. Si los usuarios están en la rama de versiones 4.18.x, se les sugiere actualizar a 4.18.4. Para despliegues que no puedan actualizar de inmediato, restrinjan los nombres sobre los que actuará el consumer usando la opción de endpoint regex, que se aplica a cada nombre de blob listado como coincidencia de cadena completa, de modo que solo se acepten nombres simples de un solo segmento y cualquier nombre que contenga un separador de ruta o un segmento de directorio padre sea filtrado antes de que se cree un exchange; la opción prefix puede además reducir el listado del lado del servidor, teniendo en cuenta que cuando ambas están establecidas, regex tiene prioridad y prefix se ignora. Alternativamente, eviten la operación downloadBlobToFile en contenedores no confiables y escriban la carga útil desde la ruta bajo un nombre de archivo que la propia ruta controle, en lugar de uno tomado del listado remoto. Como defensa en profundidad, traten los nombres de blob en cualquier contenedor externamente escribible como entrada no confiable y no deriven rutas locales del sistema de archivos a partir de ellos.
Uso responsable
Utilice información sobre vulnerabilidades solo en sistemas de su propiedad o que esté autorizado a probar. Kitploit enlaza con metadatos de investigación pública y no almacena código de explotación ni cargas útiles maliciosas.