{"id":"CVE-2026-49297","aliases":["EUVD-2026-41869","GHSA-v3mh-27qj-w836","PYSEC-2026-2084"],"status":"published","title":"Apache Airflow Google provider: Path traversal via GCS object names → local/SFTP filesystem (GCSToSFTPOperator + GCSTimeSpanFileTransformOperator)","description":"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.","severity":{"version":"3.1","score":8.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H","level":"high","assessor":"adp","from":"cve"},"epss":{"day":"2026-11-12","score":0.00994,"percentile":0.63097,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-22"],"published":"2026-07-06T09:54:07Z","modified":"2026-11-11T02:49:00Z","fixes":[{"ecosystem":"PyPI","package":"apache-airflow-providers-google","fixed_in":["22.2.1"],"sources":["ghsa","osv"]}],"affected":[{"source":"ghsa","ecosystem":"PyPI","package":"apache-airflow-providers-google","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"22.2.1"}]}]},{"source":"osv","ecosystem":"PyPI","package":"apache-airflow-providers-google","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"22.2.1"}]}],"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"]},{"source":"osv","ecosystem":"PyPI","package":"apache-airflow-providers-google","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"22.2.1"}]}],"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"]}],"products":[{"vendor":"apache","product":"apache-airflow-providers-google"},{"vendor":"apache software foundation","product":"apache airflow google provider"}],"references":[{"url":"https://github.com/apache/airflow/pull/67667","tags":["patch","Exploit","Issue Tracking","Patch","fix","web"]},{"url":"https://lists.apache.org/thread/cb5nvoxsj1q7rv878cyqgtg150w0zglq?users@airflow.apache.org","tags":["vendor-advisory","Mailing List","Vendor Advisory","advisory","web"]},{"url":"http://www.openwall.com/lists/oss-security/2026/07/04/8","tags":["Mailing List","Third Party Advisory","web","advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-49297","tags":["advisory"]},{"url":"https://github.com/apache/airflow/commit/0385bae70553223677753047b3e779d8b86b15c4","tags":["web"]},{"url":"https://github.com/pypa/advisory-database/tree/main/vulns/apache-airflow-providers-google/PYSEC-2026-2084.yaml","tags":["web"]},{"url":"https://github.com/advisories/GHSA-v3mh-27qj-w836","tags":["advisory"]},{"url":"https://pypi.python.org","tags":["web"]},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/49xxx/CVE-2026-49297.json","tags":["advisory"]},{"url":"https://github.com/apache/airflow","tags":["package"]}],"sources":{"cve":[{"id":"CVE-2026-49297","title":"Apache Airflow Google provider: Path traversal via GCS object names → local/SFTP filesystem (GCSToSFTPOperator + GCSTimeSpanFileTransformOperator)","description":"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.","status":"published","published":"2026-07-06T09:54:07.148Z","modified":"2026-07-06T19:26:04.051Z","cvss":[{"version":"3.1","score":8.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H","level":"high","assessor":"adp"}],"cwes":["CWE-22"],"updated_at":"2026-11-02T13:35:10.963527Z"}],"euvd":[{"id":"EUVD-2026-41869","description":"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.","status":"published","published":"2026-07-06T09:54:07Z","modified":"2026-07-06T19:26:04Z","cvss":[{"version":"3.1","score":8.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H","level":"high"}],"updated_at":"2026-11-02T18:20:12.41351Z"}],"ghsa":[{"id":"GHSA-v3mh-27qj-w836","title":"Apache Airflow Google provider allows path traversal through GCS object names","description":"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.","status":"published","published":"2026-07-06T12:31:30Z","modified":"2026-09-04T19:22:14Z","cvss":[{"version":"3.1","score":8.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H","level":"high"}],"cwes":["CWE-22"],"updated_at":"2026-11-02T14:41:12.487077Z"}],"nvd":[{"id":"CVE-2026-49297","description":"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.","status":"published","published":"2026-07-06T11:16:30.207Z","modified":"2026-10-25T15:10:00.147Z","cvss":[{"version":"3.1","score":8.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H","level":"high","assessor":"secondary"}],"cwes":["CWE-22"],"updated_at":"2026-11-02T14:12:28.040501Z"}],"osv":[{"id":"CVE-2026-49297","title":"Apache Airflow Google provider: Path traversal via GCS object names → local/SFTP filesystem (GCSToSFTPOperator + GCSTimeSpanFileTransformOperator)","description":"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.","status":"published","published":"2026-07-06T09:54:07.148Z","modified":"2026-11-11T02:49:00.963637458Z","cvss":[{"version":"3.1","score":8.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H","level":"high"}],"cwes":["CWE-22"],"updated_at":"2026-11-11T03:21:28.618498Z"},{"id":"GHSA-v3mh-27qj-w836","title":"Apache Airflow Google provider allows path traversal through GCS object names","description":"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.","status":"published","published":"2026-07-06T12:31:30Z","modified":"2026-09-04T19:40:33.043155846Z","cvss":[{"version":"3.1","score":8.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H","level":"high"}],"cwes":["CWE-22"],"updated_at":"2026-11-02T15:46:56.639206Z"},{"id":"PYSEC-2026-2084","description":"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.","status":"published","published":"2026-07-06T11:16:30.207Z","modified":"2026-09-10T11:15:08.155028031Z","cvss":[{"version":"3.1","score":8.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H","level":"high"}],"updated_at":"2026-11-02T15:52:55.537808Z"}]}}
