{"kind": "version", "path": "vulns/pypi/apache-airflow/3.3.0", "name": "apache-airflow", "product": "apache-airflow", "ecosystem": "PyPI", "version": "3.3.0", "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-58076", "noindex": false, "published": "2026-08-12T15:40:59.934Z", "modified": "2026-09-16T14:55:55.813Z", "cvss": 8.8, "cvss_vector": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "severity": "high", "epss": 0.00484, "kev": false, "exploits": [], "stacks": [{"name": "python", "path": "vulns/stack/python", "slug": "python"}], "path": "vulns/cve-2026-58076", "title": "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", "description": "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", "references": ["https://github.com/apache/airflow/pull/68511", "https://lists.apache.org/thread/t81p688t15jozxsng8521o60nh2kfsos", "https://www.cve.org/CVERecord?id=CVE-2026-33264"], "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-67260", "noindex": false, "published": "2026-08-12T15:33:02.858Z", "modified": "2026-09-16T14:56:08.113Z", "cvss": 7.3, "cvss_vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L", "severity": "high", "epss": 0.00779, "kev": false, "exploits": [], "stacks": [{"name": "python", "path": "vulns/stack/python", "slug": "python"}], "path": "vulns/cve-2026-67260", "title": "Apache Airflow: DAG-author remote code execution on the Scheduler via awaiting_input next_kwargs deserialization", "description": "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", "references": ["https://github.com/apache/airflow/pull/70685", "https://lists.apache.org/thread/vygr0fh82cjzjp5k4vtfmboxryvm3lyn", "https://www.cve.org/CVERecord?id=CVE-2026-58076"], "fixes": ["3.3.1"], "products": [{"name": "apache-airflow", "path": "vulns/pypi/apache-airflow", "ecosystem": "PyPI"}]}, {"id": "CVE-2026-67587", "noindex": false, "published": "2026-08-12T15:32:10.565Z", "modified": "2026-09-16T14:56:11.653Z", "cvss": 8.8, "cvss_vector": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "severity": "high", "epss": 0.00611, "kev": false, "exploits": [], "stacks": [{"name": "python", "path": "vulns/stack/python", "slug": "python"}], "path": "vulns/cve-2026-67587", "title": "Apache Airflow: DAG-author remote code execution on the Scheduler via a Serde `Callback` deserialization gadget", "description": "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", "references": ["https://github.com/apache/airflow/pull/70704", "https://lists.apache.org/thread/o00ww4n69qojvsckb464dtwd2nhzy6t0", "https://www.cve.org/CVERecord?id=CVE-2026-58076"], "fixes": ["3.3.1"], "products": [{"name": "apache-airflow", "path": "vulns/pypi/apache-airflow", "ecosystem": "PyPI"}]}, {"id": "CVE-2026-65017", "noindex": false, "published": "2026-08-12T15:31:26.092Z", "modified": "2026-09-16T14:57:05.437Z", "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.00388, "kev": false, "exploits": [], "stacks": [{"name": "python", "path": "vulns/stack/python", "slug": "python"}], "path": "vulns/cve-2026-65017", "title": "Apache Airflow: Config API: team-scoped Celery broker secret disclosed to a Viewer (multi-team masking bypass)", "description": "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-", "references": ["https://github.com/apache/airflow/pull/70755", "https://lists.apache.org/thread/kykn94kjf0tntx4wywtvjowh5bzdgf38", "https://www.cve.org/CVERecord?id=CVE-2026-48828"], "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"}]}], "total": 15, "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": "You may freely use the PatchFirst selection and our additions (priorities, early warnings, texts, summaries and aggregates) for your own purposes, including internal business use. Resale, commercial distribution and bulk mirroring of this selection or these additions require a written agreement with the operator. Whenever you use or publish the selection or our additions, credit PatchFirst (https://patchfirst.dev/vulns/) with this link to the regional feed page. Original records from open sources remain subject to their respective licenses and terms. These conditions do not restrict your rights to the original data, which you can obtain directly from those sources.", "terms_url": "https://patchfirst.dev/vulns/#feed-terms", "attribution": {"name": "PatchFirst", "url": "https://patchfirst.dev/vulns/"}, "source_changes": "Records are selected, normalized and combined by PatchFirst; summaries and translations may be added. News is credited with a link to the original source in each entry.", "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": "Upstream licenses vary; see the source catalog."}, {"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": "Free public scores; attribution requested (FIRST EPSS, scores generated by 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."}]}