Authorization Bypass Through User-Controlled Key when using CILogonOAuthenticator in oauthenticator
Key facts
- Attack vector
- Network
- Privileges required
- Low
- User interaction
- None
- Attack complexity
- Low
- Impact type
- Security bypass
- Confidentiality · integrity · availability
- High · None · None
- Fix status
- Fixed
Attack profile from CVSS 3.1 · NVD. Fix status from CNA and GitHub. Impact type from CWE-639.
Summary
OAuthenticator is an OAuth token library for the JupyerHub login handler. CILogonOAuthenticator is provided by the OAuthenticator package, and lets users log in to a JupyterHub via CILogon. This is primarily used to restrict a JupyterHub only to users of a given institute. The allowed_idps configuration trait of CILogonOAuthenticator is documented to be a list of domains that indicate the institutions whose users are authorized to access this JupyterHub. This authorization is validated by ensuring that the *email* field provided to us by CILogon has a *domain* that matches one of the domains listed in `allowed_idps`.If `allowed_idps` contains `berkeley.edu`, you might expect only users with valid current credentials provided by University of California, Berkeley to be able to access the JupyterHub. However, CILogonOAuthenticator does *not* verify which provider is used by the user to login, only the email address provided. So a user can login with a GitHub account that has email set to `<something>@berkeley.edu`, and that will be treated exactly the same as someone logging in using the UC Berkeley official Identity Provider. The patch fixing this issue makes a *breaking change* in how `allowed_idps` is interpreted. It's no longer a list of domains, but configuration representing the `EntityID` of the IdPs that are allowed, picked from the [list maintained by CILogon](https://cilogon.org/idplist/). Users are advised to upgrade.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- None
- Automatable
- No
- Technical impact
- Partial
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| jupyterhub | oauthenticator | before 15.0.0 | 15.0.0 | Patch available | CNA |
| — | oauthenticator (PyPI) | before 15.0.0 | 15.0.0 | Patch available | GHSA-r7v4-jwx9-wx43 |
- oauthenticator Vendorjupyterhub Affected before 15.0.0 Fixed in 15.0.0 Patch available CNA
- oauthenticator (PyPI) Vendor— Affected before 15.0.0 Fixed in 15.0.0 Patch available GHSA-r7v4-jwx9-wx43
CPE configurations NVD · 1
| CPE | Versions | Role | Vendor |
|---|---|---|---|
| cpe:2.3:a:jupyter:oauthenticator:*:*:*:*:*:*:*:* | before 15.0.0 | Vulnerable | jupyterlab |
- cpe:2.3:a:jupyter:oauthenticator:*:*:*:*:*:*:*:* Versions before 15.0.0 Vulnerable ·jupyterlab
Remediation
- Fix · CNA oauthenticator (jupyterhub) Fixed in 15.0.0
- Fix · GHSA-r7v4-jwx9-wx43 oauthenticator (PyPI) Fixed in 15.0.0 Advisory →
Timeline
- 2026-10-02 Threatist record created from CVE-2022-31027
- 2026-10-03 Alias added: GHSA-r7v4-jwx9-wx43
References
Advisory 2
More jupyterhub vulnerabilities
- TI-2025-23499 Jupyter Remote Desktop Proxy makes TigerVNC accessible via the network and not just via a UNIX socket as intended CVSS 4.0CRITICAL 9.0
- TI-2023-10877 JupyterHub's LTI13Authenticator: JWT signature not validated CVSS 3.1CRITICAL 10.0
- TI-2021-16545 Remote code execution in Binderhub CVSS 3.1CRITICAL 9.8
- TI-2021-18033 Improper Access Control in jupyterhub-firstuseauthenticator CVSS 3.1CRITICAL 9.8
- TI-2021-16546 Code injection in nbgitpuller CVSS 3.1CRITICAL 9.6
- TI-2024-18755 Jupyter Server Proxy's Websocket Proxying does not require authentication CVSS 3.1CRITICAL 9.8
Sources
- CVE-2022-31027 · CVE Program
- CVE-2022-31027 · NVD
- FIRST EPSS
- GHSA-r7v4-jwx9-wx43 · GitHub Advisory Database · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences