{"id":"CVE-2024-41942","aliases":["BIT-jupyterhub-2024-41942","DEBIAN-CVE-2024-41942","EUVD-2024-0080","GHSA-9x4q-3gxw-849f","PYSEC-2024-200","UBUNTU-CVE-2024-41942"],"status":"published","title":"JupyterHub has a privilege escalation vulnerability with the `admin:users` scope","description":"JupyterHub is software that allows one to create a multi-user server for Jupyter notebooks. Prior to versions 4.1.6 and 5.1.0, if a user is granted the `admin:users` scope, they may escalate their own privileges by making themselves a full admin user. The impact is relatively small in that `admin:users` is already an extremely privileged scope only granted to trusted users.\nIn effect, `admin:users` is equivalent to `admin=True`, which is not intended. Note that the change here only prevents escalation to the built-in JupyterHub admin role that has unrestricted permissions. It does not prevent users with e.g. `groups` permissions from granting themselves or other users permissions via group membership, which is intentional. Versions 4.1.6 and 5.1.0 fix this issue.","severity":{"version":"3.1","score":7.2,"vector":"CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H","level":"high","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-11","score":0.0059,"percentile":0.48653,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-274"],"published":"2024-08-08T14:36:44Z","modified":"2026-11-02T12:02:45Z","fixes":[{"ecosystem":"PyPI","package":"jupyterhub","fixed_in":["4.1.6","5.1.0"],"sources":["ghsa","osv"]},{"ecosystem":"Bitnami","package":"jupyterhub","fixed_in":["4.1.6","5.1.0"],"sources":["osv"]},{"ecosystem":"Debian:13","package":"jupyterhub","fixed_in":["5.2.1+ds1-1"],"sources":["osv"]},{"ecosystem":"Debian:14","package":"jupyterhub","fixed_in":["5.2.1+ds1-1"],"sources":["osv"]}],"affected":[{"source":"ghsa","ecosystem":"PyPI","package":"jupyterhub","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"4.1.6"}]}]},{"source":"ghsa","ecosystem":"PyPI","package":"jupyterhub","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"5.0.0"},{"fixed":"5.1.0"}]}]},{"source":"osv","ecosystem":"Bitnami","package":"jupyterhub","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"4.1.6"},{"introduced":"5.0.0"},{"fixed":"5.1.0"}]}]},{"source":"osv","ecosystem":"Debian:12","package":"jupyterhub","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["3.0.0+ds1-1","5.0.0+ds1-1","5.0.0+ds1-2","5.0.0+ds1-3","5.0.0+ds1-4","5.2.1+ds1-1","5.2.1+ds1-2","5.2.1+ds1-3","5.2.1+ds1-4","5.2.1+ds1-5"]},{"source":"osv","ecosystem":"Debian:13","package":"jupyterhub","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"5.2.1+ds1-1"}]}]},{"source":"osv","ecosystem":"Debian:14","package":"jupyterhub","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"5.2.1+ds1-1"}]}]},{"source":"osv","ecosystem":"PyPI","package":"jupyterhub","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"4.1.6"}]}],"versions":["0.1.0","0.2.0","0.3.0","0.4.0","0.4.1","0.5.0","0.6.0","0.6.1","0.7.0","0.7.0b1","0.7.1","0.7.2","0.8.0","0.8.0b1","0.8.0b2","0.8.0b3","0.8.0b4","0.8.0b5","0.8.0rc1","0.8.0rc2","0.8.1","0.9.0","0.9.0b1","0.9.0b2","0.9.0b3","0.9.0rc1","0.9.1","0.9.2","0.9.3","0.9.4","0.9.5","0.9.6","1.0.0","1.0.0b1","1.0.0b2","1.1.0","1.1.0b1","1.2.0","1.2.0b1","1.2.1","1.2.2","1.3.0","1.4.0","1.4.1","1.4.2","1.5.0","1.5.1","2.0.0","2.0.0b1","2.0.0b2","2.0.0b3","2.0.0rc1","2.0.0rc2","2.0.0rc3","2.0.0rc4","2.0.0rc5","2.0.1","2.0.2","2.1.0","2.1.1","2.2.0","2.2.1","2.2.2","2.3.0","2.3.1","3.0.0","3.0.0b1","3.1.0","3.1.1","4.0.0","4.0.0b1","4.0.0b2","4.0.1","4.0.2","4.1.0","4.1.1","4.1.2","4.1.3","4.1.4","4.1.5"]},{"source":"osv","ecosystem":"PyPI","package":"jupyterhub","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"5.0.0"},{"fixed":"5.1.0"}]}],"versions":["5.0.0"]},{"source":"osv","ecosystem":"PyPI","package":"jupyterhub","ranges":[{"type":"GIT","events":[{"introduced":"0"},{"fixed":"99e2720b0fc626cbeeca3c6337f917fdacfaa428"},{"fixed":"ff2db557a85b6980f90c3158634bf924063ab8ba"}]},{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"4.1.6"}]}],"versions":["0.1.0","0.2.0","0.3.0","0.4.0","0.4.1","0.5.0","0.6.0","0.6.1","0.7.0","0.7.0b1","0.7.1","0.7.2","0.8.0","0.8.0b1","0.8.0b2","0.8.0b3","0.8.0b4","0.8.0b5","0.8.0rc1","0.8.0rc2","0.8.1","0.9.0","0.9.0b1","0.9.0b2","0.9.0b3","0.9.0rc1","0.9.1","0.9.2","0.9.3","0.9.4","0.9.5","0.9.6","1.0.0","1.0.0b1","1.0.0b2","1.1.0","1.1.0b1","1.2.0","1.2.0b1","1.2.1","1.2.2","1.3.0","1.4.0","1.4.1","1.4.2","1.5.0","1.5.1","2.0.0","2.0.0b1","2.0.0b2","2.0.0b3","2.0.0rc1","2.0.0rc2","2.0.0rc3","2.0.0rc4","2.0.0rc5","2.0.1","2.0.2","2.1.0","2.1.1","2.2.0","2.2.1","2.2.2","2.3.0","2.3.1","3.0.0","3.0.0b1","3.1.0","3.1.1","4.0.0","4.0.0b1","4.0.0b2","4.0.1","4.0.2","4.1.0","4.1.1","4.1.2","4.1.3","4.1.4","4.1.5"]},{"source":"osv","ecosystem":"Ubuntu:22.04:LTS","package":"jupyterhub","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.0.0+ds1-1","2.0.0+ds1-2"]},{"source":"osv","ecosystem":"Ubuntu:24.04:LTS","package":"jupyterhub","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["3.0.0+ds1-1"]},{"source":"osv","ecosystem":"Ubuntu:25.10","package":"jupyterhub","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["5.2.1+ds1-2","5.2.1+ds1-3","5.2.1+ds1-4"]},{"source":"osv","ecosystem":"Ubuntu:26.10","package":"jupyterhub","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["5.2.1+ds1-4","5.2.1+ds1-5"]},{"source":"osv","ecosystem":"Ubuntu:26.04:LTS","package":"jupyterhub","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["5.2.1+ds1-4"]}],"products":[{"vendor":"jupyter","product":"jupyterhub"},{"vendor":"jupyterhub","product":"jupyterhub"}],"references":[{"url":"https://github.com/jupyterhub/jupyterhub/security/advisories/GHSA-9x4q-3gxw-849f","tags":["x_refsource_CONFIRM","Third Party Advisory","advisory","web","report"]},{"url":"https://github.com/jupyterhub/jupyterhub/commit/99e2720b0fc626cbeeca3c6337f917fdacfaa428","tags":["x_refsource_MISC","Patch","fix","web","report"]},{"url":"https://github.com/jupyterhub/jupyterhub/commit/ff2db557a85b6980f90c3158634bf924063ab8ba","tags":["x_refsource_MISC","Patch","fix","web","report"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2024-41942","tags":["web","advisory"]},{"url":"https://github.com/pypa/advisory-database/tree/main/vulns/jupyterhub/PYSEC-2024-200.yaml","tags":["web"]},{"url":"https://github.com/advisories/GHSA-9x4q-3gxw-849f"},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2024/41xxx/CVE-2024-41942.json","tags":["advisory"]},{"url":"https://security-tracker.debian.org/tracker/CVE-2024-41942","tags":["advisory"]},{"url":"https://github.com/jupyterhub/jupyterhub","tags":["package"]},{"url":"https://ubuntu.com/security/CVE-2024-41942","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2024-41942","tags":["report"]}],"sources":{"cve":[{"id":"CVE-2024-41942","title":"JupyterHub has a privilege escalation vulnerability with the `admin:users` scope","description":"JupyterHub is software that allows one to create a multi-user server for Jupyter notebooks. Prior to versions 4.1.6 and 5.1.0, if a user is granted the `admin:users` scope, they may escalate their own privileges by making themselves a full admin user. The impact is relatively small in that `admin:users` is already an extremely privileged scope only granted to trusted users.\nIn effect, `admin:users` is equivalent to `admin=True`, which is not intended. Note that the change here only prevents escalation to the built-in JupyterHub admin role that has unrestricted permissions. It does not prevent users with e.g. `groups` permissions from granting themselves or other users permissions via group membership, which is intentional. Versions 4.1.6 and 5.1.0 fix this issue.","status":"published","published":"2024-08-08T14:36:44.498Z","modified":"2024-08-08T15:17:06.179Z","cvss":[{"version":"3.1","score":7.2,"vector":"CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H","level":"high","assessor":"cna"}],"cwes":["CWE-274"],"updated_at":"2026-11-02T14:34:04.00829Z"}],"euvd":[{"id":"EUVD-2024-0080","description":"JupyterHub is software that allows one to create a multi-user server for Jupyter notebooks. Prior to versions 4.1.6 and 5.1.0, if a user is granted the `admin:users` scope, they may escalate their own privileges by making themselves a full admin user. The impact is relatively small in that `admin:users` is already an extremely privileged scope only granted to trusted users.\nIn effect, `admin:users` is equivalent to `admin=True`, which is not intended. Note that the change here only prevents escalation to the built-in JupyterHub admin role that has unrestricted permissions. It does not prevent users with e.g. `groups` permissions from granting themselves or other users permissions via group membership, which is intentional. Versions 4.1.6 and 5.1.0 fix this issue.","status":"published","published":"2024-08-08T14:36:44Z","modified":"2024-08-08T15:17:06Z","cvss":[{"version":"3.1","score":7.2,"vector":"CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H","level":"high"}],"updated_at":"2026-11-03T00:56:21.653692Z"}],"ghsa":[{"id":"GHSA-9x4q-3gxw-849f","title":"JupyterHub has a privilege escalation vulnerability with the `admin:users` scope","description":"### Summary\n\nIf a user is granted the `admin:users` scope, they may escalate their own privileges by making themselves a full admin user.\n\n### Details\n\nThe `admin:users` scope allows a user to edit user records:\n\n\u003e admin:users\n\u003e\n\u003e Read, write, create and delete users and their authentication state, not including their servers or tokens.\n\u003e\n\u003e -- https://jupyterhub.readthedocs.io/en/stable/rbac/scopes.html#available-scopes\n\nHowever, this includes making users admins. Admin users are granted scopes beyond `admin:users` making this a mechanism by which granted scopes may be escalated.\n\n### Impact\n\nThe impact is relatively small in that `admin:users` is already an extremely privileged scope only granted to trusted users.\nIn effect, `admin:users` is equivalent to `admin=True`, which is not intended.\n\nNote that the change here only prevents escalation to the built-in JupyterHub admin role that has unrestricted permissions. It does not prevent users with e.g. `groups` permissions from granting themselves or other users permissions via group membership, which is intentional.","status":"published","published":"2024-08-08T14:37:06Z","modified":"2025-01-21T17:56:42Z","cvss":[{"version":"3.1","score":7.2,"vector":"CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H","level":"high"},{"version":"4.0","score":8.6,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N","level":"high"}],"cwes":["CWE-274"],"updated_at":"2026-11-02T14:38:27.974809Z"}],"nvd":[{"id":"CVE-2024-41942","description":"JupyterHub is software that allows one to create a multi-user server for Jupyter notebooks. Prior to versions 4.1.6 and 5.1.0, if a user is granted the `admin:users` scope, they may escalate their own privileges by making themselves a full admin user. The impact is relatively small in that `admin:users` is already an extremely privileged scope only granted to trusted users.\nIn effect, `admin:users` is equivalent to `admin=True`, which is not intended. Note that the change here only prevents escalation to the built-in JupyterHub admin role that has unrestricted permissions. It does not prevent users with e.g. `groups` permissions from granting themselves or other users permissions via group membership, which is intentional. Versions 4.1.6 and 5.1.0 fix this issue.","status":"published","published":"2024-08-08T15:15:17.527Z","modified":"2026-06-17T07:48:29.953Z","cvss":[{"version":"3.1","score":7.2,"vector":"CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H","level":"high","assessor":"secondary"},{"version":"3.1","score":7.2,"vector":"CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H","level":"high","assessor":"primary"}],"cwes":["CWE-274"],"updated_at":"2026-11-02T14:10:17.832118Z"}],"osv":[{"id":"CVE-2024-41942","title":"JupyterHub has a privilege escalation vulnerability with the `admin:users` scope","description":"JupyterHub is software that allows one to create a multi-user server for Jupyter notebooks. Prior to versions 4.1.6 and 5.1.0, if a user is granted the `admin:users` scope, they may escalate their own privileges by making themselves a full admin user. The impact is relatively small in that `admin:users` is already an extremely privileged scope only granted to trusted users.\nIn effect, `admin:users` is equivalent to `admin=True`, which is not intended. Note that the change here only prevents escalation to the built-in JupyterHub admin role that has unrestricted permissions. It does not prevent users with e.g. `groups` permissions from granting themselves or other users permissions via group membership, which is intentional. Versions 4.1.6 and 5.1.0 fix this issue.","status":"published","published":"2024-08-08T14:36:44.498Z","modified":"2026-10-28T02:31:06.213996166Z","cvss":[{"version":"3.1","score":7.2,"vector":"CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H","level":"high"}],"cwes":["CWE-274"],"updated_at":"2026-11-02T15:44:41.963899Z"},{"id":"DEBIAN-CVE-2024-41942","description":"JupyterHub is software that allows one to create a multi-user server for Jupyter notebooks. Prior to versions 4.1.6 and 5.1.0, if a user is granted the `admin:users` scope, they may escalate their own privileges by making themselves a full admin user. The impact is relatively small in that `admin:users` is already an extremely privileged scope only granted to trusted users. In effect, `admin:users` is equivalent to `admin=True`, which is not intended. Note that the change here only prevents escalation to the built-in JupyterHub admin role that has unrestricted permissions. It does not prevent users with e.g. `groups` permissions from granting themselves or other users permissions via group membership, which is intentional. Versions 4.1.6 and 5.1.0 fix this issue.","status":"published","published":"2024-08-08T15:15:17.527Z","modified":"2026-11-02T12:02:45.095229456Z","cvss":[{"version":"3.1","score":7.2,"vector":"CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H","level":"high"}],"updated_at":"2026-11-02T15:45:43.156294Z"},{"id":"GHSA-9x4q-3gxw-849f","title":"JupyterHub has a privilege escalation vulnerability with the `admin:users` scope","description":"### Summary\n\nIf a user is granted the `admin:users` scope, they may escalate their own privileges by making themselves a full admin user.\n\n### Details\n\nThe `admin:users` scope allows a user to edit user records:\n\n\u003e admin:users\n\u003e\n\u003e Read, write, create and delete users and their authentication state, not including their servers or tokens.\n\u003e\n\u003e -- https://jupyterhub.readthedocs.io/en/stable/rbac/scopes.html#available-scopes\n\nHowever, this includes making users admins. Admin users are granted scopes beyond `admin:users` making this a mechanism by which granted scopes may be escalated.\n\n### Impact\n\nThe impact is relatively small in that `admin:users` is already an extremely privileged scope only granted to trusted users.\nIn effect, `admin:users` is equivalent to `admin=True`, which is not intended.\n\nNote that the change here only prevents escalation to the built-in JupyterHub admin role that has unrestricted permissions. It does not prevent users with e.g. `groups` permissions from granting themselves or other users permissions via group membership, which is intentional.","status":"published","published":"2024-08-08T14:37:06Z","modified":"2026-09-10T03:50:17.487409719Z","cvss":[{"version":"3.1","score":7.2,"vector":"CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H","level":"high"},{"version":"4.0","score":8.6,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N","level":"high"}],"cwes":["CWE-274"],"updated_at":"2026-11-02T15:46:44.225359Z"},{"id":"PYSEC-2024-200","description":"JupyterHub is software that allows one to create a multi-user server for Jupyter notebooks. Prior to versions 4.1.6 and 5.1.0, if a user is granted the `admin:users` scope, they may escalate their own privileges by making themselves a full admin user. The impact is relatively small in that `admin:users` is already an extremely privileged scope only granted to trusted users.\nIn effect, `admin:users` is equivalent to `admin=True`, which is not intended. Note that the change here only prevents escalation to the built-in JupyterHub admin role that has unrestricted permissions. It does not prevent users with e.g. `groups` permissions from granting themselves or other users permissions via group membership, which is intentional. Versions 4.1.6 and 5.1.0 fix this issue.","status":"published","published":"2024-08-08T15:15:17Z","modified":"2025-01-19T16:57:10.916115Z","cvss":[{"version":"3.1","score":7.2,"vector":"CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H","level":"high"}],"updated_at":"2026-11-02T15:52:54.242332Z"},{"id":"UBUNTU-CVE-2024-41942","description":"JupyterHub is software that allows one to create a multi-user server for Jupyter notebooks. Prior to versions 4.1.6 and 5.1.0, if a user is granted the `admin:users` scope, they may escalate their own privileges by making themselves a full admin user. The impact is relatively small in that `admin:users` is already an extremely privileged scope only granted to trusted users. In effect, `admin:users` is equivalent to `admin=True`, which is not intended. Note that the change here only prevents escalation to the built-in JupyterHub admin role that has unrestricted permissions. It does not prevent users with e.g. `groups` permissions from granting themselves or other users permissions via group membership, which is intentional. Versions 4.1.6 and 5.1.0 fix this issue.","status":"published","published":"2024-08-08T15:15:00Z","modified":"2026-10-17T12:56:38.720593605Z","cvss":[{"version":"3.1","score":7.2,"vector":"CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H","level":"high"},{"version":"3.1","score":7.2,"vector":"CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H","level":"high"}],"updated_at":"2026-11-02T16:54:58.679387Z"},{"id":"BIT-jupyterhub-2024-41942","title":"JupyterHub has a privilege escalation vulnerability with the `admin:users` scope","description":"JupyterHub is software that allows one to create a multi-user server for Jupyter notebooks. Prior to versions 4.1.6 and 5.1.0, if a user is granted the `admin:users` scope, they may escalate their own privileges by making themselves a full admin user. The impact is relatively small in that `admin:users` is already an extremely privileged scope only granted to trusted users.\nIn effect, `admin:users` is equivalent to `admin=True`, which is not intended. Note that the change here only prevents escalation to the built-in JupyterHub admin role that has unrestricted permissions. It does not prevent users with e.g. `groups` permissions from granting themselves or other users permissions via group membership, which is intentional. Versions 4.1.6 and 5.1.0 fix this issue.","status":"published","published":"2024-08-10T07:22:10.997Z","modified":"2026-09-08T08:48:23.75923361Z","updated_at":"2026-11-02T15:28:31.782692Z"}]}}
