{"id":"CVE-2026-50203","aliases":["EUVD-2026-37520","GHSA-qf38-jq28-3ccq","PYSEC-2026-218"],"status":"published","title":"Apache Airflow SFTP provider: Path traversal in SFTPHook.retrieve_directory allows local file write outside the destination directory via malicious server-supplied directory-entry names","description":"A path traversal in the SFTP provider (`SFTPHook.retrieve_directory` / `SFTPOperator(operation=get)`) let a malicious or compromised remote SFTP server write files outside the configured local destination directory via crafted directory-entry names. No Airflow account is required — the attack surface is any deployment downloading directories from an untrusted SFTP server. Upgrade `apache-airflow-providers-sftp` to 5.8.1 or later.","severity":{"version":"3.1","score":9.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N","level":"critical","assessor":"adp","from":"cve"},"epss":{"day":"2026-11-11","score":0.00626,"percentile":0.50469,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-22"],"published":"2026-06-17T01:47:49Z","modified":"2026-10-28T02:31:10Z","fixes":[{"ecosystem":"PyPI","package":"apache-airflow-providers-sftp","fixed_in":["5.8.1"],"sources":["ghsa","osv"]}],"affected":[{"source":"ghsa","ecosystem":"PyPI","package":"apache-airflow-providers-sftp","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"5.8.1"}]}]},{"source":"osv","ecosystem":"PyPI","package":"apache-airflow-providers-sftp","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"5.8.1"}]}],"versions":["1.0.0","1.0.0b1","1.0.0b2","1.0.0rc1","1.1.0","1.1.0rc1","1.1.1","1.1.1rc1","1.2.0","1.2.0rc1","2.0.0","2.0.0rc1","2.0.0rc2","2.1.0","2.1.0rc1","2.1.0rc2","2.1.1","2.1.1rc1","2.2.0","2.2.0rc1","2.3.0","2.3.0rc1","2.4.0","2.4.0rc1","2.4.1","2.4.1rc1","2.5.0","2.5.0rc1","2.5.1","2.5.1rc1","2.5.2","2.5.2rc1","2.6.0","2.6.0rc1","3.0.0","3.0.0rc1","3.0.0rc2","3.1.0rc1","4.0.0","4.0.0rc1","4.1.0","4.1.0rc1","4.10.0","4.10.0rc1","4.10.1","4.10.1rc1","4.10.2","4.10.2rc1","4.10.3","4.10.3rc1","4.11.0","4.11.0rc1","4.11.1","4.11.1rc1","4.2.0","4.2.0rc1","4.2.1","4.2.1rc1","4.2.1rc2","4.2.2","4.2.2rc1","4.2.3","4.2.3rc1","4.2.4","4.2.4rc1","4.3.0","4.3.0rc1","4.3.0rc2","4.3.1","4.3.1rc1","4.4.0","4.4.0rc1","4.5.0","4.5.0rc1","4.6.0","4.6.0rc1","4.6.1","4.6.1rc1","4.7.0","4.7.0rc1","4.8.0","4.8.0rc1","4.8.1","4.8.1rc1","4.9.0","4.9.0rc1","4.9.1","4.9.1rc1","5.0.0","5.0.0rc1","5.0.0rc2","5.1.0","5.1.0rc1","5.1.1","5.1.1rc1","5.1.2","5.1.2rc1","5.2.0","5.2.0rc1","5.2.1","5.2.1rc1","5.3.0","5.3.0rc1","5.3.1","5.3.1rc1","5.3.2","5.3.2rc1","5.3.3","5.3.3rc1","5.3.4","5.3.4rc1","5.4.0","5.4.0rc1","5.4.1","5.4.1rc1","5.4.2","5.4.2rc1","5.5.0","5.5.0rc1","5.5.1","5.5.1rc1","5.6.0","5.6.0rc1","5.7.0","5.7.0rc1","5.7.1","5.7.1rc1","5.7.2","5.7.2rc1","5.7.3","5.7.3rc1","5.7.4","5.7.4rc1","5.8.0","5.8.0rc1","5.8.1rc1"]},{"source":"osv","ecosystem":"PyPI","package":"apache-airflow-providers-sftp","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"5.8.1"}]}],"versions":["1.0.0","1.0.0b1","1.0.0b2","1.0.0rc1","1.1.0","1.1.0rc1","1.1.1","1.1.1rc1","1.2.0","1.2.0rc1","2.0.0","2.0.0rc1","2.0.0rc2","2.1.0","2.1.0rc1","2.1.0rc2","2.1.1","2.1.1rc1","2.2.0","2.2.0rc1","2.3.0","2.3.0rc1","2.4.0","2.4.0rc1","2.4.1","2.4.1rc1","2.5.0","2.5.0rc1","2.5.1","2.5.1rc1","2.5.2","2.5.2rc1","2.6.0","2.6.0rc1","3.0.0","3.0.0rc1","3.0.0rc2","3.1.0rc1","4.0.0","4.0.0rc1","4.1.0","4.1.0rc1","4.10.0","4.10.0rc1","4.10.1","4.10.1rc1","4.10.2","4.10.2rc1","4.10.3","4.10.3rc1","4.11.0","4.11.0rc1","4.11.1","4.11.1rc1","4.2.0","4.2.0rc1","4.2.1","4.2.1rc1","4.2.1rc2","4.2.2","4.2.2rc1","4.2.3","4.2.3rc1","4.2.4","4.2.4rc1","4.3.0","4.3.0rc1","4.3.0rc2","4.3.1","4.3.1rc1","4.4.0","4.4.0rc1","4.5.0","4.5.0rc1","4.6.0","4.6.0rc1","4.6.1","4.6.1rc1","4.7.0","4.7.0rc1","4.8.0","4.8.0rc1","4.8.1","4.8.1rc1","4.9.0","4.9.0rc1","4.9.1","4.9.1rc1","5.0.0","5.0.0rc1","5.0.0rc2","5.1.0","5.1.0rc1","5.1.1","5.1.1rc1","5.1.2","5.1.2rc1","5.2.0","5.2.0rc1","5.2.1","5.2.1rc1","5.3.0","5.3.0rc1","5.3.1","5.3.1rc1","5.3.2","5.3.2rc1","5.3.3","5.3.3rc1","5.3.4","5.3.4rc1","5.4.0","5.4.0rc1","5.4.1","5.4.1rc1","5.4.2","5.4.2rc1","5.5.0","5.5.0rc1","5.5.1","5.5.1rc1","5.6.0","5.6.0rc1","5.7.0","5.7.0rc1","5.7.1","5.7.1rc1","5.7.2","5.7.2rc1","5.7.3","5.7.3rc1","5.7.4","5.7.4rc1","5.8.0","5.8.0rc1","5.8.1rc1"]}],"products":[{"vendor":"apache","product":"apache-airflow-providers-sftp"},{"vendor":"apache software foundation","product":"apache airflow sftp provider"}],"references":[{"url":"https://github.com/apache/airflow/pull/67985","tags":["patch","Issue Tracking","Patch","fix","web"]},{"url":"https://lists.apache.org/thread/7f4b284oh44c1n95oq8mh1qc7y1lr9dx","tags":["vendor-advisory","Mailing List","Vendor Advisory","advisory","web"]},{"url":"http://www.openwall.com/lists/oss-security/2026/06/16/3","tags":["Mailing List","Third Party Advisory","web","advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-50203","tags":["advisory"]},{"url":"https://github.com/pypa/advisory-database/tree/main/vulns/apache-airflow-providers-sftp/PYSEC-2026-218.yaml","tags":["web"]},{"url":"https://github.com/advisories/GHSA-qf38-jq28-3ccq","tags":["advisory"]},{"url":"https://pypi.python.org","tags":["web"]},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/50xxx/CVE-2026-50203.json","tags":["advisory"]},{"url":"https://github.com/apache/airflow","tags":["package"]}],"sources":{"cve":[{"id":"CVE-2026-50203","title":"Apache Airflow SFTP provider: Path traversal in SFTPHook.retrieve_directory allows local file write outside the destination directory via malicious server-supplied directory-entry names","description":"A path traversal in the SFTP provider (`SFTPHook.retrieve_directory` / `SFTPOperator(operation=get)`) let a malicious or compromised remote SFTP server write files outside the configured local destination directory via crafted directory-entry names. No Airflow account is required — the attack surface is any deployment downloading directories from an untrusted SFTP server. Upgrade `apache-airflow-providers-sftp` to 5.8.1 or later.","status":"published","published":"2026-06-17T01:47:49.652Z","modified":"2026-06-17T14:56:45.456Z","cvss":[{"version":"3.1","score":9.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N","level":"critical","assessor":"adp"}],"cwes":["CWE-22"],"updated_at":"2026-11-02T14:20:09.098623Z"}],"euvd":[{"id":"EUVD-2026-37520","description":"A path traversal in the SFTP provider (`SFTPHook.retrieve_directory` / `SFTPOperator(operation=get)`) let a malicious or compromised remote SFTP server write files outside the configured local destination directory via crafted directory-entry names. No Airflow account is required — the attack surface is any deployment downloading directories from an untrusted SFTP server. Upgrade `apache-airflow-providers-sftp` to 5.8.1 or later.","status":"published","published":"2026-06-17T01:47:49Z","modified":"2026-06-17T14:56:45Z","cvss":[{"version":"3.1","score":9.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N","level":"critical"}],"updated_at":"2026-11-02T18:20:38.239877Z"}],"ghsa":[{"id":"GHSA-qf38-jq28-3ccq","title":"Apache Airflow SFTP provider: Path traversal in SFTPHook.retrieve_directory","description":"A path traversal in the SFTP provider (`SFTPHook.retrieve_directory` / `SFTPOperator(operation=get)`) let a malicious or compromised remote SFTP server write files outside the configured local destination directory via crafted directory-entry names. No Airflow account is required — the attack surface is any deployment downloading directories from an untrusted SFTP server. Upgrade `apache-airflow-providers-sftp` to 5.8.1 or later.","status":"published","published":"2026-06-17T18:35:51Z","modified":"2026-07-09T21:07:42Z","cvss":[{"version":"3.1","score":9.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N","level":"critical"}],"cwes":["CWE-22"],"updated_at":"2026-11-02T14:40:41.501474Z"}],"nvd":[{"id":"CVE-2026-50203","description":"A path traversal in the SFTP provider (`SFTPHook.retrieve_directory` / `SFTPOperator(operation=get)`) let a malicious or compromised remote SFTP server write files outside the configured local destination directory via crafted directory-entry names. No Airflow account is required — the attack surface is any deployment downloading directories from an untrusted SFTP server. Upgrade `apache-airflow-providers-sftp` to 5.8.1 or later.","status":"published","published":"2026-06-17T13:20:47.213Z","modified":"2026-10-26T11:10:00.157Z","cvss":[{"version":"3.1","score":9.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N","level":"critical","assessor":"secondary"}],"cwes":["CWE-22"],"updated_at":"2026-11-02T14:12:24.544761Z"}],"osv":[{"id":"CVE-2026-50203","title":"Apache Airflow SFTP provider: Path traversal in SFTPHook.retrieve_directory allows local file write outside the destination directory via malicious server-supplied directory-entry names","description":"A path traversal in the SFTP provider (`SFTPHook.retrieve_directory` / `SFTPOperator(operation=get)`) let a malicious or compromised remote SFTP server write files outside the configured local destination directory via crafted directory-entry names. No Airflow account is required — the attack surface is any deployment downloading directories from an untrusted SFTP server. Upgrade `apache-airflow-providers-sftp` to 5.8.1 or later.","status":"published","published":"2026-06-17T01:47:49.652Z","modified":"2026-10-28T02:31:10.959229062Z","cvss":[{"version":"3.1","score":9.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N","level":"critical"}],"cwes":["CWE-22"],"updated_at":"2026-11-02T15:45:07.431113Z"},{"id":"GHSA-qf38-jq28-3ccq","title":"Apache Airflow SFTP provider: Path traversal in SFTPHook.retrieve_directory","description":"A path traversal in the SFTP provider (`SFTPHook.retrieve_directory` / `SFTPOperator(operation=get)`) let a malicious or compromised remote SFTP server write files outside the configured local destination directory via crafted directory-entry names. No Airflow account is required — the attack surface is any deployment downloading directories from an untrusted SFTP server. Upgrade `apache-airflow-providers-sftp` to 5.8.1 or later.","status":"published","published":"2026-06-17T18:35:51Z","modified":"2026-09-10T03:50:50.316659856Z","cvss":[{"version":"3.1","score":9.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N","level":"critical"}],"cwes":["CWE-22"],"updated_at":"2026-11-02T15:46:54.40888Z"},{"id":"PYSEC-2026-218","description":"A path traversal in the SFTP provider (`SFTPHook.retrieve_directory` / `SFTPOperator(operation=get)`) let a malicious or compromised remote SFTP server write files outside the configured local destination directory via crafted directory-entry names. No Airflow account is required — the attack surface is any deployment downloading directories from an untrusted SFTP server. Upgrade `apache-airflow-providers-sftp` to 5.8.1 or later.","status":"published","published":"2026-06-17T13:20:47.213Z","modified":"2026-07-13T16:45:11.324909005Z","cvss":[{"version":"3.1","score":9.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N","level":"critical"}],"updated_at":"2026-11-02T15:52:55.537808Z"}]}}
