Security(M-07): Hub OIDC login credential reused for Admin API and forwarded to japps with broad realm roles
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 35/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Tranquilla
- Stack tecnologico
- python, yaml
- Ambito
- authentication, authorization, security
Direzione di ricerca
Inizia leggendo config/jupyterhub/00-gateway-auth.py, config/jupyterhub/02-jhub-apps.py, files/keycloak_rbac_bootstrap.py e values.yaml alle righe indicate. Analizza come viene utilizzato il client di accesso e come sono configurati il suo secret e i suoi ruoli realm; individua un design che soddisfi la lookup di autorizzazione richiesta senza esporre credenziali amministrative. Il lavoro è completato quando il client di accesso non ha ruoli realm-management e non può enumerare oggetti realm non correlati.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
The hub's OIDC login client doubles as its Keycloak Admin API service account, and the same client secret is forwarded into the user-facing japps service. The login client is granted broad realm-management read roles, so compromise of this widely distributed credential permits realm-wide enumeration of users, groups, clients, and configuration.
Severity: Medium · CWE-250 (Execution with Unnecessary Privileges)
Validation: Confirmed against HEAD f932d80 on 2026-07-14 (assessed at 69c84f7; unchanged since).
Evidence
- Login credentials reused for Admin API:
config/jupyterhub/00-gateway-auth.py:480-490builds the Admin API client from the same OAuthclient_id/client_secret, and_client_credentials_token(00-gateway-auth.py:149-161) performs aclient_credentialsgrant with them. - Secret forwarded to japps:
config/jupyterhub/02-jhub-apps.py:79-84injectsJUPYTERHUB_OIDC_CLIENT_SECRETinto the japps subprocess environment. - Broad roles:
files/keycloak_rbac_bootstrap.py:64assignsview-clients,view-groups,view-realm,view-users. Note thevalues.yaml:266comment advertises only three of these (it omitsview-users), so the docs understate what the code grants.
Impact
The platform needs limited authorization-lookup capability, but binding realm-management roles to the login credential and then forwarding that credential to a user-facing service means a single compromise can enumerate every user, group, and client in the realm.
Remediation
- Separate login credentials from administration credentials.
- Use a purpose-specific identity or an authorization broker that exposes only the required group/profile decision.
- Never forward administrative credentials into a user-facing service.
- Rotate the existing secret.
- Fix the
values.yamlcomment to match the roles actually granted.
Acceptance criteria
- The login client has no realm-management roles.
- Compromise of the login client cannot enumerate unrelated realm objects.
Source: data-science-pack 0.1.0 security assessment (pinned commit 69c84f72df259ec755ed40bfc83f20158c550d55), finding M-07.
- Lingua principale
- Python
- Stelle
- 5
- Fork
- 7
- Merge medio
- 20m
- PR unite (30g)
- 4
Preparare l'ambiente
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di nebari-dev/data-science-pack
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
nebari-dev/data-science-pack#248 ·
-
Difficoltà 1/5 1-3 ore Idoneità per principianti 88/100
nebari-dev/data-science-pack#243 ·
-
area: documentation 📖
Difficoltà 2/5 1-2 giorni Idoneità per principianti 76/100
nebari-dev/data-science-pack#209 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
nebari-dev/data-science-pack#206 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
nebari-dev/data-science-pack#187 ·
Tutte le issue di nebari-dev/data-science-pack
Issue simili
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
I maintainer di solito rispondono entro 1 giorno
-
https://search.utilibre.orgApertainstance instance add
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
searxng/searx-instances#941 · 1 commento ·
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
FluidNumerics/fluid-walk-blocker#89 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
I maintainer di solito rispondono entro 1 giorno