Skip to content

Jupyter ecosystem

By sorona.xyz Bug bounty on Sorona jupyter.org

Accepting reports open-source
Top reward
$1,500
Top severity paid
Critical
Assets in scope
14
Public CVEs
60
Last change
No changes yet

At a glance

What to know before you start testing.

Pays from $1,500
for critical bugs.
Partial safe harbor
Some legal protection; read the terms.
Publish after a fix
Coordinate the timing with the company.

Rewards

What Sorona lists as the payout for each severity.

Severity Reward
Critical $1,500+
High $700+
Medium $300+
Low $100 $100 / 1 month Claude Max
Safe harbor
Partial Sorona will not pursue legal action against you for good-faith research submitted to us in line with this policy. We cannot speak for the upstream project, its vendor, or any third party, and we do not grant authorization on their behalf.

Summarised with AI from the program policy on Sorona, read 12 Nov 2026, and checked word for word against it. Read the original

Scope

14 assets you may test, 5 excluded.

Web 1

  • https://jupyter.org

Products and areas 13

  • BinderHub and repo2docker, which build and run an image from a repository a stranger supplied
  • JupyterHub in full: the hub API, the proxy, the OAuth flow between hub and single-user servers, and the shipped authenticators and spawners
  • JupyterLab in full: the extension system, the plugin loading path, the settings and workspace stores, and every renderer that displays output a kernel produced
  • jupyter-server end to end: the REST API, the token and cookie authentication layer, the identity model, the XSRF protections and the handlers behind them
  • nbconvert in full: every exporter, the template engine, the preprocessors, and the handling of notebook content while converting it
  • nbformat, covering notebook reading, validation, signing and the trust database that decides whether stored output is rendered
  • Output rendering and mimetype handling wherever it happens, including HTML, JavaScript, SVG, LaTeX and Markdown output, and the sanitiser that is supposed to be in front of it
  • The classic notebook application and the nbclassic compatibility layer
  • The contents manager and the file API, covering every path where a request names a file on the server's disk
  • The kernel protocol and the kernel provisioner path, including message signing, connection files and the ZMQ channels between a front end and a kernel
  • The published policy asks for any vulnerability in a Jupyter project through a GitHub Security Advisory in the relevant repository or by email, and draws no boundary narrower than the ecosystem itself. Everything below sits inside that
  • The terminal and console surfaces, and the file upload and download paths in every one of the above
  • Voila, which serves a notebook as an application to users who never see the notebook itself
Out of scope (5)
  • A server an operator deliberately started with authentication disabled or bound to a public interface without a token
  • A user executing code in their own kernel, which is the entire purpose of a notebook server. The finding has to cross a user, tenant or privilege boundary
  • SageMaker Studio, Vertex AI Workbench, Databricks notebooks, Google Colab and other vendor products built on the Jupyter stack: those vendors' own code and configuration belong to them
  • Third-party extensions, kernels, authenticators and spawners that the project does not maintain
  • Upstream Tornado, IPython or Python dependency bugs, unless a Jupyter project's own use of them is what makes the bug reachable

Rules

What the policy asks of you, and the bug types it won't reward, quoted from Sorona's policy.

While testing

  • Submit through sorona.xyz.
  • The policy's preferred channel is a GitHub Security Advisory opened in the repository that holds the bug
  • Pick the right repository before you file.
  • The repository is jupyter-server/jupyter_server with an underscore; the hyphenated name does not resolve
  • Say whether the finding needs a multi-user deployment.
  • State which authentication and authorisation configuration the target ran

Not accepted

  • A user executing code in their own kernel, which is the entire purpose of a notebook server.
  • A server an operator deliberately started with authentication disabled or bound to a public interface without a token
  • Upstream Tornado, IPython or Python dependency bugs, unless a Jupyter project's own use of them is what makes the bug reachable

Summarised with AI from the program policy on Sorona, read 12 Nov 2026, and checked word for word against it. Read the original

Changes

Tracked since 11 Nov 2026. Last checked 1 hour ago.

No changes yet. When the rewards or scope move, you will see it here and in the RSS feed.

Public CVEs

Published vulnerabilities in this vendor's products, from the NVD.

Search NVD
CVESeverityPublished
CVE-2026-44182 Critical 10.0 16 Jul 2026
CVE-2026-44181 Critical 10.0 16 Jul 2026
CVE-2026-44180 Critical 9.8 16 Jul 2026
CVE-2026-54527 Critical 9.3 8 Jul 2026
CVE-2026-54528 High 7.1 8 Jul 2026
CVE-2026-44727 Critical 9.3 22 Jun 2026
CVE-2026-6657 High 8.8 3 Jun 2026
CVE-2026-5422 High 8.1 2 Jun 2026
CVE-2026-40864 Medium 5.4 22 May 2026
CVE-2026-42557 High 8.6 13 May 2026
CVE-2026-42266 High 8.8 13 May 2026
CVE-2026-40110 High 7.6 5 May 2026
CVE-2026-40934 High 7.6 5 May 2026
CVE-2026-35397 High 7.6 5 May 2026
CVE-2025-61669 Medium 6.3 5 May 2026
CVE-2026-39377 Medium 6.5 21 Apr 2026
CVE-2026-39378 Medium 6.5 21 Apr 2026
CVE-2026-34052 Medium 5.9 3 Apr 2026
CVE-2026-33709 Medium 5.1 3 Apr 2026
CVE-2026-33175 High 8.8 3 Apr 2026
CVE-2025-53000 High 8.5 17 Dec 2025
CVE-2025-59842 Low 2.1 26 Sep 2025
CVE-2025-30167 High 7.3 3 Jun 2025
CVE-2023-25574 Critical 10.0 25 Feb 2025
CVE-2024-43805 High 7.6 28 Aug 2024
CVE-2024-41942 High 7.2 8 Aug 2024
CVE-2024-39700 Critical 9.9 16 Jul 2024
CVE-2024-35225 Critical 9.6 11 Jun 2024
CVE-2024-35178 High 7.5 6 Jun 2024
CVE-2024-28233 High 8.1 27 Mar 2024
CVE-2024-29033 High 7.5 20 Mar 2024
CVE-2024-28179 Critical 9.0 20 Mar 2024
CVE-2024-22420 Medium 6.5 19 Jan 2024
CVE-2024-22421 High 7.6 19 Jan 2024
CVE-2024-22415 High 7.3 18 Jan 2024
CVE-2023-48311 High 8.0 8 Dec 2023
CVE-2023-49080 Low 3.5 4 Dec 2023
CVE-2023-39968 Medium 4.3 28 Aug 2023
CVE-2023-40170 Medium 4.6 28 Aug 2023
CVE-2022-39286 High 8.8 26 Oct 2022
CVE-2021-32862 High 7.5 18 Aug 2022
CVE-2022-29241 High 7.1 14 Jun 2022
CVE-2022-29238 Medium 4.3 14 Jun 2022
CVE-2022-31027 Medium 4.2 9 Jun 2022
CVE-2022-24758 High 7.5 31 Mar 2022
CVE-2022-24757 High 7.5 23 Mar 2022
CVE-2022-21697 Medium 6.3 25 Jan 2022
CVE-2021-41247 Low 3.5 4 Nov 2021
CVE-2021-41134 High 8.7 3 Nov 2021
CVE-2021-39159 Critical 9.6 25 Aug 2021
CVE-2021-32797 High 7.4 9 Aug 2021
CVE-2021-32798 Critical 10.0 9 Aug 2021
CVE-2020-36191 Medium 4.5 13 Jan 2021
CVE-2020-26275 Medium 6.1 21 Dec 2020
CVE-2020-26250 Medium 6.3 1 Dec 2020
CVE-2020-26232 Medium 4.1 24 Nov 2020
CVE-2020-26215 Medium 4.4 18 Nov 2020
CVE-2018-21030 Medium 5.3 31 Oct 2019
CVE-2019-10856 Medium 6.1 4 Apr 2019
CVE-2019-10255 Medium 6.1 28 Mar 2019

Original policy

Copied from sorona.xyz on 12 Nov 2026. The summaries on this page are made from it; the live page may have changed since.

Skip to content What this pays This project runs no bounty of its own. sorona.xyz pays you directly on qualified, reproduced findings. Severity │ sorona.xyz pays Critical │ $1,500+ High │ $700+ Medium │ $300+ Low │ $100 / 1 month Claude Max Submit a vulnerability CVE history 24 Last 12 months XSS 35 % Improper access control 25 % Privilege escalation 20 % Info disclosure 20 % Latest advisories Loading the feed Overview Project Jupyter is the notebook stack: JupyterLab and the classic notebook at the front, jupyter-server underneath them, nbconvert turning documents into HTML, and JupyterHub running the whole thing multi-tenant. JupyterHub is where the value concentrates, since its unit of deployment is an entire university, national lab or SageMaker Studio tenancy, and every user on it executes arbitrary code as a matter of design. Twenty-four advisories landed across the ecosystem in the last twelve months, one of them critical in jupyter-server. Jupyter's security page states plainly that it runs no bug bounty programs and does not reward vulnerability discovery. sorona.xyz pays you directly on qualified, reproduced findings. In scope The published policy asks for any vulnerability in a Jupyter project through a GitHub Security Advisory in the relevant repository or by email, and draws no boundary narrower than the ecosystem itself. Everything below sits inside that jupyter-server end to end: the REST API, the token and cookie authentication layer, the identity model, the XSRF protections and the handlers behind them The contents manager and the file API, covering every path where a request names a file on the server's disk The kernel protocol and the kernel provisioner path, including message signing, connection files and the ZMQ channels between a front end and a kernel JupyterLab in full: the extension system, the plugin loading path, the settings and workspace stores, and every renderer that displays output a kernel produced Output rendering and mimetype handling wherever it happens, including HTML, JavaScript, SVG, LaTeX and Markdown output, and the sanitiser that is supposed to be in front of it The classic notebook application and the nbclassic compatibility layer nbconvert in full: every exporter, the template engine, the preprocessors, and the handling of notebook content while converting it nbformat, covering notebook reading, validation, signing and the trust database that decides whether stored output is rendered JupyterHub in full: the hub API, the proxy, the OAuth flow between hub and single-user servers, and the shipped authenticators and spawners BinderHub and repo2docker, which build and run an image from a repository a stranger supplied Voila, which serves a notebook as an application to users who never see the notebook itself The terminal and console surfaces, and the file upload and download paths in every one of the above Out of scope SageMaker Studio, Vertex AI Workbench, Databricks notebooks, Google Colab and other vendor products built on the Jupyter stack: those vendors' own code and configuration belong to them Third-party extensions, kernels, authenticators and spawners that the project does not maintain A user executing code in their own kernel, which is the entire purpose of a notebook server. The finding has to cross a user, tenant or privilege boundary A server an operator deliberately started with authentication disabled or bound to a public interface without a token Upstream Tornado, IPython or Python dependency bugs, unless a Jupyter project's own use of them is what makes the bug reachable Most-valued findings Anything that crosses a user boundary on a JupyterHub deployment: reading another user's notebooks, tokens or kernel, or reaching the hub's own privileges from a single-user server. A hub is usually an entire institution Privilege escalation through a spawner, where an authenticated user influences how their server process is launched and gains more than their own account Cross-site scripting in rendered notebook output that chains into code execution, since a Jupyter XSS runs next to a kernel that already executes arbitrary code. This is the densest class in the recent record, with ten advisories on JupyterLab alone Authentication and token handling defects in jupyter-server, the component that carried the ecosystem's one critical advisory in the window Notebook trust and signature bypass in nbformat, where stored output is rendered as trusted without the signature that was supposed to authorise it Template and HTML injection in nbconvert, which converts documents from untrusted sources on servers that often run it unattended Path traversal or arbitrary read and write through the contents manager and the file API, on a server that runs as a real user with a real home directory Anything in BinderHub or repo2docker that escapes the build or the runtime container, given that both accept a repository from an anonymous stranger by design Program rules Submit through sorona.xyz. This project runs no bounty of its own; we validate, coordinate disclosure with the maintainers, and pay you directly. The policy's preferred channel is a GitHub Security Advisory opened in the repository that holds the bug, and private vulnerability reporting is enabled on notebook, jupyterlab, jupyterhub, binderhub, nbconvert, nbformat and voila [email protected] is the documented email route. [email protected] still works, and the policy warns it may be sunset, so use the jupyter.org address Pick the right repository before you file. A rendering bug can live in JupyterLab, in nbconvert or in nbformat, and filing it in the wrong place costs days The repository is jupyter-server/jupyter_server with an underscore; the hyphenated name does not resolve Say whether the finding needs a multi-user deployment. A bug that only matters on a shared hub is scored very differently from one that hits a single-user install State which authentication and authorisation configuration the target ran, since JupyterHub's authenticators and spawners are pluggable and the boundary moves with them The project states it runs no bug bounty programs and does not reward vulnerability discovery. There is no payment to negotiate and no reward terms to accept Disclosure Coordinated privately through the GitHub advisory workflow in the affected repository, then published as a GitHub Security Advisory alongside a patched release, with the more serious ones announced on the Jupyter blog and the security mailing list. Twenty-four advisories in twelve months across five repositories means this pipeline actually moves. Expect the embargo to run to the next release of the affected package rather than to a fixed day count, and expect a fix in one repository to require coordinated releases in the others that depend on it. Safe harbor Sorona will not pursue legal action against you for good-faith research submitted to us in line with this policy. We cannot speak for the upstream project, its vendor, or any third party, and we do not grant authorization on their behalf. You are responsible for understanding and following the laws that apply to you, wherever you are, and for staying within any scope the project has defined. Submit a vulnerability