Every CVESearch/Get API key

CVE-2021-41134

Stored XSS in Jupyter nbdime

8.7 HighFix available

nbdime provides tools for diffing and merging of Jupyter Notebooks. In affected versions a stored cross-site scripting (XSS) issue exists within the Jupyter-owned nbdime project. It appears that when reading the file name and path from disk, the extension does not sanitize the string it constructs before returning it to be displayed. The diffNotebookCheckpoint function within nbdime causes this issue. When attempting to display the name of the local notebook (diffNotebookCheckpoint), nbdime appears to simply append .ipynb to the name of the input file. The NbdimeWidget is then created, and the base string is passed through to the request API function. From there, the frontend simply renders the HTML tag and anything along with it. Users are advised to patch to the most recent version of the affected product.

Attack profile

How easy it is to exploit

Attack vector
Network
Complexity
Low
Privileges needed
Low
User interaction
Required

What an attacker can affect

Confidentiality
High
Integrity
High
Availability
None

Exploit likelihood

0.70%Up 0.1 points since Nov 4, 2021
90%50%10%1%

What each source reports

CVE List Score used8.7

Stored XSS in Jupyter nbdime

nbdime provides tools for diffing and merging of Jupyter Notebooks. In affected versions a stored cross-site scripting (XSS) issue exists within the Jupyter-owned nbdime project. It appears that when reading the file name and path from disk, the extension does not sanitize the string it constructs before returning it to be displayed. The diffNotebookCheckpoint function within nbdime causes this issue. When attempting to display the name of the local notebook (diffNotebookCheckpoint), nbdime appears to simply append .ipynb to the name of the input file. The NbdimeWidget is then created, and the base string is passed through to the request API function. From there, the frontend simply renders the HTML tag and anything along with it. Users are advised to patch to the most recent version of the affected product.

Record
CVE-2021-41134
CVSS 3.1
8.7 HighCVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N
Weakness
CWE-79
Updated
2026-11-02
EUVDEUVD-2021-01408.7

nbdime provides tools for diffing and merging of Jupyter Notebooks. In affected versions a stored cross-site scripting (XSS) issue exists within the Jupyter-owned nbdime project. It appears that when reading the file name and path from disk, the extension does not sanitize the string it constructs before returning it to be displayed. The diffNotebookCheckpoint function within nbdime causes this issue. When attempting to display the name of the local notebook (diffNotebookCheckpoint), nbdime appears to simply append .ipynb to the name of the input file. The NbdimeWidget is then created, and the base string is passed through to the request API function. From there, the frontend simply renders the HTML tag and anything along with it. Users are advised to patch to the most recent version of the affected product.

Record
EUVD-2021-0140
CVSS 3.1
8.7 HighCVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N
Updated
2026-11-03
GitHub AdvisoriesGHSA-p6rw-44q7-3fw46.3

Stored XSS in Jupyter nbdime

Impact

Improper handling of user controlled input caused a stored cross-site scripting (XSS) vulnerability. All previous versions of nbdime are affected.

Patches

Security patches will be released for each of the major versions of the nbdime packages since version 1.x of the nbdime python package.

Python

  • nbdime 1.x: Patched in v. 1.1.1
  • nbdime 2.x: Patched in v. 2.1.1
  • nbdime 3.x: Patched in v. 3.1.1

npm

  • nbdime 6.x version: Patched in 6.1.2
  • nbdime 5.x version: Patched in 5.0.2
  • nbdime-jupyterlab 1.x version: Patched in 1.0.1
  • nbdime-jupyterlab 2.x version: Patched in 2.1.1

For more information

If you have any questions or comments about this advisory email us at security@ipython.org.

Record
GHSA-p6rw-44q7-3fw4
CVSS 4.0
6.3 MediumCVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:N/VI:N/VA:N/SC:H/SI:H/SA:N
CVSS 3.1
8.7 HighCVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N
Weakness
CWE-79
Updated
2026-11-02
NVD8.7

nbdime provides tools for diffing and merging of Jupyter Notebooks. In affected versions a stored cross-site scripting (XSS) issue exists within the Jupyter-owned nbdime project. It appears that when reading the file name and path from disk, the extension does not sanitize the string it constructs before returning it to be displayed. The diffNotebookCheckpoint function within nbdime causes this issue. When attempting to display the name of the local notebook (diffNotebookCheckpoint), nbdime appears to simply append .ipynb to the name of the input file. The NbdimeWidget is then created, and the base string is passed through to the request API function. From there, the frontend simply renders the HTML tag and anything along with it. Users are advised to patch to the most recent version of the affected product.

Record
CVE-2021-41134
CVSS 3.1
8.7 HighCVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N
CVSS 3.1
5.4 MediumCVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
CVSS 2.0
3.5 LowAV:N/AC:M/Au:S/C:N/I:P/A:N
Weakness
CWE-79
Updated
2026-11-02
OSV5.4

