Severity by source
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
Network-reachable API, low complexity; PR:L because audit-log read access (authenticated) is required; C:H for full secret recovery; no integrity or availability impact.
Primary rating from Vendor (apache).
CVSS VectorVendor: apache
Lifecycle Timeline
4Blast Radius
ecosystem impact- 464 pypi packages depend on apache-airflow (431 direct, 37 indirect)
Ecosystem-wide dependent count for version 3.3.1.
DescriptionCVE.org
Apache Airflow wrote Variable values and Connection extra contents to the audit log in cleartext when they were submitted through the bulk endpoints (PATCH /api/v2/variables and PATCH /api/v2/connections). The audit-log masking recognised only top-level request fields, and a bulk request nests its entities two levels below, so no masking was applied to them. Any authenticated user with audit-log read access -- who need not hold Variables or Connections read at all -- could recover those secrets verbatim, and the Connection extra copy is stored unencrypted in the log while the connection table encrypts it. The Airflow UI's *Import Variables* action posts to this endpoint, so an ordinary operator import wrote every secret in the file to the log. This is a different code path from CVE-2026-50204: that fix shipped in 3.3.0 and covers the single-entity endpoints only, so deployments that upgraded in response to that advisory remain affected and must upgrade again. Users are advised to upgrade to apache-airflow 3.3.1 or later.
AnalysisAI
Cleartext secret exposure in Apache Airflow's audit log affects all versions before 3.3.1, allowing any authenticated user with audit-log read access to recover Variable values and Connection extra credentials verbatim - without holding Variables or Connections read permissions. The bulk API endpoints (PATCH /api/v2/variables, PATCH /api/v2/connections) bypassed audit-log masking because the masker inspected only top-level request fields while bulk payloads nest entities two levels deep under actions[].entities[]. The Airflow UI's Import Variables action posts to this same bulk endpoint, meaning a routine operator import silently writes every secret in the uploaded file to the unmasked audit log. No public exploit is identified at time of analysis, but the vulnerability is fully exploitable by any authenticated user with log access, and deployments that upgraded to 3.3.0 in response to the related CVE-2026-50204 remain vulnerable and must upgrade again.
Technical ContextAI
Apache Airflow (CPE: cpe:2.3:a:apache_software_foundation:apache_airflow:*:*:*:*:*:*:*:*) exposes a FastAPI-based v2 REST API. The audit-log decorator in airflow-core/src/airflow/api_fastapi/logging/decorators.py applies field-level masking before writing request bodies to the audit log. The masking functions _mask_variable_fields and _mask_connection_fields iterated over top-level keys of the request body, which works correctly for single-entity endpoints (/api/v2/variables/{key}) but fails completely for bulk endpoints whose payload structure is {"actions": [{"action": "create", "entities": [{"key": "...", "value": "SECRET"}]}]}. The masker sees only the key actions and passes the entire nested array through unredacted. CWE-532 (Insertion of Sensitive Information into Log File) is the root cause class: secrets that are encrypted at rest in the connections table are stored in cleartext in a secondary log store that has a broader access control surface. The fix in PR #70890 introduces _mask_bulk_entities() which explicitly traverses actions[].entities[] and applies per-entity masking before log emission.
RemediationAI
Upgrade to apache-airflow 3.3.1 or later, as advised in the Apache mailing list advisory at https://lists.apache.org/thread/p3jr90jgp2brto4vwcrx680f3x11y70c. The upstream fix is available in PR #70890 (https://github.com/apache/airflow/pull/70890); a confirmed tagged release is 3.3.1 per vendor advisory. If immediate upgrade is not possible, restrict audit-log read access to the minimum set of users who operationally require it - this does not eliminate the data written to the log but limits who can read the exposed secrets. As a second compensating control, avoid using the UI Import Variables action or the bulk API endpoints (PATCH /api/v2/variables, PATCH /api/v2/connections) until patched; instead use single-entity endpoints which were remediated in 3.3.0, accepting the operational overhead of per-record imports. Rotating any credentials that may have transited the bulk endpoints since the earliest affected version is strongly recommended post-upgrade, as historical log entries containing cleartext secrets are not automatically purged by the patch.
More in Apache Airflow
View allRemote code execution in Apache Airflow before 3.3.0 lets a DAG author embed a malicious trigger whose attacker-controll
Unsafe deserialization in Apache Airflow 3.3.0's Task SDK allows an authenticated DAG author to cause arbitrary module i
Unsafe deserialization in Apache Airflow 3.0.0 through 3.3.0 allows any DAG author to achieve arbitrary code execution i
Remote code execution in Apache Airflow 3.1.x allows authenticated DAG Authors to execute arbitrary code in the webserve
Command injection in Apache Airflow's BashOperator documentation example allows authenticated attackers to escalate priv
We need to produce a JSON object per the instructions. Let's analyze each field. First, product_name: "1-3 words ONLY.
CVE-2026-30911 is a security vulnerability (CVSS 8.1) that allows any authenticated task instance. High severity vulnera
Information disclosure in Apache Airflow 3.0.0 through 3.1.x stems from incomplete secret masking and under-documented w
Apache Airflow 3.0.0 through 3.1.x exposes JWT authentication tokens in application logs, allowing any authenticated UI
CVE-2026-28779 is a security vulnerability (CVSS 7.5) that allows any application co-hosted under the same domain. High
Apache Airflow before 3.2.0 exposes SQL exception stack traces through API responses despite api/expose_stack_traces=fal
Apache Airflow 3.0.x prior to 3.2.0 allows remote unauthenticated attackers to trigger unauthorized DAG (Directed Acycli
Same technique Information Disclosure
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-57270
GHSA-cjv4-7hp2-2x9h