Miggo Logo

CVE-2024-28179:
Jupyter Server Proxy's Websocket Proxying does not require authentication

9.1

CVSS Score
3.1

Basic Information

EPSS Score
0.49213%
Published
3/20/2024
Updated
2/21/2025
KEV Status
No
Technology
TechnologyPython

Technical Details

CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:H/A:H
Package NameEcosystemVulnerable VersionsFirst Patched Version
jupyter-server-proxypip>= 4.0.0, < 4.1.14.1.1
jupyter-server-proxypip< 3.2.33.2.3

Vulnerability Intelligence
Miggo AIMiggo AI

Miggo AIRoot Cause Analysis

The vulnerability stemmed from missing authentication enforcement in websocket handling code. The critical functions were ProxyHandler.open and proxy_open, which handled websocket connections. The patch added a prepare() method to enforce authentication for all requests (including websockets) by checking current_user and rejecting unauthenticated websocket upgrade requests. The absence of these checks in the original code allowed unauthenticated access. The commit diff shows removal of @web.authenticated decorators from proxy methods and addition of the prepare() authentication layer, confirming these functions were the vulnerable points.

Vulnerable functions

Only Mi**o us*rs **n s** t*is s**tion

WAF Protection Rules

WAF Rule

## Summ*ry `jupyt*r-s*rv*r-proxy` is us** to *xpos* ports lo**l to * Jupyt*r s*rv*r list*nin* to w** tr***i* to t** Jupyt*r s*rv*r's _*ut**nti**t** us*rs_ *y proxyin* w** r*qu*sts *n* w**so*k*ts. **p*n**nt p**k***s ([p*rti*l list](*ttps://www.w***lo

Reasoning

T** vuln*r**ility st*mm** *rom missin* *ut**nti**tion *n*or**m*nt in w**so*k*t **n*lin* *o**. T** *riti**l *un*tions w*r* Proxy**n*l*r.op*n *n* proxy_op*n, w*i** **n*l** w**so*k*t *onn**tions. T** p*t** ***** * pr*p*r*() m*t*o* to *n*or** *ut**nti**t