GHSA-vj39-hwrh-p32g
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain valid token before deactivation
-
DeliveryAdmin deactivates account (containment)
-
ExploitReplay unexpired token to Core API
-
ExecutionToken accepted, mints replacement token
-
ImpactRetain role-scoped access indefinitely
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V7 - Session Management Session expiration enforcement
|
| Exploitation Conditions | Requires Airflow 3 deployed with the FAB auth manager AND Core API token authentication enabled. The attacker must already hold a valid, unexpired token that was legitimately issued to the account while it was still active, and the deactivated account's row must remain in the database (deactivated, not deleted). Exploitation is triggered specifically after an administrator deactivates the account; the actor is effectively the deactivated account holder replaying their own credential. Limiting factors: access is strictly bounded to the roles the account already held (no escalation), the token must not have expired, and it does not affect deployments that delete accounts rather than deactivate them or that do not use Core API token auth. PR:H reflects that a valid pre-issued account credential is a prerequisite. |
| Impact | This is a genuine but bounded security-hygiene defect, not a top-tier emergency. The vendor CVSS 3.1 vector (AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H = 7.2 High) is internally consistent and honest: PR:H correctly reflects that the actor must already possess a valid, unexpired token issued to the account before deactivation - i.e. they are effectively the account holder, not an outside attacker. EPSS is low (0.25%, 16th percentile), there is no CISA KEV listing, and no public exploit code was identified - signals that align with the intrinsic nature of the bug (it is a containment-failure exploitable only by the very insider being contained, not a mass-exploitable remote flaw). The description explicitly states 'no signature forgery or privilege escalation is involved' and access 'stays within the roles the account already held,' which contradicts the input 'Privilege Escalation' tag and confirms this is a session/token-expiration failure (CWE-613), not an escalation primitive. No SSVC decision data was provided. Real-world priority is moderate and situational: it matters acutely when an organization deactivates an account as an incident-response containment step (e.g. a departing or compromised insider) and wrongly assumes access is severed. |
| Exploit ScenarioDerived | An administrator deactivates a user account (a departing employee or a suspected-compromised operator) as a containment action, and password login is correctly refused. However, the account holder - or anyone holding that account's still-valid Core API token - continues issuing authenticated Core API calls with the pre-existing token and even uses it to mint a fresh replacement token, retaining role-scoped access indefinitely. No public exploit code exists; exploitation is a straightforward replay of the actor's own legitimate, unexpired credential. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv3 – Sep 17, 2026
Deactivating a user account in Apache Airflow 3 deployments that run the FAB auth manager with Core API token authentication fails to revoke tokens already issued to that account, so the disabled user can keep replaying an unexpired token - and use it to mint a replacement - after an administrator has turned the account off. The credential is the account's own legitimate token, so there is no signature forgery and no privilege escalation: access stays bounded to the roles the account already held, but the administrative containment action silently fails and the account keeps role-scoped API access until the token finally expires. No public exploit code identified at time of analysis; EPSS is low at 0.25% (16th percentile); a vendor fix is available in apache-airflow-providers-fab 3.9.0.
Earlier versions of this analysis (2)
Deactivating a user account in Apache Airflow 3 deployments that use the FAB auth manager together with Core API token authentication does not revoke tokens that were issued to that account before it was disabled, so a deactivated user can continue to exercise Core API access within their existing roles and can even mint a fresh replacement token to keep doing so indefinitely. The vulnerability requires an authenticated actor who already holds a valid, unexpired token obtained while the account was active (CVSS vector PR:H), and the impact is strictly bounded to the permissions the account already had - no signature forgery or privilege escalation is involved. Vendor CVSS 3.1 is 7.2, EPSS is 0.25% (16th percentile), no public exploit code has been identified at time of analysis, and the vendor fix is available as apache-airflow-providers-fab 3.9.0.
Deactivated user accounts in the Apache Airflow FAB auth provider (apache-airflow-providers-fab 2.0.0 before 3.9.0) keep working through the Airflow 3 Core API: the password login path correctly rejects a disabled account, but any JWT access token issued before deactivation is still accepted and can be exchanged for a fresh token indefinitely. The result is that an administrative deactivation — typically performed as a containment action against a departing employee or compromised account — silently fails, leaving the account with its original role-scoped access to the Airflow control plane. No signature forgery or privilege escalation is involved; the holder simply replays their own still-valid credential. The issue is rated moderate by the project, with no CVSS vector, CWE, EPSS score, KEV entry, or public exploit code supplied in the available intelligence, and remediation is available in version 3.9.0.
RemediationAI
Vendor-released patch: apache-airflow-providers-fab 3.9.0 or later, which re-checks the account's active status on every token-authenticated request and rejects tokens naming a deactivated account (upgrade with pip install 'apache-airflow-providers-fab>=3.9.0' and restart the Airflow components that use it). Apply the upgrade as the primary fix; the change is small and the regression risk is low. If an immediate upgrade is not possible, prefer deleting the account row instead of merely deactivating it when containment is required - this immediately invalidates the token path, at the cost of losing the account's audit history and possibly complicating reassignment of DAG or connection ownership. A second compensating control is rotating the secret used to sign FAB API tokens, which invalidates every outstanding token for every user; the trade-off is that all interactive users and any automation holding tokens must re-authenticate, so schedule it during a maintenance window. Reducing token lifetime shortens the exposure window but does not eliminate it, and disabling Core API token authentication entirely is effective only where no programmatic API clients depend on it. After upgrading, review logs for continued API calls attributable to deactivated accounts, since tokens issued before the fix remain valid until expiry or revocation. Advisory references: https://lists.apache.org/thread/85h9r50bmy8vgkgr5nyddryj1p5pxxy2, https://seclists.org/oss-sec/2026/q3/792, and https://github.com/apache/airflow/pull/72199.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The affected component is the Flask AppBuilder (FAB) auth manager shipped as apache-airflow-providers-fab, which supplies authentication and authorization for Apache Airflow 3. The weakness is CWE-613 (Insufficient Session Expiration): JWT-style API tokens are treated as valid purely on the basis of their signature and expiry, without re-checking the current state of the account they name. In the vulnerable code path (providers/fab/src/airflow/providers/fab/auth_manager/fab_auth_manager.py, deserialize_user), the user row was loaded from the database by ID and returned without consulting the account's active flag, whereas the interactive password path (auth_user_db) correctly rejects disabled accounts. Because the token is only 'logged out' when it expires, an administrator who deactivates an account - a common containment step during an incident - leaves any unexpired token working, and that token can itself be exchanged for a fresh one, extending the effective lifetime indefinitely. The nullable active column is also significant: the upstream fix treats a NULL value as inactive, matching the password path, so accounts with an unset flag are also rejected. The upstream patch (PR 72199) raises a ValueError in deserialize_user when the resolved user is not active, closing the gap between the password and token authentication paths. Note that some feeds tag this as privilege escalation; the assessed impact is bounded, as the holder retains only the roles the account already had rather than gaining new ones.
Know when Airflow gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H
Network Core API (AV:N), simple token replay (AC:L); PR:H because the actor must possess the account's own valid pre-issued privileged token; C/I/A:H reflect a high-privileged account's retained role scope.
Primary rating from Vendor (CNA).
CVSS VectorVendor
Lifecycle Timeline
5Description PRE-NVD
Executive ViewAI
A flaw in Apache Airflow 3 deployments using the FAB auth manager with Core API token authentication means that deactivating a user account does not actually revoke the tokens that account was already issued, so a departed, suspended, or offboarded user can continue reaching role-scoped Airflow APIs until those tokens expire - and can even generate a fresh token from the still-live credential. The blast radius is bounded to the permissions the account already held, with no signature forgery or privilege escalation, but the practical consequence is that a core administrative containment action silently fails, undermining offboarding, incident response, and access-revocation commitments that audit and compliance functions rely on. Security and platform operations teams should care because they cannot currently trust account deactivation as a reliable cutoff for API access in affected Airflow environments.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
The previous default setting for Airflow's Experimental API was to allow all API requests without authentication, but th
An issue was found in Apache Airflow versions 1.10.10 and below. Rated high severity (CVSS 8.8), this vulnerability is r
The variable import endpoint was not protected by authentication in Airflow >=2.0.0, <2.1.3. Rated critical severity (CV
An issue was found in Apache Airflow versions 1.10.10 and below. Rated critical severity (CVSS 9.8), this vulnerability
A vulnerability in Example Dags of Apache Airflow allows an attacker with UI access who can trigger DAGs, to execute arb
In Apache Airflow, prior to version 2.2.4, some example DAGs did not properly sanitize user-provided params, making them
Incorrect Session Validation in Apache Airflow Webserver versions prior to 1.10.14 with default config allows a maliciou
Insufficient session expiration in apache-airflow-providers-fab 2.4.2 through 3.9.0 means an attacker who already holds
Authentication bypass in the Apache Airflow Keycloak auth manager provider (apache-airflow-providers-keycloak below 0.10
Privilege Context Switching Error vulnerability in Apache Software Foundation Apache Airflow.6.0. Rated critical severit
Improper Neutralization of Special Elements used in a Command ('Command Injection') vulnerability in Apache Software Fou
Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection') vulnerability in Apache Airfl
EUVD-2026-80322
NVD
CVE.org
EPSS
VulDB
Exploit-DB