CVE-2026-79983

Estado: En análisisAlta (7.4)—PoC
Gravedad7.4Alta · CVSS 3.1
Probabilidad de explotación0.52 %mayor que el 43 % de las CVE
Explotación activaNono figura en el catálogo de CISA
Exploit públicoDisponiblePrueba de concepto en GitHub (no verificada)

Vulnerabilidad de limitación inadecuada de un nombre de ruta a un directorio restringido ('Path Traversal') en el componente FTP de Apache Camel.

Este problema afecta a Apache Camel: desde la 4.0.0 anterior a la 4.18.5, desde la 4.19.0 anterior a la 4.22.1.

Los consumidores de archivos remotos de Camel sondean un directorio en un servidor remoto y construyen la ruta remota absoluta de cada archivo concatenando el directorio configurado con el nombre de archivo indicado en el listado de directorios del servidor.

Leer descripción completaMostrar menos

Esa concatenación (FtpUtils.absoluteFilePath y GenericFileConsumer) no aplicaba ninguna normalización léxica ni comprobaba que el resultado se mantuviera dentro del directorio sondeado, y la ruta resultante se convertía en el operando de todas las operaciones remotas posteriores sobre el archivo: recuperación (FtpOperations.retrieveFile / SftpOperations, alcanzada desde GenericFileConsumer, donde el nombre de recuperación se toma literalmente de GenericFile.getAbsoluteFilePath), eliminación cuando delete=true (GenericFileDeleteProcessStrategy) y renombrado cuando se configura move, preMove, moveFailed o readLock=rename (GenericFileProcessStrategySupport y GenericFileRenameExclusiveReadLockStrategy). Ni isValidFile ni isMatched realizaban comprobación alguna de contención. Por tanto, una entrada del listado que no fuera un único segmento de ruta se resolvía en una ruta fuera del directorio de sondeo configurado, lo que hacía que Camel leyera, eliminara o renombrara archivos situados fuera de él utilizando las propias credenciales del endpoint. Los nombres del listado no son datos controlados por la ruta: los proporciona el servidor remoto, y el canal de control FTP no ofrece ninguna protección de integridad, de modo que un atacante situado en la ruta de red puede reescribir una respuesta LIST sin disponer de ninguna credencial; un servidor comprometido, malicioso o multiinquilino, o un servidor respaldado por un sistema de archivos virtual, pueden emitir directamente ese nombre. La recuperación es alcanzable con una configuración predeterminada del consumidor, ya que los consumidores remotos descargan todos los archivos listados; la eliminación y el renombrado requieren además una de las opciones de disposición indicadas anteriormente, todas ellas habituales. El escape del directorio que Camel estaba configurado para sondear es incondicional, mientras que el escape de los límites de la cuenta propia del servidor depende además de si dicho servidor confina la cuenta. La opción jailStartingDirectory, que se documenta como restrictiva de Camel al directorio inicial y que está habilitada de forma predeterminada, regulaba las escrituras del productor y, desde el trabajo de contención de localWorkDirectory, las descargas del consumidor al directorio de trabajo local; sin embargo, no restringía este operando remoto, por lo que su nombre y su descripción afirmaban un límite que aquí no se aplicaba. El mismo punto de entrada ya había sido reconocido en el lado local: la ruta de descarga de localWorkDirectory se restringió para que un nombre de archivo remoto que contuviera segmentos de directorio padre no pudiera resolverse fuera del directorio de trabajo local. El operando remoto era la mitad restante de esa superficie. Este artefacto proporciona los esquemas ftp, ftps y sftp, que están todos afectados. El informante demostró el problema de extremo a extremo contra un endpoint ftp, haciendo funcionar una ruta de Camel con un servidor malicioso cuya respuesta LIST nombraba un archivo fuera del directorio sondeado.

Actualice a Apache Camel 4.23.0, que corrige el problema. Los usuarios de la rama 4.22.x deben actualizar a la 4.22.1. Los usuarios de las versiones LTS 4.18.x deben actualizar a la 4.18.5. La rama 4.14.x llegó al fin de su vida útil y no recibe esta corrección; los usuarios de dicha rama deben migrar a una rama con soporte.

