CVE-2018-19351 Jupyter Notebook XSS via untrusted notebooks

Medium 6.1 Published Updated

Attackers can execute JavaScript with server API access via untrusted notebooks due to missing Content Security Policy headers in nbconvert handlers.

Exploited in the wild
Not known
Login needed
Not needed
Attackable
Over the internet
Victim action needed
A user has to click or open something
Fix
Available

What is CVE-2018-19351?

CVE-2018-19351 is a medium-severity cross-site scripting vulnerability in n/a, published on 18 Nov 2018. An attacker can exploit it over the internet without logging in, and only if a user opens a file or follows a link.

Official description

Jupyter Notebook before 5.7.1 allows XSS via an untrusted notebook because nbconvert responses are considered to have the same origin as the notebook server. In other words, nbconvert endpoints can execute JavaScript with access to the server API. In notebook/nbconvert/handlers.py, NbconvertFileHandler and NbconvertPostHandler do not set a Content Security Policy to prevent this.

Weakness: CWE-79

Which versions are affected by CVE-2018-19351?

3 open source packages ship an affected version, including notebook. It affects 1 product.

PackageAffectedFixed in
notebook PyPIAll versions5.7.1
notebook PyPIAll versions5.7.1
notebook PyPIAll versions5.7.1

Products include Jupyter Notebook.

How do I fix CVE-2018-19351?

Upgrade notebook to 5.7.1 or later.

Escape output for the context it lands in and set a strict Content Security Policy. Upgrading the affected component is the real fix. More about Cross-site scripting.

Is CVE-2018-19351 being exploited?

There is no known exploitation of CVE-2018-19351 in the wild and no public exploit code.

Sources

Also known as DEBIAN-CVE-2018-19351, GHSA-49qr-xh3w-h436, PYSEC-2018-17, UBUNTU-CVE-2018-19351.

Is CVE-2018-19351 in your software?

Upload an SBOM and sbomify checks it against every vulnerability here, every day.

Check your SBOMs for free