Skip to content
Heist/ feed
Back to feed
High

kedro-datasets 9.3.0 through 9.6.0 Path Traversal via MatplotlibDataset Plot Name

Type: advisorySources: OSV

kedro-datasets from 9.3.0 through 9.6.0 contains a path traversal vulnerability in MatplotlibDataset.save() that allows attackers to write files outside the dataset directory by supplying absolute plot names. Because validate_sub_path() strips leading slashes while pathlib's join discards the base path, attackers can create or overwrite files anywhere the process can write.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-111170, CVE-2026-35492
Confirmed fixed CVEs
Not specified
Updated in this feed
3 Nov 2026, 07:36 UTC · Revision 1

Source evidence

kedro-datasets 9.3.0 through 9.6.0 Path Traversal via MatplotlibDataset Plot Name

core-osv · Original source

Published 15 Oct 2026, 18:57 UTC

kedro-datasets from 9.3.0 through 9.6.0 contains a path traversal vulnerability in MatplotlibDataset.save() that allows attackers to write files outside the dataset directory by supplying absolute plot names. Because validate_sub_path() strips leading slashes while pathlib's join discards the base path, attackers can create or overwrite files anywhere the process can write.

osv:CVE-2026-111170
Complete source record
{
  "id": "f432f25c775253f16e03d1fb8f0a8fd193222431b2f5f902ac937f0902f2a9ae",
  "url": "https://osv.dev/vulnerability/CVE-2026-111170",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "kedro-datasets 9.3.0 through 9.6.0 Path Traversal via MatplotlibDataset Plot Name",
    "summary": "kedro-datasets from 9.3.0 through 9.6.0 contains a path traversal vulnerability in MatplotlibDataset.save() that allows attackers to write files outside the dataset directory by supplying absolute plot names. Because validate_sub_path() strips leading slashes while pathlib's join discards the base path, attackers can create or overwrite files anywhere the process can write.",
    "evidence": "osv:CVE-2026-111170",
    "products": [],
    "severity": "high",
    "structured": {
      "id": "CVE-2026-111170",
      "aliases": [
        "CVE-2026-111170",
        "CVE-2026-35492",
        "GHSA-cjg8-h5qc-hrjv",
        "PYSEC-2026-2545"
      ],
      "metrics": [
        {
          "type": "CVSS_V4",
          "score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/kedro-org/kedro-plugins",
              "type": "GIT",
              "events": [
                {
                  "introduced": "b211f045df8bd0bda147354b59614ad337a2a741"
                },
                {
                  "last_affected": "611ce7a20dcb0be655190afb9064468fa278b08c"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "9.3.0"
                      },
                      {
                        "last_affected": "9.6.0"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StandardRange"
                  },
                  {
                    "range": [
                      {
                        "introduced": "9.3.0"
                      },
                      {
                        "last_affected": "9.6.0"
                      }
                    ],
                    "source": "DESCRIPTION"
                  }
                ]
              }
            }
          ],
          "versions": [
            "kedro-datasets-9.6.0",
            "kedro-airflow-0.11.0",
            "kedro-datasets-9.5.0",
            "kedro-datasets-9.4.0",
            "kedro-telemetry-0.8.0",
            "kedro-datasets-9.3.0"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-111170.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:26.591864132Z",
      "provider": "osv",
      "references": [
        "https://pypi.org",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/111xxx/CVE-2026-111170.json",
        "https://github.com/kedro-org/kedro-plugins/security/advisories/GHSA-cjg8-h5qc-hrjv",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-111170",
        "https://www.vulncheck.com/advisories/kedro-datasets-9.3.0-through-9.6.0-path-traversal-via-matplotlibdataset-plot-name",
        "https://github.com/kedro-org/kedro-plugins/pull/1544",
        "https://github.com/kedro-org/kedro-plugins",
        "https://github.com/kedro-org/kedro-plugins/blob/611ce7a20dcb0be655190afb9064468fa278b08c/kedro-datasets/kedro_datasets/_utils/security.py#L22",
        "https://github.com/kedro-org/kedro-plugins/blob/611ce7a20dcb0be655190afb9064468fa278b08c/kedro-datasets/kedro_datasets/matplotlib/matplotlib_dataset.py#L198-L201"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-22"
        ],
        "cna_assigner": "VulnCheck",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/111xxx/CVE-2026-111170.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-111170",
        "evidence": "/id"
      },
      {
        "value": "CVE-2026-35492",
        "evidence": "/aliases"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 493432,
  "published_at": "2026-10-15T18:57:55.295+00:00"
}