CVE-2026-49296: Apache Airflow DAG Source Disclosure via Authorization Bypass
Apache Airflow versions before 3.3.0 contain an authorization bypass that exposes source code of DAGs (Directed Acyclic Graphs) that a user should not be able to see. When a user with permission to view one DAG's source code requests it via the API or web UI, the system returns the entire source file—including all other DAGs stored in that same file—without checking whether the user is authorized to view them. This affects only deployments that store multiple DAGs in a single source file and rely on per-DAG access controls. Organizations with one DAG per file are unaffected.
Source data · NVD / CISA · public domain
- CVSS
- 3.1 · 6.5 MEDIUM · CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
- Weaknesses (CWE)
- CWE-639
- Affected products
- 1 configuration(s)
- Published / Modified
- 2026-07-07 / 2026-07-08
NVD description (verbatim)
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.
3 reference(s) · View on NVD →
SEC.co analysis · AI-assisted, reviewed against source
Technical summary
The vulnerability exists in the `GET /api/v2/dagSources/{dag_id}` endpoint and the corresponding UI component. When a caller requests the source of a specific DAG they are authorized to read, the implementation returns the full source file contents rather than filtering to only the requested DAG. This bypasses Airflow's per-DAG read authorization model. The flaw is a broken access control issue (CWE-639) where authorization checks are applied at the DAG selection level but not enforced when retrieving and returning file content. Network accessibility (no special client setup required), low complexity exploitation, and a low privilege requirement (authenticated user) make this exploitable in most Airflow deployments, resulting in a CVSS 3.1 score of 6.5 (Medium severity).
Business impact
Sensitive information disclosure is the primary impact. DAG source code often contains secrets, API keys, database credentials, and proprietary business logic. An authenticated user with legitimate access to one DAG can extract the source code of unrelated DAGs—potentially those belonging to other teams or business units—defeating the access control model that should isolate them. In regulated environments, this may violate data segregation requirements or compliance controls. The impact is confidentiality-focused; the vulnerability does not allow modification or denial of service.
Affected systems
Apache Airflow versions prior to 3.3.0 are vulnerable. The risk is specific to deployments that (1) store multiple DAGs in a single source file and (2) enforce per-DAG read authorization policies. Single-DAG-per-file deployments have no exposure because the full file and the requested DAG are one and the same. Organizations using default or recommended Airflow configurations (separate files per DAG) are not affected.
Exploitability
Exploitation requires valid Airflow credentials and network access to the API or UI. An authenticated user simply requests a DAG source they have permission to view; the returned file reveals all co-located DAGs without additional authentication or unusual attack complexity. No user interaction or specialized tools are needed. The barrier to exploitation is low for any insider or compromised account with basic Airflow access. This is not listed on CISA's KEV catalog, indicating no active exploitation in the wild has been widely reported, but the simplicity of the attack means defenders should not assume it is unexploited.
Remediation
Upgrade Apache Airflow to version 3.3.0 or later, which corrects the authorization logic to return only the source of the requested DAG and redact other DAGs in the same file. Organizations unable to upgrade immediately should review access control policies and audit logs to identify co-located DAGs and restrict read access to those source endpoints to only users who need it. Consider refactoring deployments to use one DAG per file if possible, which eliminates the architectural precondition for this flaw.
Patch guidance
Apply Apache Airflow 3.3.0 or later. Verify the upgrade by confirming that requesting a DAG source you have access to does not expose co-located DAGs you do not have permission to view. Test in a staging environment first to ensure no integration issues with custom DAG definitions or plugins. After upgrade, invalidate any cached or exported DAG source files that may have been disclosed prior to patching.
Detection guidance
Monitor API logs for `GET /api/v2/dagSources/` requests from accounts that access multiple DAGs or from users whose role should restrict them to specific DAGs. Compare the DAG they request against the DAG identifiers they are authorized to view; discrepancies indicate potential exploitation. Review UI access logs if per-DAG source viewing is tracked. Scan any downloaded or archived DAG source files for the presence of multiple DAG definitions from a single file and correlate user access rights. In forensic investigations, check for repeated source requests across different DAG IDs by the same user over a short timeframe.
Why prioritize this
This vulnerability merits timely but not emergency patching. CVSS 6.5 (Medium) reflects moderate confidentiality risk without integrity or availability impact. Organizations with strict per-DAG access control policies and multi-DAG files face higher risk and should prioritize patching. Those with single-DAG-per-file architectures can schedule the upgrade during a normal maintenance window. The lack of KEV designation and no public weaponized exploits reduce urgency, but the simplicity of exploitation and the nature of the data at risk (secrets, business logic) argue against deferral. Target patching within 30–60 days depending on your DAG architecture and sensitivity of DAG sources.
Risk score, explained
CVSS 3.1 score of 6.5 is driven by High confidentiality impact (source code and secrets exposed), no integrity or availability impact, low attack complexity, low privilege requirement, and network accessibility. The score assumes a default Airflow setup with authentication enabled. Organizations with looser network segmentation or higher-privilege default accounts may experience higher practical risk. The scope is unchanged (no privilege escalation outside Airflow itself), keeping severity in the Medium band.
Frequently asked questions
Do I need to patch if I store one DAG per file?
No. The vulnerability requires multiple DAGs in a single source file. If your deployment follows the practice of one DAG per file, you are not affected. However, upgrading to 3.3.0+ is still recommended as a best practice for overall security hygiene.
Will this expose credentials if DAGs contain hardcoded secrets?
Yes. If DAG source files contain API keys, database passwords, or other secrets (a practice that is itself a security anti-pattern), those secrets will be disclosed to any authenticated user who can request the source of a co-located DAG they have permission to view. Use external secret management (e.g., AWS Secrets Manager, HashiCorp Vault) to avoid embedding secrets in DAG source code.
How can I check if I'm vulnerable before patching?
Verify your Airflow version against 3.3.0. If you are on an earlier version, check your DAG directory structure: if any single Python file contains multiple DAG definitions and you rely on per-DAG access control, you are at risk. Request a DAG source you are authorized to view and inspect the response to confirm whether unrelated DAGs are included.
Is there a workaround if I cannot upgrade immediately?
Configure API and UI access controls to restrict the `dagSources` endpoint to a minimal set of users or service accounts that require it. Audit existing access logs for suspicious requests. Refactor your DAG files to separate multiple DAGs into individual files if feasible. These steps reduce exposure but do not eliminate the flaw; upgrading is the proper fix.
This analysis is provided for informational purposes by SEC.co and reflects the vulnerability data current as of publication. Patch availability, version numbers, and remediation steps should be verified against the official Apache Airflow security advisory and vendor documentation. The CVSS score and risk assessment are based on the described vulnerability characteristics and typical Airflow deployments; your specific risk may vary based on architecture, access controls, and the sensitivity of your DAG sources. Always test patches in a non-production environment before deployment. For the latest updates and official guidance, consult the Apache Airflow project website and MITRE CVE database. Source: NVD (public-domain), retrieved 2026-08-16. Analysis generated by SEC.co (claude-haiku-4-5).
Related vulnerabilities
- CVE-2026-46453MEDIUMApache Camel Elasticsearch Header Injection Authorization Bypass
- CVE-2026-46764MEDIUMApache Airflow Audit Log Authorization Bypass – IDOR Vulnerability
- CVE-2026-48206MEDIUMApache Camel JIRA Header Injection – Unauthorized Operations Risk
- CVE-2026-49099MEDIUMApache Camel Salesforce Header Injection Vulnerability
- CVE-2026-41084HIGHApache Airflow Task Instances API Authorization Bypass
- CVE-2026-46585HIGHApache Camel Lucene Query Injection and Authorization Bypass
- CVE-2023-40200MEDIUMWP Logo Showcase Authorization Bypass Vulnerability (CVSS 5.3)
- CVE-2025-15657MEDIUMUnauthenticated IDOR in School Management – Patch Guidance