Skip to content

Update dependency jupyter-server to v2.18.0 [SECURITY]#265

Open
renovate[bot] wants to merge 1 commit intomainfrom
renovate/pypi-jupyter-server-vulnerability
Open

Update dependency jupyter-server to v2.18.0 [SECURITY]#265
renovate[bot] wants to merge 1 commit intomainfrom
renovate/pypi-jupyter-server-vulnerability

Conversation

@renovate
Copy link
Copy Markdown
Contributor

@renovate renovate Bot commented May 6, 2026

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Confidence
jupyter-server ==2.16.0==2.18.0 age confidence

Jupyter Server has an open redirection vulnerability in next query parameter

CVE-2025-61669 / GHSA-qh7q-6qm3-653w

More information

Details

Summary

The ?next=... URL query parameter has an open redirection vulnerability. In jupyter_server<=2.17.0, this URL query parameter allows redirection to arbitrary external domains, which can be exploited to facilitate phishing attacks on server users.

Details

The vulnerability is caused by insufficient validation in the LoginFormHandler._redirect_safe() method.

This vulnerability was originally reported by Noriaki Iwasaki. All discovery credit goes to them.

PoC
  1. Navigate to http://localhost:8888/login?next=///google.com
  2. Observe that the user is redirected to google.com despite it being an external domain.

The external domain passed in the ?next parameter may be replaced with a malicious lookalike to facilitate phishing attacks. Jupyter Server deployments served on a public domain are especially vulnerable, as prod.company.com may be redirected to a look-alike URL such as prod.company.dev.

Impact

This vulnerability affects all users, especially enterprise users who work with sensitive/confidential data.

Patches

Jupyter Server 2.18+

Workaround

None.

Severity

  • CVSS Score: 6.0 / 10 (Medium)
  • Vector String: CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:H/SI:N/SA:N

References

This data is provided by the GitHub Advisory Database (CC-BY 4.0).


Jupyter Server: Path Traversal via incorrect startswith() root directory check allows access to sibling directories

CVE-2026-35397 / GHSA-5789-5fc7-67v3

More information

Details

Summary

Jupyter Server <=2.17.0 can access directories sibling to the root directory, if it starts with the root dir's name.

PoC

Minimal:

.
├── test/              <- root directory.
│   └── test.txt
└── testtest/
    └── secret.txt     <- file to exfiltrate that we should not be able to access via API
HOST="http://localhost:8888"
TOKEN=""
SIBLING="testtest"
TARGET="secret.txt"

curl -s -X POST \
  "$HOST/api/contents/%2e%2e/$SIBLING/$TARGET/checkpoints" \
  -H "Authorization: token $TOKEN"

Full PoC by @​stef41: https://gist.github.com/Yann-P/66d4982a965dee8fcb8dd89db29e7006

Impact

It is possible for an authenticated user to access content outside the server's root_dir in siblings directories sharing the same prefix as the root_dir. The attacker can escalate access, reading, writing, and deleting from sibling directories.

This can have a tangible impact for deployments using predictable naming scheme with multi-tenant server, for example user1, user2, user3, ..., user10 etc, as user1 could access and modify files of all user10 - user19 and higher.

In a hypothetical system where users can choose a name of their folder, an attacker could choose a single-letter username to gain access to a significant number of sibling directories.

Workarounds

Use folder names that do not overlap.

Acknowledgments

Thank you to @​stef41 for providing a useful PoC.

Severity

  • CVSS Score: 7.1 / 10 (High)
  • Vector String: CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:L

References

This data is provided by the GitHub Advisory Database (CC-BY 4.0).


Jupyter Server has a CORS Origin Validation Bypass via re.match() in allow_origin_pat (from huntr)

CVE-2026-40110 / GHSA-24qx-w28j-9m6p

More information

Details

Jupyter Server uses re.match() to validate the Origin header against the allow_origin_pat configuration.

Since re.match() only anchors at the start of the string, an attacker who controls a domain like http://trusted.example.com.evil.com/ passes validation against a pattern intended to match only trusted.example.com.

Impact

<=2.17.0

Patches

057869a327c46730afede3eab0ca2d2e3e74acea, 49b34392feaa97735b3b777e3baf8f22f2a14ed8

Workarounds

Wrap your allow_origin_pat value with ^ and $

References

https://github.com/jupyter-server/jupyter_server/pull/603
https://docs.python.org/3/library/re.html#re.fullmatch
https://docs.python.org/3/library/re.html#re.match

