GambleCashless

Mage OSS CVE-2026-111823: The OAuth Callback That Kept Walking After the Error

CryptoStack โ€ข โ€ข Mining

The endpoint is the whole story. Mage OSS, an open-source data pipeline orchestrator, shipped an OAuth 2.0 callback handler that received an error from the identity provider and kept walking. No credential. No user interaction. No prior privilege. The handler registered the error condition, then fell through into the session-creation branch and issued an authenticated session. CVSS 9.8. Network-exploitable, low complexity, no privileges required. Every release at or below 0.9.80 carries it.

I read the advisory three times looking for the clause that would make it smaller. It never arrived.

The classification is CWE-390 โ€” detection of an error condition without action. Not CWE-287, improper authentication. That distinction carries more weight than the severity score. CWE-287 is a broken check; you fix it with one conditional. CWE-390 is a broken philosophy: the code knew something was wrong and declined to stop. One is a bug. The other is a habit, and habits replicate across a codebase.

Logic > Hype. โš ๏ธ Deep article forbidden

Mage occupies a specific and unglamorous slot in the stack. It schedules tasks, resolves dependencies, retries failures, and moves data between source systems and warehouses. To do that it must hold credentials: S3 access keys, Snowflake connection strings, Salesforce OAuth tokens, secrets for machine-learning workflow artifacts. It does not generate data. It holds the keys to everyone else's data.

That is the entire risk model. Mage is a credential aggregator. In security economics it functions as a single point of trust โ€” one bypass yields the full keyring.

OAuth 2.0 is where those keys are guarded. The callback endpoint is the receiving dock: the identity provider redirects the user back with either an authorization code or an error, and the application is supposed to validate state, exchange the code, and only then mint a session. It is the most common authentication-bypass entry point in modern web software precisely because it is the one place where an untrusted third party hands you a value you must interpret before trusting.

The structural weakness is not exotic. Authentication in data tooling is routinely treated as a secondary integration โ€” a checkbox next to Slack notifications and Jira hooks. Secondary integrations get happy-path tests. OAuth's error branches, state validation, token refresh, and PKCE downgrade paths are the corners nobody writes end-to-end tests for. Forkast's tracking frames it exactly that way: auth as an accessory feature, not a core surface.

The disclosure itself was handled properly. A GitHub Security Advisory with a public identifier, a CWE classification, and a documented fix at commit 76c4f46. That is the process working. It is also the process finishing too late for anyone who deployed before the fix existed.

The backdrop is a disclosure cluster. Ten authentication-related incidents in twenty-one days, per the same tracker. That number is doing a lot of rhetorical work in the current conversation, and I will return to it. For now, treat it as an environmental signal, not a proof.

Reconstruct the path. An attacker initiates an OAuth handshake and manipulates the callback to request a provider that does not exist. The OAuth library correctly returns an error state. The application's code detects that error. Then the control flow does not terminate โ€” no return, no throw. Execution continues into the branch that creates a session. The session is issued with no identity verification whatsoever, and the attacker lands inside Mage's internal surface with access to the S3, Snowflake, and Salesforce credentials the instance was configured to hold.

The defect is not weak provider validation. It is an uninterrupted control flow. Provider validation is a logic check โ€” patch one conditional. Uninterrupted control flow after an error is a handling-pattern defect, and it must be closed at every error branch, not one.

That reframing has a direct operational consequence: the known instance is patched; the known class is not. The same team writing the token-refresh path, the state-validation path, and any PKCE fallback had the same reflex. Fail-open is not a localized mistake. It is an engineering default that propagates.

The remediation structure confirms the reading. Two separate pull requests โ€” #6204 and #6205 โ€” landed against commit 76c4f46. Two PRs for one CVE usually means two independent code paths were affected. That is a signal to go looking for a second advisory, not a reason to relax.

Now the asset map, which is where the severity actually lives. An S3 key set with read and write on a data bucket is not one compromise; it is a lateral platform. A Snowflake credential exports the warehouse, the query history, and often the identity material for reuse elsewhere. A Salesforce OAuth token exports CRM records wholesale and doubles as a phishing relay because the token can send mail as the user. Machine-learning workflow artifacts carry training data and feature stores โ€” model theft and training-data poisoning both become reachable. The internal user table is the cheapest of the five and still yields password hashes that are frequently weak.

Rank them critical, critical, high, high, medium. Then note the aggregate: the attacker never needs to breach Snowflake. They breach the tool that holds the Snowflake key. Security investment is set by the weakest link, and in a credential aggregator the weakest link sits behind the login page.

The structural remedy is not a better callback handler. It is shortening the value of what a bypass yields: STS temporary credentials, OAuth refresh with narrowed scope, per-pipeline service accounts instead of one keyring. Mage's design assumption โ€” that one instance holds long-lived credentials for every downstream system โ€” is the part that converts a single CWE into an incident.

The forensics problem is the part almost nobody is discussing.

Mage OSS CVE-2026-111823: The OAuth Callback That Kept Walking After the Error

A session created through this path has no credential failure attached to it. There is no brute-force pattern, no lockout event, no spray signature. In logs it looks like a login. That is the specific reason the absence of a CISA KEV listing proves nothing here. KEV entry follows evidence of exploitation; exploitation of a fail-open callback produces evidence that looks like normal use. No anomaly, no alert, no discovery, no KEV.

I have seen this blind spot before. In 2024 I audited a Layer 2 that claimed zero-knowledge proofs for user privacy. The circuit design was competent on the happy path and ignored side-channel leakage entirely โ€” five distinct cryptographic weaknesses, all of them in boundary conditions rather than core logic. The project delayed its token launch by six months. The lesson generalized: auditors and attackers both live in the boundary conditions, and the boundary conditions are where teams test least.

In 2026 I worked a case closer still. An AI-driven trading agent interpreted oracle data feeds autonomously. When the feed returned a stale or error state, the decision layer treated it as valid input, and a flash loan could push the contract into states the designer never enumerated. Over twenty million dollars in user funds sat behind that one missing branch. The failure was not in the model. It was in what the system did when told something had gone wrong.

Fail-open is not a Python problem or a data-engineering problem. It is the same error-state-treated-as-success-state pattern, wearing different clothes, in every autonomous system that grows fast enough to skip its error handling.

The horizontal exposure deserves equal weight. Apache Airflow has mature OAuth and SSO integration and a longer security history; treat it as medium, pending audit. Dagster and Prefect are younger, integrate fast, and have shorter authentication track records โ€” they belong in the same risk cohort as Mage, not in the safe column beside it. Superset and Metabase carry their own authentication CVE history and warrant the same parallel review of callback implementations.

On the proof-of-concept dispute: Feedly reports no evidence of a public exploit; The Core Group claims material exists. The contradiction is itself the strongest available signal โ€” at least one party believes working material is circulating. For a defender, optimism costs a breach and pessimism costs a log audit. Assume a PoC exists. The trigger condition is a query parameter on a discoverable endpoint; Mage panels have fingerprints; Shodan and Fofa index them in bulk. Zero-credential entry points are exactly what automated scanners are built to find.

Now the part the alarmists will not enjoy.

The architectural critique is correct. Auth treated as a secondary integration is a real and widespread defect, and the fix is a discipline โ€” every error branch terminates, every default denies. That part of the argument holds under scrutiny and should be acted on this week.

Mage OSS CVE-2026-111823: The OAuth Callback That Kept Walking After the Error

The counting does not hold. "Ten incidents in twenty-one days" is a rhetorical device, not a statistic. There is no baseline: what was the historical disclosure rate for authentication CVEs in data tooling? Without that denominator, ten is a number, not a trend. There is also an obvious confound โ€” a research team concentrating on one defect class will find a cluster, because they are looking in one place. Ten samples, all authentication, all recent, cannot support the claim that the industry's architecture is collapsing. The author of the original analysis concedes the intelligence is still limited. That concession is honest, and readers should weight it more heavily than the headline count.

The crypto industry's response has been worse than the analysis. Within hours, the story was being repackaged as a Web3 security event. It is not. There is no token, no chain, no economic model, no TVL. Forcing this into a crypto frame produces exactly the wrong checklist โ€” people start asking about unlock schedules and securities classification while the actual exposure, a warehouse credential, goes unrotated. If you want the honest bridge, it is this: off-chain oracle operators, indexers, and custody backends run the same class of pipeline tooling and hold the same class of credential. That is a warning worth internalizing. It is not a narrative worth inflating.

And the step everyone skipped: rotation. A patch closes the door. It does not retrieve the keys already copied. If the exposure window is unknown โ€” and no advisory has disclosed the introduction date โ€” then patching without rotating S3, Snowflake, Salesforce, and workflow secrets leaves stolen material sitting in the lock. The commit gets the applause. The rotation gets postponed. That inversion is the actual failure of this incident.

Logic > Hype. โš ๏ธ Deep article forbidden

So treat the patch as the opening of an investigation, not its conclusion.

Inventory every Mage instance. Force upgrades past 0.9.80 and network-isolate whatever cannot move immediately. Pull session logs back to the earliest plausible introduction point and filter for sessions created without a corresponding credential exchange โ€” the anomaly you are hunting does not look anomalous, which is precisely why the query must be written by hand. Rotate every credential the instance touched. Then read commit 76c4f46 and both pull requests line by line, and ask of your own authentication code the only question that matters: when this branch fails, does it deny, or does it continue?

The answer for most codebases will be uncomfortable.

The real question is not whether Mage shipped one bad branch. It is how many other tools hold your warehouse keys, your CRM tokens, and your training data, and treat "error" as a suggestion rather than a stop.

Logic > Hype. โš ๏ธ Deep article forbidden

Market Prices

Coin Price 24h
BTC Bitcoin
$78,324.8 -2.11%
ETH Ethereum
$2,245.65 -3.04%
SOL Solana
$97.32 -2.61%
BNB BNB Chain
$716.9 -4.71%
XRP XRP Ledger
$1.25 -3.15%
DOGE Dogecoin
$0.0762 -2.46%
ADA Cardano
$0.1928 -2.92%
AVAX Avalanche
$8.51 -1.41%
DOT Polkadot
$0.9355 -3.95%
LINK Chainlink
$11.01 -3.74%

Fear & Greed

30

Fear

Market Sentiment

Event Calendar

{{ๅนดไปฝ}}
12
05
halving BCH Halving

Block reward halving event

22
03
unlock Optimism Unlock

Circulating supply increases by about 2%

15
04
halving Bitcoin Halving

Block reward reduced to 3.125 BTC

10
05
upgrade Ethereum Pectra Upgrade

Raises validator limit and account abstraction

18
03
unlock Sui Token Unlock

Team and early investor shares released

08
04
upgrade Solana Firedancer

Independent validator client goes live on mainnet

28
03
unlock Arbitrum Token Unlock

92 million ARB released

30
04
upgrade Celestia Mainnet Upgrade

Improves data availability sampling efficiency

Tools

All โ†’

Altseason Index

41

Bitcoin Season

BTC Dominance Altseason

Gas Tracker

Ethereum 28 Gwei
BNB Chain 3 Gwei
Polygon 42 Gwei
Arbitrum 0.5 Gwei
Optimism 0.3 Gwei

Market Cap

All โ†’
# Coin Price
1
Bitcoin BTC
$78,324.8
1
Ethereum ETH
$2,245.65
1
Solana SOL
$97.32
1
BNB Chain BNB
$716.9
1
XRP Ledger XRP
$1.25
1
Dogecoin DOGE
$0.0762
1
Cardano ADA
$0.1928
1
Avalanche AVAX
$8.51
1
Polkadot DOT
$0.9355
1
Chainlink LINK
$11.01

๐Ÿ‹ Whale Tracker

๐ŸŸข
0xf562...5ac6
30m ago
In
2,704,707 USDT
๐Ÿ”ต
0xd98d...7539
12h ago
Stake
39,782 SOL
๐ŸŸข
0x3315...e039
6h ago
In
402,182 DOGE

๐Ÿ’ก Smart Money

0x3c5e...f1a0
Market Maker
+$0.6M
61%
0x2ddb...281e
Institutional Custody
+$1.3M
82%
0x618a...d9d0
Market Maker
-$1.6M
80%