Dev.to Security πŸ” Cybersecurity πŸ‘ 0 πŸ“– 5 min read

Session invalidation is a route problem, not a flag problem

Session invalidation is a route problem, not a flag problem Four Apache Airflow advisories published on 16 and 21 September 2026 describe one operational failure that security teams keep rediscovering: revoking access

Session invalidation is a route problem, not a flag problem

Four Apache Airflow advisories published on 16 and 21 September 2026 describe one operational failure that security teams keep rediscovering: revoking access is not a single action. Airflow's FAB provider fixed a session-invalidation helper and still needed a second release, because a different endpoint never called that helper at all.
The four issues belong together, and reading them as a set is more useful than treating each CVE as an isolated bug.

What the advisories actually say

CVE-2026-82311 (CVSS 3.1 base 9.8, CWE-613) covers the documented password-reset flow. When an administrator reset a password, the code that should delete database-backed sessions compared the string identifier Flask-Login stores in the session against the user's integer database identifier. The comparison never matched, so no session was removed. An attacker holding a copy of the victim's session cookie kept access after the reset.
CVE-2026-86462 (9.1) reaches the same outcome through the Admin user-edit PATCH endpoint. The provider advisory is explicit that the earlier fix does not repair this path because the PATCH route never invokes the invalidation helper. Deployments that applied the first patch still need the upgrade.
CVE-2026-82310 (7.2) concerns account deactivation. Password authentication correctly rejected a disabled account, but the Core API continued to accept an existing, unexpired token naming that account and allowed that token to mint a replacement. Access stayed within the roles the account already held, but containment silently failed.
CVE-2026-86473 (9.1) covers logout. The Core API logout endpoint revoked only a session token presented as the _token cookie. A client presenting its credential as an Authorization: Bearer header received a normal logout response while the token remained valid until expiry. The default token lifetime is 24 hours and is configurable.
Fixes are available: apache-airflow-providers-fab 3.9.0 addresses the three provider issues, and apache-airflow 3.3.2 addresses the Core API logout defect.

Why the second CVE matters more than the first

The instinct after reading CVE-2026-82311 is to treat it as a comparison bug and move on. The comparison was wrong, but the deeper defect is architectural: session invalidation lives in a helper that each code path must remember to call.
That pattern produces exactly what happened here. The reset command improved. The Admin PATCH view did not. Two endpoints that an operator would describe with the same word, "change the password", had different security behaviour, and nothing in the interface said so.
Deactivation and logout show the same shape from other angles. In one case the authentication check was correct while the token path was not. In the other the revocation code was correct for the credential format the browser uses and inert for the format API clients use.
An operator performing containment during an incident has no visibility into any of this. They see a reset confirmation, a disabled account, or a logout page.

The containment assumption that breaks

Incident response playbooks commonly list "reset the password and disable the account" as steps that end an attacker's session. For Airflow deployments using the FAB auth manager with database-backed sessions, that assumption was wrong in three independent ways before these releases.
The practical consequence is not that an attacker gains new privileges. Every advisory states that the attacker keeps the access the compromised account already had. The consequence is that the eviction step fails while the responder believes it succeeded, and the investigation proceeds on a false timeline.
Session-cookie theft is the prerequisite the advisories name. Where that cookie came from is outside the scope of these CVEs, and XSS, proxy logging, or a stolen backup would all produce the same exposure.

What to verify in your own deployment

Start with configuration. The session issues apply to deployments using the FAB auth manager with [fab] session_backend=database. Airflow documents that the secure-cookie backend cannot centrally delete sessions, and the provider advisory places it out of scope rather than claiming it is unaffected. Know which backend you run before deciding what a password reset means.
Airflow 3 with Core API token authentication is the condition for CVE-2026-82310. Bearer-token API clients are the condition for CVE-2026-86473.
Then check versions. An environment pinned to a provider release older than 3.9.0 has at least the reset and deactivation defects, and applying an older patch does not change that. Airflow core below 3.3.2 leaves the logout behaviour in place.
Finally, test the claim instead of trusting it. The useful test after upgrading is unglamorous: authenticate as a test user in one browser, capture the session cookie through developer tools, change the password from a second session, then replay the captured cookie. A correctly patched deployment rejects it.
For the token path, issue a Core API token, call the logout endpoint with the token in the Authorization header, then reuse the token. A patched installation returns an authentication failure rather than an authorisation success.
Neither test requires exploit code, and both produce evidence you can attach to a change record.

Design lessons that transfer

Treat revocation as a property of every authentication path rather than a function. If two endpoints can change a credential, both need the same invalid-union behaviour, and a test matrix that covers one route proves nothing about the other.
Prefer invalidation that cannot be skipped. Server-side session records with an explicit revocation list, or short token lifetimes paired with refresh rotation, degrade better than an optional helper call. Airflow's own advisory notes the 24-hour default token lifetime as part of the logout problem; a shorter default would have narrowed the window without fixing the logic.
Audit the credential formats your applications accept. Cookie revocation logic that never sees a bearer token is invisible in a browser test suite and obvious in production logs after an incident.

References

πŸ“° Read the original article on Dev.to Security

Originally published by Dev.to Security. Aggregated on AIWithGhost for educational purposes β€” full credit and traffic to the original publisher.