← Back to CVE Explorer

CVE-2026-3840

Full vulnerability record from the local CVENow database.

Description

A vulnerability in Kedro version 1.2.0 allows an attacker to exploit path traversal by providing a crafted version string. The `_get_versioned_path()` method in `kedro/io/core.py` directly interpolates user-supplied version strings into filesystem paths without sanitization. This enables an attacker to escape the intended versioned dataset directory and access files outside the expected path. The issue is also reachable through the CLI via the `--load-versions` parameter, as `_split_load_versions()` in `kedro/framework/cli/utils.py` does not validate the version string. This vulnerability can lead to unauthorized file reads, data poisoning, cross-project or cross-tenant data access, and broader downstream impacts in environments where Kedro is used with automation or orchestration layers.

Severity
HIGH
CVSS score
7.1 (v3.0)
Vulnerability status
Analyzed
Source identifier
Published
2026-06-12 17:16:22.603000
Last modified
2026-10-26 11:10:00.157000
View original CVE JSON
{
  "id": "CVE-2026-3840",
  "sourceIdentifier": "[email protected]",
  "published": "2026-06-12T17:16:22.603",
  "lastModified": "2026-10-26T11:10:00.157",
  "vulnStatus": "Analyzed",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "A vulnerability in Kedro version 1.2.0 allows an attacker to exploit path traversal by providing a crafted version string. The `_get_versioned_path()` method in `kedro/io/core.py` directly interpolates user-supplied version strings into filesystem paths without sanitization. This enables an attacker to escape the intended versioned dataset directory and access files outside the expected path. The issue is also reachable through the CLI via the `--load-versions` parameter, as `_split_load_versions()` in `kedro/framework/cli/utils.py` does not validate the version string. This vulnerability can lead to unauthorized file reads, data poisoning, cross-project or cross-tenant data access, and broader downstream impacts in environments where Kedro is used with automation or orchestration layers."
    },
    {
      "lang": "es",
      "value": "Una vulnerabilidad en Kedro versión 1.2.0 permite a un atacante explotar un salto de ruta proporcionando una cadena de versión manipulada. El método “_get_versioned_path()” en “kedro/io/core.py” interpola directamente las cadenas de versión proporcionadas por el usuario en las rutas del sistema de archivos sin saneamiento. Esto permite a un atacante escapar del directorio de conjunto de datos versionado previsto y acceder a archivos fuera de la ruta esperada. El problema también es accesible a través de la CLI mediante el parámetro “--load-versions”, ya que “_split_load_versions()” en “kedro/framework/cli/utils.py” no valida la cadena de versión. Esta vulnerabilidad puede conducir a lecturas de archivos no autorizadas, envenenamiento de datos, acceso a datos entre proyectos o entre inquilinos, y a impactos descendentes más amplios en entornos donde Kedro se utiliza con capas de automatización u orquestación."
    }
  ],
  "affected": [
    {
      "source": "[email protected]",
      "affectedData": [
        {
          "vendor": "kedro-org",
          "product": "kedro-org/kedro",
          "versions": [
            {
              "version": "unspecified",
              "lessThanOrEqual": "latest",
              "versionType": "custom",
              "status": "affected"
            }
          ]
        }
      ]
    }
  ],
  "metrics": {
    "cvssMetricV30": [
      {
        "source": "[email protected]",
        "type": "Secondary",
        "cvssData": {
          "version": "3.0",
          "vectorString": "CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N",
          "baseScore": 7.1,
          "baseSeverity": "HIGH",
          "attackVector": "LOCAL",
          "attackComplexity": "LOW",
          "privilegesRequired": "LOW",
          "userInteraction": "NONE",
          "scope": "UNCHANGED",
          "confidentialityImpact": "HIGH",
          "integrityImpact": "HIGH",
          "availabilityImpact": "NONE"
        },
        "exploitabilityScore": 1.8,
        "impactScore": 5.2
      }
    ],
    "ssvcV203": [
      {
        "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
        "ssvcData": {
          "timestamp": "2026-06-12T17:20:38.188127Z",
          "id": "CVE-2026-3840",
          "options": [
            {
              "exploitation": "poc"
            },
            {
              "automatable": "no"
            },
            {
              "technicalImpact": "total"
            }
          ],
          "role": "CISA Coordinator",
          "version": "2.0.3"
        }
      }
    ]
  },
  "weaknesses": [
    {
      "source": "[email protected]",
      "type": "Secondary",
      "description": [
        {
          "lang": "en",
          "value": "CWE-22"
        }
      ]
    }
  ],
  "configurations": [
    {
      "nodes": [
        {
          "operator": "OR",
          "negate": false,
          "cpeMatch": [
            {
              "vulnerable": true,
              "criteria": "cpe:2.3:a:linuxfoundation:kedro:1.2.0:*:*:*:*:python:*:*",
              "matchCriteriaId": "D914ECF7-0C7D-425A-884D-C4BC28E5DBAF"
            }
          ]
        }
      ]
    }
  ],
  "references": [
    {
      "url": "https://huntr.com/bounties/156dead0-1ad5-487f-b7f5-84e707277f76",
      "source": "[email protected]",
      "tags": [
        "Exploit",
        "Third Party Advisory"
      ]
    },
    {
      "url": "https://huntr.com/bounties/156dead0-1ad5-487f-b7f5-84e707277f76",
      "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
      "tags": [
        "Exploit",
        "Third Party Advisory"
      ]
    }
  ]
}