PYSEC-2026-2084

Vulnerability from pysec - Published: 2026-07-06 11:16 - Updated: 2026-07-09 10:35
VLAI
Details

Apache Airflow's Google provider operators GCSToSFTPOperator and GCSTimeSpanFileTransformOperator joined GCS object names returned by the bucket listing API directly to a destination filesystem path without normalisation or containment check. A user with write access to the source GCS bucket (typically a different trust principal than the DAG author — partner uploads, ingest-only service accounts, public-data buckets) could create an object whose name contains .. segments and cause the DAG run to write the downloaded blob outside the configured destination (the SFTP destination_path for GCSToSFTPOperator; the worker-local temp directory for GCSTimeSpanFileTransformOperator), enabling overwrite of arbitrary files on the SFTP server or the worker host. Affects deployments that ingest from buckets writable by less-trusted principals. Users are advised to upgrade to apache-airflow-providers-google 22.2.1 or later.

Impacted products
Name purl
apache-airflow-providers-google pkg:pypi/apache-airflow-providers-google
Aliases

{
  "affected": [
    {
      "ecosystem_specific": {},
      "package": {
        "ecosystem": "PyPI",
        "name": "apache-airflow-providers-google",
        "purl": "pkg:pypi/apache-airflow-providers-google"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "0"
            },
            {
              "fixed": "22.2.1"
            }
          ],
          "type": "ECOSYSTEM"
        }
      ],
      "versions": [
        "1.0.0",
        "1.0.0b1",
        "1.0.0b2",
        "1.0.0rc1",
        "10.0.0",
        "10.0.0rc1",
        "10.1.0",
        "10.1.0rc1",
        "10.1.0rc2",
        "10.1.1",
        "10.1.1rc1",
        "10.10.0",
        "10.10.0rc1",
        "10.10.1",
        "10.10.1rc1",
        "10.11.0",
        "10.11.0rc1",
        "10.11.1",
        "10.11.1rc1",
        "10.12.0",
        "10.12.0rc1",
        "10.13.0",
        "10.13.0rc1",
        "10.13.0rc2",
        "10.13.0rc3",
        "10.13.1",
        "10.13.1rc1",
        "10.14.0",
        "10.14.0rc1",
        "10.14.0rc2",
        "10.15.0",
        "10.15.0rc1",
        "10.16.0",
        "10.16.0rc1",
        "10.17.0",
        "10.17.0rc1",
        "10.18.0",
        "10.18.0rc1",
        "10.18.0rc2",
        "10.19.0",
        "10.19.0rc1",
        "10.2.0",
        "10.2.0rc1",
        "10.20.0",
        "10.20.0rc1",
        "10.21.0",
        "10.21.0rc1",
        "10.21.1",
        "10.21.1rc1",
        "10.21.1rc2",
        "10.22.0",
        "10.22.0rc1",
        "10.23.0",
        "10.23.0rc1",
        "10.24.0",
        "10.24.0rc1",
        "10.25.0",
        "10.25.0rc1",
        "10.26.0",
        "10.26.0rc1",
        "10.3.0",
        "10.3.0rc1",
        "10.3.0rc2",
        "10.4.0",
        "10.4.0rc1",
        "10.5.0",
        "10.5.0rc1",
        "10.6.0",
        "10.6.0rc1",
        "10.6.0rc2",
        "10.6.0rc3",
        "10.7.0",
        "10.7.0rc1",
        "10.8.0",
        "10.8.0rc1",
        "10.9.0",
        "10.9.0rc1",
        "11.0.0",
        "11.0.0rc1",
        "12.0.0",
        "12.0.0rc1",
        "12.0.0rc2",
        "13.0.0",
        "14.0.0",
        "14.0.0rc1",
        "14.1.0",
        "14.1.0rc1",
        "15.0.0",
        "15.0.0rc1",
        "15.0.1",
        "15.0.1rc1",
        "15.1.0",
        "15.1.0rc1",
        "16.0.0",
        "16.0.0rc1",
        "16.1.0",
        "16.1.0rc1",
        "17.0.0",
        "17.0.0rc1",
        "17.1.0",
        "17.1.0rc1",
        "17.2.0",
        "17.2.0rc1",
        "18.0.0",
        "18.0.0rc1",
        "18.1.0",
        "18.1.0rc1",
        "19.0.0",
        "19.0.0rc1",
        "19.1.0",
        "19.1.0rc1",
        "19.1.0rc2",
        "19.2.0",
        "19.2.0rc1",
        "19.3.0",
        "19.3.0rc1",
        "19.4.0",
        "19.4.0rc1",
        "19.4.0rc2",
        "19.5.0",
        "19.5.0rc1",
        "2.0.0",
        "2.0.0rc1",
        "2.1.0",
        "2.1.0rc1",
        "2.2.0",
        "2.2.0rc1",
        "20.0.0",
        "20.0.0rc1",
        "20.0.0rc2",
        "21.0.0",
        "21.0.0rc1",
        "21.0.0rc2",
        "21.1.0",
        "21.1.0rc1",
        "21.2.0",
        "21.2.0rc1",
        "21.3.0",
        "21.3.0rc1",
        "22.0.0",
        "22.0.0rc1",
        "22.1.0",
        "22.1.0rc1",
        "22.2.0",
        "22.2.0rc1",
        "22.2.1rc1",
        "3.0.0",
        "3.0.0rc1",
        "4.0.0",
        "4.0.0rc1",
        "4.0.0rc2",
        "4.1.0rc1",
        "5.0.0",
        "5.0.0rc2",
        "5.1.0",
        "5.1.0rc1",
        "6.0.0",
        "6.0.0rc1",
        "6.1.0",
        "6.1.0rc1",
        "6.2.0",
        "6.2.0rc1",
        "6.3.0",
        "6.3.0rc1",
        "6.4.0",
        "6.4.0rc1",
        "6.4.0rc2",
        "6.4.0rc3",
        "6.5.0",
        "6.5.0rc1",
        "6.6.0",
        "6.6.0rc1",
        "6.7.0",
        "6.7.0rc1",
        "6.8.0",
        "6.8.0rc1",
        "7.0.0",
        "7.0.0rc1",
        "8.0.0",
        "8.0.0rc1",
        "8.0.0rc2",
        "8.1.0",
        "8.1.0rc1",
        "8.10.0",
        "8.10.0rc1",
        "8.11.0",
        "8.11.0rc1",
        "8.12.0",
        "8.12.0rc1",
        "8.2.0",
        "8.2.0rc1",
        "8.3.0",
        "8.3.0rc1",
        "8.3.0rc2",
        "8.3.0rc3",
        "8.4.0",
        "8.4.0rc1",
        "8.4.0rc2",
        "8.5.0",
        "8.5.0rc1",
        "8.6.0",
        "8.6.0rc2",
        "8.6.0rc3",
        "8.7.0",
        "8.7.0rc1",
        "8.7.0rc2",
        "8.8.0",
        "8.8.0rc1",
        "8.9.0",
        "8.9.0rc1",
        "9.0.0",
        "9.0.0rc1",
        "9.0.0rc2"
      ]
    }
  ],
  "aliases": [
    "CVE-2026-49297"
  ],
  "details": "Apache Airflow\u0027s Google provider operators `GCSToSFTPOperator` and `GCSTimeSpanFileTransformOperator` joined GCS object names returned by the bucket listing API directly to a destination filesystem path without normalisation or containment check. A user with write access to the source GCS bucket (typically a different trust principal than the DAG author \u2014 partner uploads, ingest-only service accounts, public-data buckets) could create an object whose name contains `..` segments and cause the DAG run to write the downloaded blob outside the configured destination (the SFTP `destination_path` for `GCSToSFTPOperator`; the worker-local temp directory for `GCSTimeSpanFileTransformOperator`), enabling overwrite of arbitrary files on the SFTP server or the worker host. Affects deployments that ingest from buckets writable by less-trusted principals. Users are advised to upgrade to `apache-airflow-providers-google` 22.2.1 or later.",
  "id": "PYSEC-2026-2084",
  "modified": "2026-07-09T10:35:30.987125Z",
  "published": "2026-07-06T11:16:30.207Z",
  "references": [
    {
      "type": "ADVISORY",
      "url": "http://www.openwall.com/lists/oss-security/2026/07/04/8"
    },
    {
      "type": "ADVISORY",
      "url": "https://lists.apache.org/thread/cb5nvoxsj1q7rv878cyqgtg150w0zglq?users@airflow.apache.org"
    },
    {
      "type": "FIX",
      "url": "https://github.com/apache/airflow/pull/67667"
    }
  ],
  "severity": [
    {
      "score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H",
      "type": "CVSS_V3"
    }
  ]
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…