Traducción automática del texto original de NVD (en inglés).

CVSS

Puntuación base
7.4
Versión
3.1
Vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N

Probabilidad de explotación (EPSS)

Probabilidad de explotación en los próximos 30 días
0.52 %
Percentil entre todas las CVEs puntuadas
43
Fecha de la puntuación
20/10/2026

EPSS (Exploit Prediction Scoring System, de FIRST) estima la probabilidad de que una vulnerabilidad sea explotada en 30 días. Complementa a CVSS (impacto) y a CISA KEV (explotación confirmada).

Exploits públicos

Hay código de explotación o plantillas de detección públicos. No es lo mismo que explotación activa confirmada (KEV), pero aumenta el riesgo: parchee con prioridad.

⚠️ Las pruebas de concepto de GitHub no están verificadas: algunas son falsas o contienen malware. No las ejecute nunca fuera de un laboratorio aislado.

Técnicas ATT&CK

Cómo se explota esta vulnerabilidad y qué consigue el atacante, en el lenguaje de MITRE ATT&CK.

Vector AV:N/PR:N/UI:N; un nombre de LIST remoto fuera del directorio permite a Camel leer, borrar o renombrar archivos ajenos con las credenciales del endpoint.

Inferido por nuestro agente de análisis a partir de la descripción oficial, el vector CVSS y la CWE, y comprobado por un supervisor. Puede contener errores.

Mitigaciones ATT&CK que cubren estas técnicas

Tecnologías afectadas (1)

⚠ Inferidas por IA a partir de la descripción — NVD aún no ha analizado esta CVE; no son CPE verificados.

CWE

Referencias

Mostrar las 7 referencias

JSON original (NVD)

