p PatchFirst

PatchFirst · Latest vulnerabilities

apache-airflow 3.3.0: known vulnerabilities

The comparison for apache-airflow 3.3.0 is incomplete. Review the confirmed matches below.

Filter vulnerabilities
Clear filters

Could not compare 3 records. The results are incomplete.

Vulnerabilities: 15

  1. CVE-2026-86473

    Critical · CVSS 9.1EPSS 0.75%Fix available

    Apache Airflow: Logout ignores a presented Authorization bearer token, leaving it revocable only by expiry

    Apache Airflow: the Core API logout endpoint revokes only a session token presented as the _token cookie. When a client logs out presenting its credential as an Authorization bearer header instead, the endpoint returns its normal logout response but revokes nothing, so the token remains valid until it expires. An attacker who already holds a copy of that token keeps the victim's access after the victim has logged out and believes the session ended; the default token lifetime is 24 hours and is configurable. Affects API clients that authenticate with a bearer token rather than the browser session cookie. The attacker must already possess a co

    • Update to 3.3.2
    Published Updated
  2. CVE-2026-75158

    Medium · CVSS 4.3EPSS 0.64%Fix available

    Apache Airflow: Assets events API returns asset events for every Dag with no per-Dag authorization filter

    Apache Airflow's `/assets/events` API returned asset events for every Dag in the deployment, with no filter restricting them to the Dags the caller is authorized to read. Any authenticated user holding asset-read access could therefore enumerate asset events — including the source Dag ID, task ID, run ID and event timestamps — for Dags they have no permission to see. Because the filter was also absent from the count query, `total_entries` and pagination disclosed the existence of hidden Dags even without inspecting individual rows. Deployments are affected whenever per-Dag access control is used to separate teams or tenants; no special config

    • Update to 3.3.2
    Published Updated
  3. CVE-2026-82355

    Medium · CVSS 4.2EPSS 0.73%No fix published

    Apache Airflow: Session cookie silently overrides explicit Authorization bearer header, enabling session fixation

    When a request to the Airflow core API carries both a session cookie and an explicit `Authorization: Bearer` token, Airflow resolves the caller from the cookie and ignores the bearer token, inverting the intended precedence of bearer over cookie. The request then executes -- and is recorded in the audit log -- as the cookie's principal rather than the identity the client explicitly presented. Only Apache Airflow 3.3.0 and 3.3.1 are affected. Earlier releases do not contain the code path that caches the cookie-derived user, and are not vulnerable. Exploiting this requires an attacker to first place a valid session cookie of their own into th

    Published Updated
  4. CVE-2026-59244

    Medium · CVSS 6.5EPSS 0.23%Fix available

    Apache Airflow: Secrets masker: `var.json` Variable values not masked in the Rendered Templates UI

    Apache Airflow's secrets masker did not mask `var.json` Variable values whose value is a dict in the Rendered Templates UI — the dict value failed an `isinstance(str)` guard — so a secret stored as a JSON Variable and referenced in a template via `var.json` was displayed in cleartext to any user with access to that task's Rendered Templates view. Users are advised to upgrade to apache-airflow 3.3.1 or later, which masks nested Variable values regardless of type.

    • Update to 3.3.1
    Published Updated
  5. CVE-2026-58076

    High · CVSS 8.8EPSS 0.48%Fix available

    Apache Airflow: Unguarded import_string() of airflow_exc_ser / base_exc_ser exception nodes in BaseSerialization.deserialize enables DAG-author RCE on Scheduler / API Server

    Apache Airflow's serialization layer reconstructed exception nodes by calling `import_string()` on a class name taken from the serialized blob and instantiating it with arguments from the same blob, with no restriction on what could be imported. An operator's `executor_config` reaches that branch, so a Dag author could place a value there that causes an arbitrary callable to be imported and invoked -- for example `subprocess.check_output`, or `builtins.eval` on the `builtins`-prefixed variant. The code runs in the **Scheduler**, which reconstructs serialized Dags in its normal loop with no request involved, and in the **API server**, on any a

    • Update to 3.3.1
    Published Updated
  6. CVE-2026-59242

    Medium · CVSS 5.4EPSS 0.53%Fix available

    Apache Airflow: Arbitrary airflow.* class instantiation on the API server via the XCom deserialize endpoint

    Apache Airflow's XCom `GET /api/v2/{...}/xcomEntries/{key}?deserialize=true` endpoint passed a string-literal payload through `BaseXCom.deserialize_value` without the `_check_forbidden_xcom_keys` guard, allowing an authenticated API user with XCom write-and-read access to instantiate arbitrary `airflow.*` classes on the API server (CWE-502). An authenticated user who can write an XCom value and then read it back with `deserialize=true` triggers the unsafe instantiation. Users are advised to upgrade to apache-airflow 3.3.1 or later, which rejects reserved XCom serialization keys submitted as JSON string literals.

    • Update to 3.3.1
    Published Updated
  7. CVE-2026-54183

    Medium · CVSS 4.3EPSS 0.42%Fix available

    Apache Airflow: Airflow Variables were not masked in the UI for authenticated users

    Apache Airflow's secrets masker hides values stored under sensitive key names when they are displayed in the UI. The masker's recursion-depth limit did not descend into values nested inside a list, tuple, or set beyond that limit, so an Airflow Variable holding such a deeply-nested value was shown unmasked in the Variables UI. The exposure is limited to the UI: any authenticated user who can see the Variable in the UI can already read its full value through the Variables REST API, so this does not disclose data the user could not otherwise obtain — the masking is a shoulder-surfing defense for the UI, not an access-control boundary. This is

    • Update to 3.3.1
    Published Updated
  8. CVE-2026-67260

    High · CVSS 7.3EPSS 0.78%Fix available

    Apache Airflow: DAG-author remote code execution on the Scheduler via awaiting_input next_kwargs deserialization

    Apache Airflow 3.3.0 moved human-in-the-loop tasks from the triggerer to a new `awaiting_input` task state swept by the scheduler. That sweep deserializes the task instance's `next_kwargs` without an allow-list, so a Dag author — who controls that value through the task execution API — can cause an arbitrary module import and object instantiation inside the scheduler process, or terminate the scheduler job. No non-default configuration is required: the sweep runs unconditionally every 15 seconds, and the default `allowed_deserialization_classes` setting does not cover this code path. Versions before 3.3.0 are not affected, because human-in-th

    • Update to 3.3.1
    Published Updated
  9. CVE-2026-67587

    High · CVSS 8.8EPSS 0.61%Fix available

    Apache Airflow: DAG-author remote code execution on the Scheduler via a Serde `Callback` deserialization gadget

    Apache Airflow's Task SDK rebuilt a `Callback` object from serialized data by re-running its constructor, which imports the module named by the stored callback path. Because `SyncCallback` is itself an Airflow class it passes the default `allowed_deserialization_classes` allow-list, so tightening that setting does not help. A Dag author — who controls a task instance's `next_kwargs` through the task execution API — can therefore cause an arbitrary module to be imported inside the scheduler process, when the scheduler's `awaiting_input` timeout sweep deserializes that value. No non-default configuration is required; the sweep runs unconditiona

    • Update to 3.3.1
    Published Updated
  10. CVE-2026-65017

    Medium · CVSS 6.5EPSS 0.39%Fix available

    Apache Airflow: Config API: team-scoped Celery broker secret disclosed to a Viewer (multi-team masking bypass)

    Apache Airflow's Config API did not mask team-scoped sensitive configuration values in multi-team deployments. When an administrator has enabled multi-team mode and exposed the Config API, an authenticated Viewer holding only configuration-read access — with no prior access to the secret — could read a team-scoped Celery broker URL, including its embedded credentials, in cleartext, while the equivalent global option was correctly masked. The secrets masker matched only base section and option names and did not normalize team-prefixed sections before the sensitivity check (CWE-200). This is a distinct masker bypass from CVE-2026-48828 and CVE-

    • Update to 3.3.1
    Published Updated
  11. CVE-2026-68968

    High · CVSS 7.5EPSS 0.42%Fix available

    Apache Airflow: Authorization bypass in the Backfill API through conflicting interpretations of the backfill id

    Apache Airflow's Backfill API authorized a request against a Dag id supplied by the caller whenever the `backfill_id` path segment failed to parse. The authorization dependency parsed it with `int()` while the route handler parsed it as pydantic's `NonNegativeInt`, which accepts values `int()` rejects (`1.0` coerces to `1`); FastAPI resolves dependencies before endpoint validation, so the two acted on different Dags. An authenticated user holding edit permission on any single Dag could therefore read, pause and cancel backfills belonging to any other Dag, including moving another Dag's queued runs to `failed`. No non-default configuration is

    • Update to 3.3.1
    Published Updated
  12. CVE-2026-68969

    Medium · CVSS 6.5EPSS 0.36%Fix available

    Apache Airflow: Bulk Variable and Connection endpoints record secret values in the audit log in cleartext

    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 Vari

    • Update to 3.3.1
    Published Updated
  13. CVE-2026-68970

    Medium · CVSS 6.5EPSS 0.23%Fix available

    Apache Airflow: Values of a list-shaped Variable are not masked in task logs and the Rendered Templates UI

    Apache Airflow's Task SDK did not mask the contents of a Variable whose JSON value is a list, so secrets stored in that shape appeared in cleartext in task logs and in the Rendered Templates UI. Masking was applied only when the deserialized value was a string or a dict; a list at the top level matched neither and was returned unmasked. Any authenticated user able to read the logs or rendered templates of a task that references such a Variable could recover the values, with no special configuration required. This is the list-shaped counterpart of CVE-2026-59244, whose fix covered the dict case only, so deployments that upgraded in response to

    • Update to 3.3.1
    Published Updated
  14. CVE-2026-68971

    Medium · CVSS 6.5EPSS 0.33%Fix available

    Apache Airflow: Cross-team authorization bypass in the asset materialization and dag-run result endpoints

    Apache Airflow's asset materialization endpoint (`POST /api/v2/assets/{asset_id}/materialize`) and the XCom result check on `wait_dag_run_until_finished` authorized the target Dag without its team, unlike every other authorization site. A team-aware auth manager distinguishes a team-scoped Dag from a global one by that field -- the Keycloak auth manager, for example, checks the `DAG` resource instead of `DAG:<team>` -- so the team-scoped permission that should gate the request was never consulted. In a deployment running multi-team mode with a team-aware auth manager, an authenticated user in one team could trigger Dag runs belonging to anoth

    • Update to 3.3.1
    Published Updated
  15. CVE-2026-68076

    Medium · CVSS 5.4EPSS 0.34%Fix available

    Apache Airflow: Connections test API: team-scope guard bypass resolves another team's environment Connection

    Apache Airflow's environment-variable secrets backend resolved a team-scoped Connection or Variable from the wrong team's scope. The guard meant to prevent this only ran when no team scope was supplied, and its pattern could not match a team name containing an underscore, which team names are allowed to contain. When the guard did not apply, the lookup fell through to an unconditional global read that resolved the stored `AIRFLOW_CONN__<TEAM>___<ID>` variable regardless of which team asked. In multi-team mode an authenticated user of one team could therefore have `POST /api/v2/connections/test` resolve another team's Connection and authentica

    • Update to 3.3.1
    Published Updated

Check your server

Check your installed stack and versions against the current vulnerability feeds.

Check your server →