CVE-2025-23205
Python vulnerability analysis and mitigation

Overview

nbgrader, a system for assigning and grading notebooks, disclosed a security vulnerability (CVE-2025-23205) on January 17, 2025. The vulnerability allows any JupyterHub user to extract formgrader content by sending malicious links to users with access to formgrader when using the default JupyterHub configuration with enable_subdomains = False. The issue affects version 0.9.4 and has been patched in version 0.9.5 (GitHub Advisory).

Technical details

The vulnerability stems from enabling frame-ancestors: 'self' in the Content Security Policy (CSP) header. This configuration allows a malicious user (Alice) to craft a page embedding formgrader in an IFrame. When another user (Bob) with formgrader access visits that page, their credentials are sent and the formgrader page is loaded. Since Alice's page is on the same Origin as the formgrader iframe, JavaScript on Alice's page gains full access to the contents of the page served by formgrader using Bob's credentials. The vulnerability has been assigned a CVSS v4.0 Base Score of 6.9 (Medium) with vector: CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N (NVD).

Impact

The vulnerability allows unauthorized access to formgrader content, potentially exposing sensitive grading information and compromising the integrity of the grading system. A malicious user can exploit this vulnerability to access and potentially manipulate grading data using another user's credentials (GitHub Advisory).

Mitigation and workarounds

Users are advised to upgrade to nbgrader version 0.9.5 which patches this vulnerability. For those unable to upgrade immediately, two workarounds are available: 1) Disable frame-ancestors: self in the Content Security Policy, or 2) Enable per-user and per-service subdomains with JupyterHub.enable_subdomains = True. When subdomains are enabled, even if iframe embedding is allowed, the host page does not have access to the contents of the frame (JupyterHub Docs).

Additional resources


SourceThis report was generated using AI

Related Python vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2025-66423HIGH7.1
  • PythonPython
  • tryton-server
NoYesNov 30, 2025
CVE-2025-66454MEDIUM6.5
  • PythonPython
  • arcade-mcp-server
NoYesDec 02, 2025
CVE-2025-66424MEDIUM6.5
  • PythonPython
  • trytond
NoYesNov 30, 2025
CVE-2025-66422MEDIUM4.3
  • PythonPython
  • tryton-server
NoYesNov 30, 2025
CVE-2025-65858LOW3.5
  • PythonPython
  • calibreweb
NoNoDec 02, 2025

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management