Mostrar
{
  "id": "CVE-2026-79983",
  "cveTags": [],
  "metrics": {
    "ssvcV203": [
      {
        "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
        "ssvcData": {
          "id": "CVE-2026-79983",
          "role": "CISA Coordinator",
          "options": [
            {
              "exploitation": "poc"
            },
            {
              "automatable": "no"
            },
            {
              "technicalImpact": "total"
            }
          ],
          "version": "2.0.3",
          "timestamp": "2026-10-20T03:55:34.627383Z"
        }
      }
    ],
    "cvssMetricV31": [
      {
        "type": "Secondary",
        "source": "security@apache.org",
        "cvssData": {
          "scope": "UNCHANGED",
          "version": "3.1",
          "baseScore": 7.4,
          "attackVector": "NETWORK",
          "baseSeverity": "HIGH",
          "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N",
          "integrityImpact": "HIGH",
          "userInteraction": "NONE",
          "attackComplexity": "HIGH",
          "availabilityImpact": "NONE",
          "privilegesRequired": "NONE",
          "confidentialityImpact": "HIGH"
        },
        "impactScore": 5.2,
        "exploitabilityScore": 2.2
      }
    ]
  },
  "affected": [
    {
      "source": "security@apache.org",
      "affectedData": [
        {
          "vendor": "Apache Software Foundation",
          "product": "Apache Camel",
          "versions": [
            {
              "status": "affected",
              "version": "4.0.0",
              "lessThan": "4.18.5",
              "versionType": "maven"
            },
            {
              "status": "affected",
              "version": "4.19.0",
              "lessThan": "4.22.1",
              "versionType": "maven"
            },
            {
              "status": "unaffected",
              "version": "4.18.5",
              "versionType": "maven"
            },
            {
              "status": "unaffected",
              "version": "4.22.1",
              "versionType": "maven"
            },
            {
              "status": "unaffected",
              "version": "4.23.0",
              "versionType": "maven"
            }
          ],
          "packageURL": "pkg:maven/org.apache.camel/camel-ftp",
          "packageName": "org.apache.camel:camel-ftp",
          "collectionURL": "https://repo.maven.apache.org/maven2",
          "defaultStatus": "unaffected"
        }
      ]
    }
  ],
  "published": "2026-10-19T11:17:20.207",
  "references": [
    {
      "url": "https://camel.apache.org/security/CVE-2026-79983.html",
      "source": "security@apache.org"
    },
    {
      "url": "https://github.com/apache/camel/pull/25730",
      "source": "security@apache.org"
    },
    {
      "url": "https://github.com/apache/camel/pull/25745",
      "source": "security@apache.org"
    },
    {
      "url": "https://github.com/apache/camel/pull/25746",
      "source": "security@apache.org"
    },
    {
      "url": "https://github.com/apache/camel/pull/25747",
      "source": "security@apache.org"
    },
    {
      "url": "https://issues.apache.org/jira/browse/CAMEL-24487",
      "source": "security@apache.org"
    },
    {
      "url": "https://github.com/oscerd/CVE-2026-79983",
      "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0"
    }
  ],
  "vulnStatus": "Undergoing Analysis",
  "weaknesses": [
    {
      "type": "Secondary",
      "source": "security@apache.org",
      "description": [
        {
          "lang": "en",
          "value": "CWE-22"
        }
      ]
    }
  ],
  "descriptions": [
    {
      "lang": "en",
      "value": "Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal') vulnerability in Apache Camel FTP component.\n\n\n\nThis issue affects Apache Camel: from 4.0.0 before 4.18.5, from 4.19.0 before 4.22.1.\n\n\n\nThe Camel remote-file consumers poll a directory on a remote server and build the absolute remote path of each file by concatenating the configured directory with the file name reported in the server's directory listing. That concatenation (FtpUtils.absoluteFilePath and GenericFileConsumer) applied no lexical normalization and no check that the result stayed inside the directory being polled, and the resulting path became the operand for every subsequent remote operation on the file: retrieval (FtpOperations.retrieveFile / SftpOperations, reached from GenericFileConsumer where the retrieve name is taken verbatim from GenericFile.getAbsoluteFilePath), deletion when delete=true (GenericFileDeleteProcessStrategy), and renaming when move, preMove, moveFailed or readLock=rename is configured (GenericFileProcessStrategySupport and GenericFileRenameExclusiveReadLockStrategy). Neither isValidFile nor isMatched performed any containment check. A listing entry that is not a single path segment therefore resolved to a path outside the configured polling directory, causing Camel to read, delete or rename files outside it using the endpoint's own credentials. A listing name is not route-controlled data. It is supplied by the remote server, and the FTP control channel carries no integrity protection at all, so an on-path attacker can rewrite a LIST response without holding any credentials; a compromised, malicious or multi-tenant server, or a server backed by a virtual filesystem, can emit such a name directly. Retrieval is reachable in a default consumer configuration, since the remote consumers download every listed file; deletion and renaming additionally require one of the disposition options above, all of which are common. Escape from the directory Camel was configured to poll is unconditional, while escape from the server's own account boundary additionally depends on whether that server confines the account. The jailStartingDirectory option, which is documented as restricting Camel to the starting directory and is enabled by default, governed producer writes and, since the localWorkDirectory containment work, consumer downloads to the local work directory - but it did not constrain this remote operand, so its name and description claimed a boundary that was not enforced here. The same entry point had already been recognised on the local side: the localWorkDirectory download path was constrained so that a remote file name containing parent-directory segments could not resolve outside the local work directory. The remote operand was the remaining half of that surface. This artifact provides the ftp, ftps and sftp schemes, all of which are affected. The reporter demonstrated the issue end to end against an ftp endpoint, driving a Camel route with a malicious server whose LIST response named a file outside the polled directory.\n\n\n\nUpgrade to Apache Camel 4.23.0, which fixes the issue. Users on the 4.22.x releases stream should upgrade to 4.22.1. Users on the 4.18.x LTS releases stream should upgrade to 4.18.5. The 4.14.x stream reached end of life and does not receive this fix; users on it should move to a supported releases stream."
    }
  ],
  "lastModified": "2026-10-20T14:17:01.710",
  "sourceIdentifier": "security@apache.org"
}