Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Jupyter Security

Status: In Progress · Proposal

August 2026

Summary of Work Completed

11 reports were triaged including 3 by email, and fixes were written or reviewed for four of the accepted ones.

22 new advisories were opened across the Jupyter orgs in July + 8 emails received at security@jupyter.org.

Jupyterlab desktop got its first release in two years to address a security issue that got published in a blog article.

Ten advisories were published this month, most of them in jupyterlab.

Deliverables/Milestones

Reports accepted and turned into advisories:

Reports triaged and closed:

Published :

Supply chain / tooling

Statistics for July

Advisories in triage

Accepted advisories waiting for a fix

Published advisories

Definitions

Challenges or Risks

Incoming volume is still the main risk: 22 new advisories opened this month. A large share of the reports still looks AI-generated and low signal.

The draft backlog is still very large.

Budget Update

Next Steps

Appendix

Script used for statistics

using https://github.com/Yann-P/github-security-overview @ 111a70467f8076740629a8c92fbafa233a9640df

JUPYTER_ORGS=(binder-examples binderhub-ci-repos ipython jupyter jupyter-attic jupyter-book jupyter-governance jupyter-incubator jupyter-resources jupyter-server jupyter-standard jupyter-standards jupyter-widgets jupyter-xeus jupytercon jupyterhealth jupyterhub jupyterlab jupyterlite pickleshare voila-dashboards voila-gallery)
FROM_DATE=2026-07-01
TO_DATE=2026-08-01

security-overview "${JUPYTER_ORGS[@]}" --state triage | wc -l
security-overview "${JUPYTER_ORGS[@]}" --state triage | datamash median 1
security-overview "${JUPYTER_ORGS[@]}" --state triage --opened-from $FROM_DATE --opened-to $TO_DATE | wc -l
# All states, to measure incoming volume
security-overview "${JUPYTER_ORGS[@]}" --opened-from $FROM_DATE --opened-to $TO_DATE | wc -l

security-overview "${JUPYTER_ORGS[@]}" --state draft | wc -l
security-overview "${JUPYTER_ORGS[@]}" --state draft | datamash median 1
# Open for more than 90 days
security-overview "${JUPYTER_ORGS[@]}" --state draft --opened-to $(date -v-90d +%Y-%m-%d) | wc -l

security-overview "${JUPYTER_ORGS[@]}" --state published | wc -l
security-overview "${JUPYTER_ORGS[@]}" --state published | datamash median 3 # 3 is the column for time to publication

security-overview "${JUPYTER_ORGS[@]}" --state published --published-from $FROM_DATE --published-to $TO_DATE | wc -l
security-overview "${JUPYTER_ORGS[@]}" --state published --published-from $FROM_DATE --published-to $TO_DATE | datamash median 3

July 2026

Summary of Work Completed

This month was focused on supply chain and measurements included below, and maintenance about the email addresses used to reach us and PGP keys. A few fixes. Issues in triage are stacking up and I need to prioritize this for the beginning of July.

Deliverables/Milestones

Statistics for June

Advisories in triage

Accepted advisories waiting for a fix

Published advisories

Definitions

Challenges or Risks

Lots of incoming reports, lots of them seem to be AI.

Budget Update

Next Steps

Publish key indicators on jupyter.org for transparency

Catch up on triage (lots of reports lately).

Appendix

Script used for statistics

using https://github.com/Yann-P/github-security-overview @ 5bb654593f6bbbd700a108b59c6fef5873edfea3

JUPYTER_ORGS=(binder-examples binderhub-ci-repos ipython jupyter jupyter-attic jupyter-book jupyter-governance jupyter-incubator jupyter-resources jupyter-server jupyter-standard jupyter-standards jupyter-widgets jupyter-xeus jupytercon jupyterhealth jupyterhub jupyterlab jupyterlite pickleshare voila-dashboards voila-gallery)
FROM_DATE=2026-06-01
TO_DATE=2026-07-01

security-overview "${JUPYTER_ORGS[@]}" --state triage | wc -l
security-overview "${JUPYTER_ORGS[@]}" --state triage | datamash median 1

security-overview "${JUPYTER_ORGS[@]}" --state draft | wc -l
security-overview "${JUPYTER_ORGS[@]}" --state draft | datamash median 1
# Open for more than 90 days
security-overview "${JUPYTER_ORGS[@]}" --state draft --opened-to $(date -v-90d +%Y-%m-%d) | wc -l

security-overview "${JUPYTER_ORGS[@]}" --state published | wc -l
security-overview "${JUPYTER_ORGS[@]}" --state published | datamash median 3 # 3 is the column for time to publication

security-overview "${JUPYTER_ORGS[@]}" --state published --published-from $FROM_DATE --published-to $TO_DATE | wc -l
security-overview "${JUPYTER_ORGS[@]}" --state published --published-from $FROM_DATE --published-to $TO_DATE | datamash median 3

June 2026

Context: contract with Yann-P started on 2026-06-01 (2 days ago) for the next 6 months at 8h/week as part of jupyter-governance/funding-proposals#28.

Summary of Work Completed

As volunteer work before the contract started

After start of contract

Deliverables/Milestones

As volunteer work before the contract started

Published advisories

And a few others that are not yet published.

After start of contract

Supply chain inventory scripts in jupyter/cve

Challenges or Risks

Budget Update

Next Steps