{"id":"CVE-2026-49486","aliases":["EUVD-2026-39627","GHSA-fgch-86x8-fv43","PYSEC-2026-238"],"status":"published","title":"Apache Airflow FTP provider: FTP Provider does not protect FTPS data channel (missing PROT_P)","description":"The Apache Airflow FTP provider's `FTPSHook.get_conn()` created an `ftplib.FTP_TLS` connection but never called `prot_p()`, so although the control channel was TLS-protected the data channel was transmitted in cleartext. Any deployment using `FTPSHook` or `FTPSFileTransmitOperator` to move files over FTPS exposed file contents and credentials-in-transit to a network attacker able to observe the data connection. Upgrade apache-airflow-providers-ftp to `3.15.1` or later, which issues `PROT P` to encrypt the data channel.","severity":{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N","level":"high","assessor":"adp","from":"cve"},"epss":{"day":"2026-11-09","score":0.00442,"percentile":0.38716,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-319"],"published":"2026-06-26T07:05:39Z","modified":"2026-10-28T02:30:45Z","fixes":[{"ecosystem":"PyPI","package":"apache-airflow-providers-ftp","fixed_in":["3.15.1"],"sources":["ghsa","osv"]}],"affected":[{"source":"ghsa","ecosystem":"PyPI","package":"apache-airflow-providers-ftp","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"3.15.1"}]}]},{"source":"osv","ecosystem":"PyPI","package":"apache-airflow-providers-ftp","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"3.15.1"}]}],"versions":["1.0.0","1.0.0b1","1.0.0b2","1.0.0rc1","1.0.1","1.0.1rc1","1.1.0","1.1.0rc1","2.0.0","2.0.0rc1","2.0.0rc2","2.0.1","2.0.1rc1","2.1.0","2.1.0rc1","2.1.1","2.1.1rc1","2.1.2","2.1.2rc1","3.0.0","3.0.0rc1","3.0.0rc2","3.1.0","3.1.0rc1","3.10.0","3.10.0rc1","3.10.1","3.10.1rc1","3.11.0","3.11.0rc1","3.11.1","3.11.1rc1","3.12.0","3.12.0rc1","3.12.0rc2","3.12.1","3.12.2","3.12.2rc1","3.12.3","3.12.3rc1","3.13.0","3.13.0rc1","3.13.1","3.13.1rc1","3.13.2","3.13.2rc1","3.13.3","3.13.3rc1","3.14.0","3.14.0rc1","3.14.1","3.14.1rc1","3.14.2","3.14.2rc1","3.14.3","3.14.3rc1","3.15.0","3.15.0rc1","3.15.1rc1","3.2.0","3.2.0rc1","3.3.0","3.3.0rc1","3.3.0rc2","3.3.1","3.3.1rc1","3.4.0","3.4.0rc1","3.4.0rc2","3.4.1","3.4.1rc1","3.4.2","3.4.2rc1","3.5.0","3.5.0rc1","3.5.1","3.5.1rc1","3.5.2","3.5.2rc1","3.6.0","3.6.0rc1","3.6.1","3.6.1rc1","3.7.0","3.7.0rc1","3.8.0","3.8.0rc1","3.8.0rc2","3.9.0","3.9.0rc1","3.9.1","3.9.1rc1"]},{"source":"osv","ecosystem":"PyPI","package":"apache-airflow-providers-ftp","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"3.15.1"}]}],"versions":["1.0.0","1.0.0b1","1.0.0b2","1.0.0rc1","1.0.1","1.0.1rc1","1.1.0","1.1.0rc1","2.0.0","2.0.0rc1","2.0.0rc2","2.0.1","2.0.1rc1","2.1.0","2.1.0rc1","2.1.1","2.1.1rc1","2.1.2","2.1.2rc1","3.0.0","3.0.0rc1","3.0.0rc2","3.1.0","3.1.0rc1","3.10.0","3.10.0rc1","3.10.1","3.10.1rc1","3.11.0","3.11.0rc1","3.11.1","3.11.1rc1","3.12.0","3.12.0rc1","3.12.0rc2","3.12.1","3.12.2","3.12.2rc1","3.12.3","3.12.3rc1","3.13.0","3.13.0rc1","3.13.1","3.13.1rc1","3.13.2","3.13.2rc1","3.13.3","3.13.3rc1","3.14.0","3.14.0rc1","3.14.1","3.14.1rc1","3.14.2","3.14.2rc1","3.14.3","3.14.3rc1","3.15.0","3.15.0rc1","3.15.1rc1","3.2.0","3.2.0rc1","3.3.0","3.3.0rc1","3.3.0rc2","3.3.1","3.3.1rc1","3.4.0","3.4.0rc1","3.4.0rc2","3.4.1","3.4.1rc1","3.4.2","3.4.2rc1","3.5.0","3.5.0rc1","3.5.1","3.5.1rc1","3.5.2","3.5.2rc1","3.6.0","3.6.0rc1","3.6.1","3.6.1rc1","3.7.0","3.7.0rc1","3.8.0","3.8.0rc1","3.8.0rc2","3.9.0","3.9.0rc1","3.9.1","3.9.1rc1"]}],"products":[{"vendor":"apache","product":"apache-airflow-providers-ftp"},{"vendor":"apache software foundation","product":"apache airflow ftp provider"}],"references":[{"url":"https://github.com/apache/airflow/pull/67946","tags":["patch","Issue Tracking","Patch","fix","web"]},{"url":"https://lists.apache.org/thread/gwnsxlt9hfj5pc543wxtogbnjdn04xj1","tags":["vendor-advisory","Mailing List","Vendor Advisory","advisory","web"]},{"url":"http://www.openwall.com/lists/oss-security/2026/06/26/1","tags":["web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-49486","tags":["advisory"]},{"url":"https://github.com/apache/airflow/commit/a929d142d667f71dea29c565a7167216a9c30378","tags":["web"]},{"url":"https://github.com/apache/airflow/releases/tag/providers-ftp/3.15.1","tags":["web"]},{"url":"https://github.com/pypa/advisory-database/tree/main/vulns/apache-airflow-providers-ftp/PYSEC-2026-238.yaml","tags":["web"]},{"url":"https://github.com/advisories/GHSA-fgch-86x8-fv43","tags":["advisory"]},{"url":"https://pypi.python.org","tags":["web"]},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/49xxx/CVE-2026-49486.json","tags":["advisory"]},{"url":"https://github.com/apache/airflow","tags":["package"]}],"sources":{"cve":[{"id":"CVE-2026-49486","title":"Apache Airflow FTP provider: FTP Provider does not protect FTPS data channel (missing PROT_P)","description":"The Apache Airflow FTP provider's `FTPSHook.get_conn()` created an `ftplib.FTP_TLS` connection but never called `prot_p()`, so although the control channel was TLS-protected the data channel was transmitted in cleartext. Any deployment using `FTPSHook` or `FTPSFileTransmitOperator` to move files over FTPS exposed file contents and credentials-in-transit to a network attacker able to observe the data connection. Upgrade apache-airflow-providers-ftp to `3.15.1` or later, which issues `PROT P` to encrypt the data channel.","status":"published","published":"2026-06-26T07:05:39.182Z","modified":"2026-09-16T14:55:36.17Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N","level":"high","assessor":"adp"}],"cwes":["CWE-319"],"updated_at":"2026-11-02T13:34:59.78118Z"}],"euvd":[{"id":"EUVD-2026-39627","description":"The Apache Airflow FTP provider's `FTPSHook.get_conn()` created an `ftplib.FTP_TLS` connection but never called `prot_p()`, so although the control channel was TLS-protected the data channel was transmitted in cleartext. Any deployment using `FTPSHook` or `FTPSFileTransmitOperator` to move files over FTPS exposed file contents and credentials-in-transit to a network attacker able to observe the data connection. Upgrade apache-airflow-providers-ftp to `3.15.1` or later, which issues `PROT P` to encrypt the data channel.","status":"published","published":"2026-06-26T07:05:39Z","modified":"2026-09-16T14:55:36Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N","level":"high"}],"updated_at":"2026-11-02T17:28:15.854171Z"}],"ghsa":[{"id":"GHSA-fgch-86x8-fv43","title":"Apache Airflow FTP provider: FTP Provider does not protect FTPS data channel (missing PROT_P)","description":"The Apache Airflow FTP provider's `FTPSHook.get_conn()` created an `ftplib.FTP_TLS` connection but never called `prot_p()`, so although the control channel was TLS-protected the data channel was transmitted in cleartext. Any deployment using `FTPSHook` or `FTPSFileTransmitOperator` to move files over FTPS exposed file contents and credentials-in-transit to a network attacker able to observe the data connection. Upgrade apache-airflow-providers-ftp to `3.15.1` or later, which issues `PROT P` to encrypt the data channel.","status":"published","published":"2026-06-26T09:30:46Z","modified":"2026-09-04T18:48:05Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N","level":"high"}],"cwes":["CWE-319"],"updated_at":"2026-11-02T14:41:12.487077Z"}],"nvd":[{"id":"CVE-2026-49486","description":"The Apache Airflow FTP provider's `FTPSHook.get_conn()` created an `ftplib.FTP_TLS` connection but never called `prot_p()`, so although the control channel was TLS-protected the data channel was transmitted in cleartext. Any deployment using `FTPSHook` or `FTPSFileTransmitOperator` to move files over FTPS exposed file contents and credentials-in-transit to a network attacker able to observe the data connection. Upgrade apache-airflow-providers-ftp to `3.15.1` or later, which issues `PROT P` to encrypt the data channel.","status":"published","published":"2026-06-26T08:16:23.83Z","modified":"2026-10-25T22:10:00.15Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N","level":"high","assessor":"secondary"}],"cwes":["CWE-319"],"updated_at":"2026-11-02T14:12:26.045561Z"}],"osv":[{"id":"CVE-2026-49486","title":"Apache Airflow FTP provider: FTP Provider does not protect FTPS data channel (missing PROT_P)","description":"The Apache Airflow FTP provider's `FTPSHook.get_conn()` created an `ftplib.FTP_TLS` connection but never called `prot_p()`, so although the control channel was TLS-protected the data channel was transmitted in cleartext. Any deployment using `FTPSHook` or `FTPSFileTransmitOperator` to move files over FTPS exposed file contents and credentials-in-transit to a network attacker able to observe the data connection. Upgrade apache-airflow-providers-ftp to `3.15.1` or later, which issues `PROT P` to encrypt the data channel.","status":"published","published":"2026-06-26T07:05:39.182Z","modified":"2026-10-28T02:30:45.765858672Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N","level":"high"}],"cwes":["CWE-319"],"updated_at":"2026-11-02T15:45:07.060148Z"},{"id":"GHSA-fgch-86x8-fv43","title":"Apache Airflow FTP provider: FTP Provider does not protect FTPS data channel (missing PROT_P)","description":"The Apache Airflow FTP provider's `FTPSHook.get_conn()` created an `ftplib.FTP_TLS` connection but never called `prot_p()`, so although the control channel was TLS-protected the data channel was transmitted in cleartext. Any deployment using `FTPSHook` or `FTPSFileTransmitOperator` to move files over FTPS exposed file contents and credentials-in-transit to a network attacker able to observe the data connection. Upgrade apache-airflow-providers-ftp to `3.15.1` or later, which issues `PROT P` to encrypt the data channel.","status":"published","published":"2026-06-26T09:30:46Z","modified":"2026-09-10T03:50:49.33672624Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N","level":"high"}],"cwes":["CWE-319"],"updated_at":"2026-11-02T15:46:46.39441Z"},{"id":"PYSEC-2026-238","description":"The Apache Airflow FTP provider's `FTPSHook.get_conn()` created an `ftplib.FTP_TLS` connection but never called `prot_p()`, so although the control channel was TLS-protected the data channel was transmitted in cleartext. Any deployment using `FTPSHook` or `FTPSFileTransmitOperator` to move files over FTPS exposed file contents and credentials-in-transit to a network attacker able to observe the data connection. Upgrade apache-airflow-providers-ftp to `3.15.1` or later, which issues `PROT P` to encrypt the data channel.","status":"published","published":"2026-06-26T08:16:23.83Z","modified":"2026-09-10T11:15:08.166976325Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N","level":"high"}],"updated_at":"2026-11-02T15:52:55.961245Z"}]}}
