Open WebUI, Incorrect Authorization, CVE-2026-88006 (Medium) -DC-Sep2026-2361

Listen to this Post

Open WebUI is an extensible, self-hosted AI platform. From version 0.8.0 until 0.11.1, the OAuth token exchange endpoint in `backend/open_webui/routers/auths.py` issues a session for a provider access token without running the OAuth role management logic that the normal OAuth login callback executes. The endpoint was introduced as a second entry point into the same session-issuing path used by the OAuth login callback, but it re-implemented only the identity lookup and omitted the policy checks surrounding it. Specifically, role evaluation lived inside the callback’s own body rather than in shared code, so the token exchange caller inherited none of it. As a result, a user whose provider roles the login callback would refuse or demote could still obtain a working session at their existing role through the token exchange endpoint. The login callback does enforce role changes on the next sign-in, but token exchange kept issuing sessions and never re-evaluated the role, allowing a user to retain working access, including an admin role the provider had already revoked. The endpoint cannot create an account and cannot raise anyone’s role, so the vulnerability grants continued access rather than new or elevated access. The issue is fixed in version 0.11.1 by commit d799e81ed, which runs the same role evaluation on the provider’s response that the login callback runs, denying the exchange with a 403 when the reported roles match no allowed or admin role.

DailyCVE Form:

Platform: Open WebUI
Version: 0.8.0-0.11.1
Vulnerability: Incorrect Authorization
Severity: Medium
date: 2026-09-10

Prediction: 2026-08-25

What Undercode Say:

Check if token exchange is enabled
curl -s http://localhost:8080/api/v1/auths/oauth/token/exchange | jq .enabled
Simulate the vulnerable token exchange request
curl -X POST http://localhost:8080/api/v1/auths/oauth/google/token/exchange \
-H "Content-Type: application/json" \
-d '{"access_token": "VALID_PROVIDER_TOKEN"}'
Snippet from auths.py showing the missing role check (vulnerable version)
async def token_exchange(provider: str, access_token: str, ...):
Identity lookup only
user = await get_user_by_oauth_sub(provider, sub)
if not user:
raise HTTPException(404, "User not found")
Missing role evaluation here
return create_session(user)

Exploit: (Educational Purposes!)

An attacker who possesses a valid, unexpired provider access token for a subject linked to an existing Open WebUI account can call the token exchange endpoint. The endpoint returns a session without re-evaluating the user’s roles against the provider’s current claims. If the identity provider has revoked an admin role, the user still receives a session with their previous admin privileges, enabling continued access to administrative features.

Protection: from this CVE

Upgrade Open WebUI to version 0.11.1 or later, which includes the role evaluation in the token exchange flow. Alternatively, disable `ENABLE_OAUTH_TOKEN_EXCHANGE` if the feature is not required. Restrict access to the token exchange endpoint via firewall or reverse proxy rules so only trusted clients can call it. Revoke all existing provider access tokens and force users to re-authenticate through the legitimate OAuth login route.

Impact:

An administrator who relies on OAuth role management expects a user to lose access or lose admin privileges as soon as the identity provider stops reporting the required role. The token exchange endpoint bypasses this enforcement, allowing a user to retain working access at their existing account role, including an admin role the provider had already revoked. The endpoint cannot create accounts or elevate privileges, so the impact is limited to continued access rather than new or higher-level access.

🎯Let’s Practice Exploiting & Learn Patching For Free:

🎓 Live Courses & Certifications:

Join Undercode Academy for Verified Certifications

🚀 Request a Custom Project:

Secure, high-velocity infrastructure and disruptive technological engineering. Contact our engineering team for high-tier development and proprietary systems:
[email protected]
💎 Smart Architecture | 🛡️ Secure by Design | ⭐ Trusted by Thousands

Sources:

Reported By: github.com
Extra Source Hub:
Undercode

🔐JOIN OUR CYBER WORLD [ CVE News • HackMonitor • UndercodeNews ]

💬 Whatsapp | 💬 Telegram

📢 Follow DailyCVE & Stay Tuned:

𝕏 formerly Twitter 🐦 | @ Threads | 🔗 Linkedin Featured Image

Scroll to Top