nbdime provides tools for diffing and merging of Jupyter Notebooks. In affected versions a stored cross-site scripting (XSS) issue exists within the Jupyter-owned nbdime project. It appears that when reading the file name and path from disk, the extension does not sanitize the string it constructs before returning it to be displayed. The diffNotebookCheckpoint function within nbdime causes this issue. When attempting to display the name of the local notebook (diffNotebookCheckpoint), nbdime appears to simply append .ipynb to the name of the input file. The NbdimeWidget is then created, and the base string is passed through to the request API function. From there, the frontend simply renders the HTML tag and anything along with it. Users are advised to patch to the most recent version of the affected product.

Record
CVE-2021-41134
CVSS 3.1
5.4 MediumCVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
Updated
2026-11-02
OSVGHSA-p6rw-44q7-3fw46.3

Stored XSS in Jupyter nbdime

Impact

Improper handling of user controlled input caused a stored cross-site scripting (XSS) vulnerability. All previous versions of nbdime are affected.

Patches

Security patches will be released for each of the major versions of the nbdime packages since version 1.x of the nbdime python package.

Python

  • nbdime 1.x: Patched in v. 1.1.1
  • nbdime 2.x: Patched in v. 2.1.1
  • nbdime 3.x: Patched in v. 3.1.1

npm

  • nbdime 6.x version: Patched in 6.1.2
  • nbdime 5.x version: Patched in 5.0.2
  • nbdime-jupyterlab 1.x version: Patched in 1.0.1
  • nbdime-jupyterlab 2.x version: Patched in 2.1.1

For more information

If you have any questions or comments about this advisory email us at security@ipython.org.

Record
GHSA-p6rw-44q7-3fw4
CVSS 4.0
6.3 MediumCVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:N/VI:N/VA:N/SC:H/SI:H/SA:N
CVSS 3.1
8.7 HighCVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N
Weakness
CWE-79
Updated
2026-11-02
OSVopenSUSE-SU-2024:11630-1No score

jupyter-nbdime-6.1.2-8.1 on GA media

These are all security issues fixed in the jupyter-nbdime-6.1.2-8.1 package on the GA media of openSUSE Tumbleweed.

Record
openSUSE-SU-2024:11630-1
Updated
2026-11-02
OSVPYSEC-2021-428No score

nbdime provides tools for diffing and merging of Jupyter Notebooks. In affected versions a stored cross-site scripting (XSS) issue exists within the Jupyter-owned nbdime project. It appears that when reading the file name and path from disk, the extension does not sanitize the string it constructs before returning it to be displayed. The diffNotebookCheckpoint function within nbdime causes this issue. When attempting to display the name of the local notebook (diffNotebookCheckpoint), nbdime appears to simply append .ipynb to the name of the input file. The NbdimeWidget is then created, and the base string is passed through to the request API function. From there, the frontend simply renders the HTML tag and anything along with it. Users are advised to patch to the most recent version of the affected product.

Record
PYSEC-2021-428
Updated
2026-11-02

Affected products

Affected packages

Affected packages
PackageAffectedFixed
nbdime
PyPI
before 1.1.1
1.1.1
nbdime
PyPI
2.0.0 up to 2.1.1
2.1.1
nbdime
PyPI
3.0.0 up to 3.1.1
3.1.1
nbdime
npm
before 5.0.2
5.0.2
nbdime
npm
6.0.0 up to 6.1.2
6.1.2
nbdime-jupyterlab
npm
before 1.0.1
1.0.1
nbdime-jupyterlab
npm
2.0.0 up to 2.1.1
2.1.1
nbdime
PyPI
before 1.1.1, plus listed versions
0.1.00.1.0.dev0.1.0b10.1.10.1.2
Show 15 moreShow less
0.2.00.3.00.4.00.4.11.0.01.0.0rc01.0.0rc11.0.11.0.21.0.31.0.41.0.51.0.61.0.71.1.0
1.1.1
nbdime
PyPI
2.0.0 up to 2.1.1, plus listed versions
2.1.0
2.1.1
nbdime
PyPI
3.0.0 up to 3.1.1, plus listed versions
3.1.0
3.1.1
nbdime
PyPI
before 1.1.1, 2.0.0 up to 2.1.1, 3.0.0 up to 3.1.1, plus listed versions
0.1.00.1.0.dev0.1.0b10.1.10.1.2
Show 17 moreShow less
0.2.00.3.00.4.00.4.11.0.01.0.0rc01.0.0rc11.0.11.0.21.0.31.0.41.0.51.0.61.0.71.1.02.1.03.1.0
1.1.12.1.13.1.1

History

History
RecordedChangedSources
aliasesEUVD
first indexedCVE List, GitHub Advisories, NVD, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2021-41134 is a high vulnerability (CVSS 8.7) in Jupyter Nbdime, published November 3, 2021. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.70%, the 53rd percentile. Fixed in nbdime 1.1.1.

References

MoveEnter Open