{"kind": "version", "path": "vulns/pypi/apache-airflow/3.3.0b2", "name": "apache-airflow", "product": "apache-airflow", "ecosystem": "PyPI", "version": "3.3.0b2", "items": [{"id": "CVE-2026-86473", "noindex": false, "published": "2026-09-21T14:33:26.110Z", "modified": "2026-09-21T18:41:13.406Z", "cvss": 9.1, "cvss_vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N", "severity": "critical", "epss": 0.00747, "kev": false, "exploits": [], "stacks": [{"name": "python", "path": "vulns/stack/python", "slug": "python"}], "path": "vulns/cve-2026-86473", "title": "Apache Airflow: Logout ignores a presented Authorization bearer token, leaving it revocable only by expiry", "description": "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.\n\nAffects API clients that authenticate with a bearer token rather than the browser session cookie. The attacker must already possess a co", "references": ["https://github.com/apache/airflow/pull/72649", "https://lists.apache.org/thread/k9z1p0q1ng8m68nlnv9d1fqzscrfm7vr", "http://www.openwall.com/lists/oss-security/2026/09/21/5"], "fixes": ["3.3.2"], "products": [{"name": "apache-airflow", "path": "vulns/pypi/apache-airflow", "ecosystem": "PyPI"}]}, {"id": "CVE-2026-75158", "noindex": false, "published": "2026-09-21T14:32:47.818Z", "modified": "2026-09-21T18:09:31.208Z", "cvss": 4.3, "cvss_vector": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N", "severity": "medium", "epss": 0.00636, "kev": false, "exploits": [], "stacks": [{"name": "python", "path": "vulns/stack/python", "slug": "python"}], "path": "vulns/cve-2026-75158", "title": "Apache Airflow: Assets events API returns asset events for every Dag with no per-Dag authorization filter", "description": "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", "references": ["https://github.com/apache/airflow/pull/71741", "https://lists.apache.org/thread/rx5lg86l0qkjl2s7dtmpqxjq0xplr4fy", "http://www.openwall.com/lists/oss-security/2026/09/21/3"], "fixes": ["3.3.2"], "products": [{"name": "apache-airflow", "path": "vulns/pypi/apache-airflow", "ecosystem": "PyPI"}]}, {"id": "CVE-2026-82355", "noindex": false, "published": "2026-09-21T14:32:04.932Z", "modified": "2026-09-21T18:09:32.318Z", "cvss": 4.2, "cvss_vector": "CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:L/I:L/A:N", "severity": "medium", "epss": 0.00735, "kev": false, "exploits": [], "stacks": [{"name": "python", "path": "vulns/stack/python", "slug": "python"}], "path": "vulns/cve-2026-82355", "title": "Apache Airflow: Session cookie silently overrides explicit Authorization bearer header, enabling session fixation", "description": "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.\n\nOnly 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.\n\nExploiting this requires an attacker to first place a valid session cookie of their own into th", "references": ["https://github.com/apache/airflow/pull/72225", "https://github.com/apache/airflow/pull/72723", "https://lists.apache.org/thread/3p7zpdvv40tn01m0xk5mt2rxg88mw8w1"], "fixes": [], "products": [{"name": "apache-airflow", "path": "vulns/pypi/apache-airflow", "ecosystem": "PyPI"}]}, {"id": "CVE-2026-59244", "noindex": false, "published": "2026-08-12T15:43:17.373Z", "modified": "2026-09-16T14:56:04.103Z", "cvss": 6.5, "cvss_vector": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N", "severity": "medium", "epss": 0.0023, "kev": false, "exploits": [], "stacks": [{"name": "python", "path": "vulns/stack/python", "slug": "python"}], "path": "vulns/cve-2026-59244", "title": "Apache Airflow: Secrets masker: `var.json` Variable values not masked in the Rendered Templates UI", "description": "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.", "references": ["https://github.com/apache/airflow/pull/68975", "https://lists.apache.org/thread/fncod6vttfo5fvmfs3h9r8s2kmm9j1n6", "http://www.openwall.com/lists/oss-security/2026/08/12/7"], "fixes": ["3.3.1"], "products": [{"name": "apache-airflow", "path": "vulns/pypi/apache-airflow", "ecosystem": "PyPI"}]}, {"id": "CVE-2026-59242", "noindex": false, "published": "2026-08-12T15:35:00.763Z", "modified": "2026-09-16T14:55:43.129Z", "cvss": 5.4, "cvss_vector": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N", "severity": "medium", "epss": 0.00529, "kev": false, "exploits": [], "stacks": [{"name": "python", "path": "vulns/stack/python", "slug": "python"}], "path": "vulns/cve-2026-59242", "title": "Apache Airflow: Arbitrary airflow.* class instantiation on the API server via the XCom deserialize endpoint", "description": "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.", "references": ["https://github.com/apache/airflow/pull/69378", "https://lists.apache.org/thread/dm0520yhh4mn7qknyoh45r2w6c5qg2mg", "http://www.openwall.com/lists/oss-security/2026/08/12/6"], "fixes": ["3.3.1"], "products": [{"name": "apache-airflow", "path": "vulns/pypi/apache-airflow", "ecosystem": "PyPI"}]}, {"id": "CVE-2026-54183", "noindex": false, "published": "2026-08-12T15:34:22.966Z", "modified": "2026-09-16T14:55:50.905Z", "cvss": 4.3, "cvss_vector": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N", "severity": "medium", "epss": 0.00423, "kev": false, "exploits": [], "stacks": [{"name": "python", "path": "vulns/stack/python", "slug": "python"}], "path": "vulns/cve-2026-54183", "title": "Apache Airflow: Airflow Variables were not masked in the UI for authenticated users", "description": "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.\n\nThis is ", "references": ["https://github.com/apache/airflow/pull/68422", "https://lists.apache.org/thread/z5mrdq6c60f2wyx4cc64cj8nv0dxd9lo", "https://www.cve.org/CVERecord?id=CVE-2026-42358"], "fixes": ["3.3.1"], "products": [{"name": "apache-airflow", "path": "vulns/pypi/apache-airflow", "ecosystem": "PyPI"}]}, {"id": "CVE-2026-68968", "noindex": false, "published": "2026-08-12T15:27:46.731Z", "modified": "2026-09-16T14:57:09.114Z", "cvss": 7.5, "cvss_vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N", "severity": "high", "epss": 0.00417, "kev": false, "exploits": [], "stacks": [{"name": "python", "path": "vulns/stack/python", "slug": "python"}], "path": "vulns/cve-2026-68968", "title": "Apache Airflow: Authorization bypass in the Backfill API through conflicting interpretations of the backfill id", "description": "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 ", "references": ["https://github.com/apache/airflow/pull/70889", "https://lists.apache.org/thread/f9zmw6xs5b4syhwzbl6fsxm4kf2632ol", "http://www.openwall.com/lists/oss-security/2026/08/12/12"], "fixes": ["3.3.1"], "products": [{"name": "apache-airflow", "path": "vulns/pypi/apache-airflow", "ecosystem": "PyPI"}]}, {"id": "CVE-2026-68969", "noindex": false, "published": "2026-08-12T15:26:40.095Z", "modified": "2026-09-16T14:57:12.666Z", "cvss": 6.5, "cvss_vector": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N", "severity": "medium", "epss": 0.00358, "kev": false, "exploits": [], "stacks": [{"name": "python", "path": "vulns/stack/python", "slug": "python"}], "path": "vulns/cve-2026-68969", "title": "Apache Airflow: Bulk Variable and Connection endpoints record secret values in the audit log in cleartext", "description": "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", "references": ["https://github.com/apache/airflow/pull/70890", "https://lists.apache.org/thread/p3jr90jgp2brto4vwcrx680f3x11y70c", "https://www.cve.org/CVERecord?id=CVE-2026-50204"], "fixes": ["3.3.1"], "products": [{"name": "apache-airflow", "path": "vulns/pypi/apache-airflow", "ecosystem": "PyPI"}]}, {"id": "CVE-2026-68970", "noindex": false, "published": "2026-08-12T15:24:53.217Z", "modified": "2026-09-16T14:57:15.620Z", "cvss": 6.5, "cvss_vector": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N", "severity": "medium", "epss": 0.0023, "kev": false, "exploits": [], "stacks": [{"name": "python", "path": "vulns/stack/python", "slug": "python"}], "path": "vulns/cve-2026-68970", "title": "Apache Airflow: Values of a list-shaped Variable are not masked in task logs and the Rendered Templates UI", "description": "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", "references": ["https://github.com/apache/airflow/pull/70891", "https://lists.apache.org/thread/kkrlnbsk47oght4h38mcd3h2kcb8dt28", "https://www.cve.org/CVERecord?id=CVE-2026-59244"], "fixes": ["3.3.1"], "products": [{"name": "apache-airflow", "path": "vulns/pypi/apache-airflow", "ecosystem": "PyPI"}]}, {"id": "CVE-2026-68971", "noindex": false, "published": "2026-08-12T15:24:10.679Z", "modified": "2026-09-16T14:56:58.138Z", "cvss": 6.5, "cvss_vector": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N", "severity": "medium", "epss": 0.00328, "kev": false, "exploits": [], "stacks": [{"name": "python", "path": "vulns/stack/python", "slug": "python"}], "path": "vulns/cve-2026-68971", "title": "Apache Airflow: Cross-team authorization bypass in the asset materialization and dag-run result endpoints", "description": "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", "references": ["https://github.com/apache/airflow/pull/70893", "https://lists.apache.org/thread/kfxqqwgojdjdnt6bxg3ord4y41y334fo", "http://www.openwall.com/lists/oss-security/2026/08/12/15"], "fixes": ["3.3.1"], "products": [{"name": "apache-airflow", "path": "vulns/pypi/apache-airflow", "ecosystem": "PyPI"}]}, {"id": "CVE-2026-68076", "noindex": false, "published": "2026-08-12T15:23:22.930Z", "modified": "2026-09-16T15:05:59.169Z", "cvss": 5.4, "cvss_vector": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:L", "severity": "medium", "epss": 0.00342, "kev": false, "exploits": [], "stacks": [{"name": "python", "path": "vulns/stack/python", "slug": "python"}], "path": "vulns/cve-2026-68076", "title": "Apache Airflow: Connections test API: team-scope guard bypass resolves another team's environment Connection", "description": "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", "references": ["https://github.com/apache/airflow/pull/70736", "https://github.com/apache/airflow/pull/70886", "https://github.com/apache/airflow/pull/70902"], "fixes": ["3.3.1"], "products": [{"name": "apache-airflow", "path": "vulns/pypi/apache-airflow", "ecosystem": "PyPI"}]}, {"id": "CVE-2026-33264", "noindex": false, "published": "2026-07-07T09:20:18.518Z", "modified": "2026-07-08T03:56:40.205Z", "cvss": 9.8, "cvss_vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H", "severity": "critical", "epss": 0.01649, "kev": false, "exploits": [], "stacks": [{"name": "python", "path": "vulns/stack/python", "slug": "python"}], "path": "vulns/cve-2026-33264", "title": "Apache Airflow: DAG author RCE on webserver via unrestricted import_string() in BaseSerialization.deserialize()", "description": "A bug in `BaseSerialization.deserialize()` allowed unrestricted `import_string()` of attacker-controlled class paths when the Scheduler / API Server loaded a serialized DAG: a DAG author could embed a malicious trigger into a DAG to gain remote code execution on the API Server / Scheduler process, crossing the Airflow security boundary that DAG-author code must never execute in those processes. Users are advised to upgrade to `apache-airflow` 3.3.0 or later. As a defense-in-depth mitigation, deployments where DAG-author trust is limited can restrict the `[core] allowed_deserialization_classes` config to a narrow allowlist.", "references": ["https://github.com/apache/airflow/pull/66002", "https://github.com/apache/airflow/pull/68528", "https://lists.apache.org/thread/otvdw8qt2y7xy2n5nq9xby9ky4rf5ltj"], "fixes": ["3.3.0"], "products": [{"name": "apache-airflow", "path": "vulns/pypi/apache-airflow", "ecosystem": "PyPI"}]}, {"id": "CVE-2026-49487", "noindex": false, "published": "2026-07-07T09:19:36.710Z", "modified": "2026-09-16T14:55:39.722Z", "cvss": 6.5, "cvss_vector": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N", "severity": "medium", "epss": 0.00664, "kev": false, "exploits": [], "stacks": [{"name": "python", "path": "vulns/stack/python", "slug": "python"}], "path": "vulns/cve-2026-49487", "title": "Apache Airflow: Task-instance API exposes secrets in deferred trigger kwargs", "description": "In Apache Airflow before 3.3.0, the REST API task-instance detail and list\nendpoints returned a deferred task's trigger kwargs without masking. When a\ndeferred operator passed a secret (for example a provider API key) into its\ntrigger, any authenticated user with DAG-scoped task-instance read access for\nthat DAG could read that secret in clear text while the task was deferred.\nUsers should upgrade to apache-airflow 3.3.0 or later, which masks sensitive\nvalues in trigger kwargs returned by the API.", "references": ["https://github.com/apache/airflow/pull/67868", "https://lists.apache.org/thread/qlw6pozlzlfhkvmbgqsbjlq6vj4v0pc4", "http://www.openwall.com/lists/oss-security/2026/07/07/6"], "fixes": ["3.3.0"], "products": [{"name": "apache-airflow", "path": "vulns/pypi/apache-airflow", "ecosystem": "PyPI"}]}, {"id": "CVE-2026-48828", "noindex": false, "published": "2026-07-07T09:18:53.833Z", "modified": "2026-09-16T14:55:12.285Z", "cvss": 6.5, "cvss_vector": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N", "severity": "medium", "epss": 0.00664, "kev": false, "exploits": [], "stacks": [{"name": "python", "path": "vulns/stack/python", "slug": "python"}], "path": "vulns/cve-2026-48828", "title": "Apache Airflow: Bulk JSON Variables bypass should_hide_value_for_key - redact() called without the key", "description": "The Bulk Variables API in Apache Airflow called the redactor without passing the variable's key, so the key-based `should_hide_value_for_key` check (which triggers on secret-suffixed key names like `*_password` / `*_token` / `*_secret`) could not fire for JSON-decodable variable values. An authenticated UI/API user with bulk Variable read permission could retrieve plaintext values from JSON variables whose key would otherwise trigger redaction. Affects deployments that store sensitive values in JSON-typed Airflow Variables under secret-suffixed key names. Users are advised to upgrade to `apache-airflow` 3.3.0 or later (the fix landed on `main", "references": ["https://github.com/apache/airflow/pull/67495", "https://lists.apache.org/thread/y9kf314t6dhnv994hr11wj3tbow847yc", "http://www.openwall.com/lists/oss-security/2026/07/07/2"], "fixes": ["3.3.0"], "products": [{"name": "apache-airflow", "path": "vulns/pypi/apache-airflow", "ecosystem": "PyPI"}]}, {"id": "CVE-2026-49296", "noindex": false, "published": "2026-07-07T09:18:12.369Z", "modified": "2026-09-16T14:55:30.602Z", "cvss": 6.5, "cvss_vector": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N", "severity": "medium", "epss": 0.00601, "kev": false, "exploits": [], "stacks": [{"name": "python", "path": "vulns/stack/python", "slug": "python"}], "path": "vulns/cve-2026-49296", "title": "Apache Airflow: Per-DAG read bypass discloses co-located DAGs' source via GET /api/v2/dagSources/{dag_id}", "description": "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.", "references": ["https://github.com/apache/airflow/pull/67662", "https://lists.apache.org/thread/qqv41t3oydkn9o14r2rfz1wkdrsp5jzn", "http://www.openwall.com/lists/oss-security/2026/07/07/5"], "fixes": ["3.3.0"], "products": [{"name": "apache-airflow", "path": "vulns/pypi/apache-airflow", "ecosystem": "PyPI"}]}, {"id": "CVE-2026-48891", "noindex": false, "published": "2026-07-07T09:17:28.748Z", "modified": "2026-09-16T14:55:17.442Z", "cvss": 4.3, "cvss_vector": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N", "severity": "medium", "epss": 0.00636, "kev": false, "exploits": [], "stacks": [{"name": "python", "path": "vulns/stack/python", "slug": "python"}], "path": "vulns/cve-2026-48891", "title": "Apache Airflow: /ui/dependencies scheduling graph leaks unreadable Dag identifiers via trigger/sensor dep.source/dep.target", "description": "A bug in Apache Airflow's `/ui/dependencies` scheduling graph endpoint applied the caller's readable-Dag filter to the top-level serialized Dag key but still emitted referenced Dag IDs through the `dep.source` and `dep.target` fields of trigger / sensor dependency entries. An authenticated UI user with read permission on some Dags could enumerate the identifiers of other Dags they were not authorized to read by inspecting the dependency graph for trigger / sensor references. Affects deployments that rely on per-Dag read scoping to keep Dag identifiers private across teams. This is a residual gap in the fix for CVE-2026-28563, which filtered t", "references": ["https://github.com/apache/airflow/pull/67627", "https://lists.apache.org/thread/wzc8nflg94rq6w8f5tvtlo0o3g4wjrfl", "https://www.cve.org/CVERecord?id=CVE-2026-28563"], "fixes": ["3.3.0"], "products": [{"name": "apache-airflow", "path": "vulns/pypi/apache-airflow", "ecosystem": "PyPI"}]}, {"id": "CVE-2026-48892", "noindex": false, "published": "2026-07-07T09:16:26.466Z", "modified": "2026-09-16T14:55:24.258Z", "cvss": 6.5, "cvss_vector": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N", "severity": "medium", "epss": 0.00664, "kev": false, "exploits": [], "stacks": [{"name": "python", "path": "vulns/stack/python", "slug": "python"}], "path": "vulns/cve-2026-48892", "title": "Apache Airflow: Config API leaks per-key secrets backend kwargs - masker bypass on synthetic options", "description": "The Config API in Apache Airflow surfaced per-key secrets-backend overrides (environment variables like `AIRFLOW__SECRETS__BACKEND_KWARG__SECRET_ID` and `AIRFLOW__WORKERS__SECRETS_BACKEND_KWARG__SECRET_ID`) as synthetic config options whose option names were not in `sensitive_config_values`, so the masker did not redact them. An authenticated UI/API user with Config read permission could retrieve plaintext secrets-backend credentials (Vault `role_id` / `secret_id`, etc.) from the Config API output. Affects deployments that configure secrets backends via per-key environment overrides. Users are advised to upgrade to `apache-airflow` 3.3.0 or l", "references": ["https://github.com/apache/airflow/pull/67622", "https://lists.apache.org/thread/pq5yy40079h6tzh3fxvw28dd8dbk72hk", "http://www.openwall.com/lists/oss-security/2026/07/07/4"], "fixes": ["3.3.0"], "products": [{"name": "apache-airflow", "path": "vulns/pypi/apache-airflow", "ecosystem": "PyPI"}]}], "total": 17, "unknown_count": 3, "release_unconfirmed": false, "page": 1, "pages": 1, "filtered": false, "noindex": true, "filters": {}, "page_size": 20, "products": [{"name": "apache-airflow", "path": "vulns/pypi/apache-airflow", "ecosystem": "PyPI"}], "stacks": [{"name": "system", "path": "vulns/stack/system", "slug": "system"}, {"name": "web", "path": "vulns/stack/web", "slug": "web"}, {"name": "php", "path": "vulns/stack/php", "slug": "php"}, {"name": "python", "path": "vulns/stack/python", "slug": "python"}, {"name": "node", "path": "vulns/stack/node", "slug": "node"}, {"name": "database", "path": "vulns/stack/database", "slug": "database"}, {"name": "containers", "path": "vulns/stack/containers", "slug": "containers"}, {"name": "network", "path": "vulns/stack/network", "slug": "network"}, {"name": "applications", "path": "vulns/stack/applications", "slug": "applications"}], "versions": ["3.3.2rc1", "3.3.1rc2", "3.3.1rc1", "3.3.1", "3.3.0rc2", "3.3.0rc1", "3.3.0b2", "3.3.0b1", "3.3.0", "3.2.2rc3", "3.2.2rc2", "3.2.2rc1"], "stats": {"recent": 0, "kev": 0}, "lastmod": "2026-09-21T18:41:13.406Z", "early_advisories": [], "license": "Sie dürfen die Auswahl von PatchFirst und unsere Ergänzungen (Prioritäten, Frühwarnungen, Texte, Zusammenfassungen und Aggregate) für eigene Zwecke einschließlich interner geschäftlicher Aufgaben frei nutzen. Weiterverkauf, kommerzielle Verbreitung und massenhafte Spiegelung dieser Auswahl oder Ergänzungen erfordern eine schriftliche Vereinbarung mit dem Betreiber. Nennen Sie bei jeder Nutzung oder Veröffentlichung der Auswahl oder unserer Ergänzungen PatchFirst (https://patchfirst.dev/vulns/) mit diesem Link zur Feedseite Ihrer Region als Quelle. Originaleinträge aus offenen Quellen unterliegen weiterhin ihren jeweiligen Lizenzen und Bedingungen. Diese Bedingungen beschränken Ihre Rechte an den Originaldaten nicht, die Sie direkt bei den Quellen beziehen können.", "terms_url": "https://patchfirst.dev/de/vulns/#feed-terms", "attribution": {"name": "PatchFirst", "url": "https://patchfirst.dev/vulns/"}, "source_changes": "PatchFirst wählt Einträge aus, normalisiert und kombiniert sie; Zusammenfassungen und Übersetzungen können hinzukommen. Nachrichten werden im jeweiligen Eintrag mit einem Link zur Originalquelle belegt.", "sources": [{"id": "cve", "name": "CVE List / CVE.org", "url": "https://www.cve.org/", "license": "CVE Terms of Use", "terms_url": "https://www.cve.org/Legal/TermsOfUse", "notice": "Copyright © 1999–2021, The MITRE Corporation. LICENSE Submissions : For all materials you submit to the Common Vulnerabilities and Exposures (CVE™), you hereby grant to The MITRE Corporation (MITRE) and all CVE Numbering Authorities (CNAs) a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute such materials and derivative works. Unless required by applicable law or agreed to in writing, you provide such materials on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. CVE Usage : MITRE hereby grants you a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Common Vulnerabilities and Exposures (CVE™). Any copy you make for such purposes is authorized provided that you reproduce MITRE's copyright designation and this license in any such copy. DISCLAIMERS ALL DOCUMENTS AND THE INFORMATION CONTAINED THEREIN PROVIDED BY MITRE ARE PROVIDED ON AN \"AS IS\" BASIS AND THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE MITRE CORPORATION, ITS BOARD OF TRUSTEES, OFFICERS, AGENTS, AND EMPLOYEES, DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION THEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE."}, {"id": "osv", "name": "OSV", "url": "https://osv.dev/", "terms_url": "https://google.github.io/osv.dev/data/", "terms": "Die Lizenzen der Ursprungsdatenbanken unterscheiden sich; siehe Quellenkatalog."}, {"id": "kev", "name": "CISA KEV", "url": "https://www.cisa.gov/known-exploited-vulnerabilities-catalog", "license": "CC0-1.0", "terms_url": "https://github.com/cisagov/kev-data/blob/develop/LICENSE"}, {"id": "epss", "name": "FIRST EPSS", "url": "https://www.first.org/epss/", "terms_url": "https://www.first.org/epss/faq", "terms": "Frei zugängliche Bewertungen; Quellenangabe erbeten (FIRST EPSS, Bewertungen von Empirical Security)."}, {"id": "github-advisory", "name": "GitHub Advisory Database", "url": "https://github.com/advisories", "license": "CC-BY-4.0", "terms_url": "https://github.com/github/advisory-database/blob/main/LICENSE.md"}, {"id": "exploitdb", "name": "Exploit-DB", "url": "https://www.exploit-db.com/", "license": "GPL-2.0", "terms_url": "https://gitlab.com/exploit-database/exploitdb/-/blob/main/LICENSE.md"}, {"id": "metasploit", "name": "Metasploit", "url": "https://github.com/rapid7/metasploit-framework", "license": "BSD-3-Clause", "terms_url": "https://github.com/rapid7/metasploit-framework/blob/master/LICENSE", "notice": "Copyright (c) 2006-2026, Rapid7, Inc.\nLicense: BSD-3-clause\n Redistribution and use in source and binary forms, with or without modification,\n are permitted provided that the following conditions are met:\n .\n * Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n .\n * Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n .\n * Neither the name of Rapid7, Inc. nor the names of its contributors\n may be used to endorse or promote products derived from this software\n without specific prior written permission.\n .\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\n ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\n ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."}, {"id": "nuclei", "name": "Nuclei Templates", "url": "https://github.com/projectdiscovery/nuclei-templates", "license": "MIT", "terms_url": "https://github.com/projectdiscovery/nuclei-templates/blob/main/LICENSE.md", "notice": "MIT License\n\nCopyright (c) 2025 ProjectDiscovery, Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE."}, {"id": "linux-kernel", "name": "Linux kernel releases", "url": "https://www.kernel.org/", "license": "CC-BY-SA-4.0", "terms_url": "https://www.kernel.org/legal.html", "notice": "Copyright (C) 1997-2014 by The Linux Kernel Organization, Inc."}]}