Severity

  • CVSS Score: 7.6 / 10 (High)
  • Vector String: CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:L/SC:L/SI:L/SA:L

References

This data is provided by the GitHub Advisory Database (CC-BY 4.0).


Jupyter Server's Authentication Cookies Remain Valid After Password Reset and Server Restart

CVE-2026-40934 / GHSA-5mrq-x3x5-8v8f

More information

Details

Summary

A persistent cookie secret vulnerability allows authenticated users to maintain indefinite access even after password changes.

The cookie secret used to sign authentication cookies is stored in a permanent file (~/.local/share/jupyter/runtime/jupyter_cookie_secret) that is never automatically rotated or cleared, allowing stolen or compromised cookies to remain valid indefinitely regardless of password resets.

PoC
  • Start a Jupyter server with password authentication: jupyter server password, jupyter server
  • Log in with the password and capture the authentication cookie (e.g., just login with a browser).
  • Change the password to revoke access: jupyter server password
  • Restart the server
  • Use the old stolen cookie => remains valid and provides full authenticated access.
Impact
  • All jupyter-server deployments using password authentication where security incidents may occur
  • Multi-user systems where one user's compromised session should be revocable by administrators
  • Shared or public-facing Jupyter servers where credential rotation is a security requirement
  • Any deployment where password changes are expected to revoke existing sessions
Patches

Jupyter Server 2.18+

Workaround
rm ~/.local/share/jupyter/runtime/jupyter_cookie_secret

##### Then restart the server

Severity

  • CVSS Score: 6.8 / 10 (Medium)
  • Vector String: CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:N

References

This data is provided by the GitHub Advisory Database (CC-BY 4.0).


Release Notes

jupyter-server/jupyter_server (jupyter-server)

v2.18.0

Compare Source

(Full Changelog)

API and Breaking Changes
Enhancements made
Bugs fixed
Maintenance and upkeep improvements
Documentation improvements
Other merged PRs
Contributors to this release

The following people contributed discussions, new ideas, code and documentation contributions, and review.
See our definition of contributors.

(GitHub contributors page for this release)

@​3coins (activity) | @​afshin (activity) | @​andrii-i (activity) | @​ark-1 (activity) | @​astitv-sh (activity) | @​aws-jasakshi (activity) | @​blink1073 (activity) | @​bloomsa (activity) | @​bollwyvl (activity) | @​brichet (activity) | @​carlfarrington (activity) | @​Carreau (activity) | @​cjwatson (activity) | @​claude (activity) | @​codecov-commenter (activity) | @​danyeaw (activity) | @​Darshan808 (activity) | @​davidbrochart (activity) | @​dlqqq (activity) | @​dualc (activity) | @​echarles (activity) | @​edrogers (activity) | @​emin63 (activity) | @​epignot (activity) | @​fcollonval (activity) | @​gogasca (activity) | @​hansepac (activity) | @​holzman (activity) | @​IITII (activity) | @​jasongrout (activity) | @​joeyutong (activity) | @​jtpio (activity) | @​kevin-bates (activity) | @​kjayan (activity) | @​krassowski (activity) | @​Krish-876 (activity) | @​ktaletsk (activity) | @​lresende (activity) | @​MaicoTimmerman (activity) | @​manics (activity) | @​markypizz (activity) | @​MaryushSoroka (activity) | @​mgorny (activity) | @​minrk (activity) | @​mwouts (activity) | @​nokados (activity) | @​ojarjur (activity) | @​oliver-sanders (activity) | @​ptch314 (activity) | @​rgbkrk (activity) | @​RRosio ([activity](https://redirect.github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server+invo

Note

PR body was truncated to here.


Configuration

📅 Schedule: (in timezone UTC)

  • Branch creation
    • ""
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@cla-bot
Copy link
Copy Markdown

cla-bot Bot commented May 6, 2026

We require contributors to sign our Contributor License Agreement, and we don't have @renovate[bot] on file. You can sign our CLA at https://e2b.dev/docs/cla . Once you've signed, post a comment here that says '@cla-bot check'

Copy link
Copy Markdown

@claude claude Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Code review skipped — your organization has reached its monthly code review spending cap.

An organization admin can view or raise the cap at claude.ai/admin-settings/claude-code. The cap resets at the start of the next billing period.

Once the cap resets or is raised, reopen this pull request to trigger a review.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants