{"id":"CVE-2026-49296","aliases":["BIT-airflow-2026-49296","GHSA-4fh7-7jx4-8f6c","PYSEC-2026-2083"],"url":"https://o3.security/vulnerability/CVE-2026-49296","summary":"Apache Airflow: Per-DAG read bypass discloses co-located DAGs' source via GET /api/v2/dagSources/{dag_id}","details":"Before apache-airflow 3.3.0, a user authorized to read one Dag could disclose the source of other Dags co-located in the same source file. `GET /api/v2/dagSources/{dag_id}` — and the equivalent Dag-source view in the UI — returned the entire source file without redacting Dags the caller was not authorized to read, bypassing per-DAG read authorization. Deployments that co-locate multiple Dags in a single file and rely on per-DAG access control to limit source visibility are affected; single-Dag-per-file deployments are not. Upgrade to apache-airflow 3.3.0 or later.","published":"2026-07-07T09:18:12.369Z","modified":"2026-08-12T19:40:41.031201224Z","cvss":{"score":6.5,"severity":"MEDIUM","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N"},"epss":{"score":0.00601,"percentile":0.44883,"asOf":"2026-07-21"},"cisaKev":null,"exploitsKnown":0,"affectedPackages":[{"ecosystem":"PyPI","name":"apache-airflow","fixedVersion":"3.3.0"}],"fix":{"url":"https://github.com/apache/airflow/pull/67662","label":"apache/airflow#67662"},"references":[{"type":"WEB","url":"http://www.openwall.com/lists/oss-security/2026/07/07/5"},{"type":"WEB","url":"https://pypi.python.org"},{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/49xxx/CVE-2026-49296.json"},{"type":"ADVISORY","url":"https://lists.apache.org/thread/qqv41t3oydkn9o14r2rfz1wkdrsp5jzn"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-49296"},{"type":"FIX","url":"https://github.com/apache/airflow/pull/67662"}],"provenance":{"sources":["OSV.dev","FIRST.org (EPSS)"],"lastVerified":"2026-08-12T19:40:41.031201224Z"}}