{"id":"CVE-2021-32797","aliases":["BIT-jupyterlab-2021-32797","EUVD-2021-0107","GHSA-4952-p58q-6crx","MGASA-2023-0060","PYSEC-2021-130","PYSEC-2026-688","openSUSE-SU-2022:10075-1"],"status":"published","title":"JupyterLab: XSS due to lack of sanitization of the action attribute of an html \u003cform\u003e","description":"JupyterLab is a user interface for Project Jupyter which will eventually replace the classic Jupyter Notebook. In affected versions untrusted notebook can execute code on load. In particular JupyterLab doesn’t sanitize the action attribute of html `\u003cform\u003e`. Using this it is possible to trigger the form validation outside of the form itself. This is a remote code execution, but requires user action to open a notebook.","severity":{"version":"3.1","score":7.4,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:N/A:N","level":"high","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-11","score":0.0266,"percentile":0.85892,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-75","CWE-79","CWE-87"],"published":"2021-08-09T20:45:10Z","modified":"2026-11-06T02:45:06Z","fixes":[{"ecosystem":"PyPI","package":"jupyterlab","fixed_in":["1.2.21","2.2.10","2.3.2","3.0.17","3.1.4"],"sources":["ghsa","osv"]},{"ecosystem":"PyPI","package":"notebook","fixed_in":["5.7.11","6.4.1"],"sources":["ghsa","osv"]},{"ecosystem":"Bitnami","package":"jupyterlab","fixed_in":["1.2.21","2.2.10","2.3.2","3.0.17","3.1.4"],"sources":["osv"]},{"ecosystem":"Mageia:8","package":"python-jupyterlab","fixed_in":["2.2.10-1.mga8"],"sources":["osv"]},{"ecosystem":"Mageia:8","package":"jupyter-jupyterlab-server","fixed_in":["1.1.5-1.mga8"],"sources":["osv"]},{"ecosystem":"SUSE:Package Hub 15 SP4","package":"python-jupyterlab","fixed_in":["2.2.10-bp154.2.3.1"],"sources":["osv"]},{"ecosystem":"openSUSE:Leap 15.4","package":"python-jupyterlab","fixed_in":["2.2.10-bp154.2.3.1"],"sources":["osv"]}],"affected":[{"source":"ghsa","ecosystem":"PyPI","package":"jupyterlab","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.2.21"}]}]},{"source":"ghsa","ecosystem":"PyPI","package":"notebook","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"5.7.11"}]}]},{"source":"ghsa","ecosystem":"PyPI","package":"notebook","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"6.0.0"},{"fixed":"6.4.1"}]}]},{"source":"ghsa","ecosystem":"PyPI","package":"jupyterlab","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.0.0a0"},{"fixed":"2.2.10"}]}]},{"source":"ghsa","ecosystem":"PyPI","package":"jupyterlab","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.3.0a0"},{"fixed":"2.3.2"}]}]},{"source":"ghsa","ecosystem":"PyPI","package":"jupyterlab","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"3.0.0a0"},{"fixed":"3.0.17"}]}]},{"source":"ghsa","ecosystem":"PyPI","package":"jupyterlab","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"3.1.0a0"},{"fixed":"3.1.4"}]}]},{"source":"osv","ecosystem":"Bitnami","package":"jupyterlab","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"1.2.21"},{"introduced":"2.0.0"},{"fixed":"2.2.10"},{"introduced":"2.3.0"},{"fixed":"2.3.2"},{"introduced":"3.0.0"},{"fixed":"3.0.17"},{"introduced":"3.1.0"},{"fixed":"3.1.4"}]}]},{"source":"osv","ecosystem":"PyPI","package":"jupyterlab","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.2.21"}]}],"versions":["0.0.1","0.0.10","0.0.13","0.0.2","0.0.3","0.0.4","0.0.5","0.0.6","0.0.7","0.0.8","0.0.9","0.1.1","0.1.2","0.10.0","0.11.0","0.11.1","0.11.2","0.11.3","0.12.0","0.12.1","0.13.0","0.13.1","0.13.2","0.14.0","0.15.0","0.15.1","0.16.0","0.16.2","0.17.0","0.17.1","0.17.2","0.17.4","0.17.5","0.18.0","0.18.0.dev1","0.18.1","0.19.0","0.2.0","0.20.0","0.20.0rc1","0.20.1","0.20.2","0.20.3","0.20.4","0.21.0","0.21.0rc1","0.21.0rc2","0.21.0rc3","0.21.0rc4","0.21.0rc5","0.22.0","0.22.0rc0","0.22.1","0.23.0","0.23.0rc0","0.23.0rc1","0.23.1","0.23.2","0.24.0","0.24.0rc0","0.24.0rc1","0.24.0rc2","0.24.1","0.25.0","0.25.0rc0","0.25.0rc1","0.25.1","0.25.2","0.25.2rc0","0.26.0","0.26.0rc0","0.26.0rc1","0.26.1","0.26.2","0.26.3","0.26.4","0.26.5","0.27.0","0.27.0rc0","0.27.0rc1","0.27.0rc2","0.27.0rc3","0.27.0rc4","0.27.0rc5","0.27.1","0.27.2","0.28.0","0.28.0rc0","0.28.0rc1","0.28.0rc2","0.28.0rc3","0.28.1","0.28.10","0.28.11","0.28.12","0.28.13","0.28.14","0.28.15","0.28.2","0.28.3","0.28.4","0.28.5","0.28.6","0.28.7","0.28.8","0.29.0","0.29.0rc0","0.29.1","0.29.2","0.3.0","0.30.0","0.30.0rc0","0.30.0rc1","0.30.1","0.30.2","0.30.3","0.30.4","0.30.5","0.30.6","0.31.0","0.31.0rc0","0.31.0rc1","0.31.0rc2","0.31.1","0.31.10","0.31.11","0.31.12","0.31.2","0.31.3","0.31.4","0.31.5","0.31.6","0.31.7","0.31.8","0.31.9","0.32.0","0.32.0rc0","0.32.0rc1","0.32.1","0.33.0","0.33.0rc0","0.33.0rc1","0.33.1","0.33.10","0.33.11","0.33.12","0.33.2","0.33.3","0.33.4","0.33.5","0.33.6","0.33.7","0.33.8","0.33.9","0.34.0","0.34.0rc0","0.34.0rc1","0.34.0rc2","0.34.1","0.34.10","0.34.11","0.34.12","0.34.2","0.34.3","0.34.4","0.34.5","0.34.6","0.34.7","0.34.8","0.34.9","0.35.0","0.35.0rc0","0.35.0rc1","0.35.0rc2","0.35.1","0.35.2","0.35.3","0.35.4","0.35.5","0.35.6","0.4.0","0.4.1","0.5.0","0.6.0","0.7.0","0.8.0","0.9.0","0.9.1","1.0.0","1.0.0a0","1.0.0a1","1.0.0a10","1.0.0a2","1.0.0a3","1.0.0a4","1.0.0a5","1.0.0a6","1.0.0a7","1.0.0a8","1.0.0a9","1.0.0rc0","1.0.0rc1","1.0.1","1.0.10","1.0.2","1.0.3","1.0.4","1.0.5","1.0.6","1.0.7","1.0.9","1.1.0","1.1.0a0","1.1.0a1","1.1.0a2","1.1.0rc0","1.1.1","1.1.2","1.1.3","1.1.4","1.1.5","1.2.0","1.2.0a0","1.2.0a1","1.2.0a2","1.2.0a3","1.2.0rc0","1.2.1","1.2.10","1.2.11","1.2.12","1.2.13","1.2.14","1.2.15","1.2.16","1.2.17","1.2.18","1.2.19","1.2.2","1.2.20","1.2.3","1.2.4","1.2.5","1.2.6","1.2.7","1.2.8","1.2.9"]},{"source":"osv","ecosystem":"PyPI","package":"jupyterlab","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.0.0a0"},{"fixed":"2.2.10"}]}],"versions":["2.0.0","2.0.0a0","2.0.0a1","2.0.0a3","2.0.0a4","2.0.0b1","2.0.0b2","2.0.0b3","2.0.0rc0","2.0.0rc1","2.0.0rc2","2.0.1","2.0.1rc0","2.0.2","2.1.0","2.1.0a0","2.1.0b0","2.1.0rc0","2.1.1","2.1.2","2.1.3","2.1.4","2.1.5","2.2.0","2.2.0a0","2.2.0a1","2.2.0rc1","2.2.1","2.2.2","2.2.4","2.2.5","2.2.6","2.2.7","2.2.8","2.2.9"]},{"source":"osv","ecosystem":"PyPI","package":"jupyterlab","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.3.0a0"},{"fixed":"2.3.2"}]}],"versions":["2.3.0","2.3.0a0","2.3.0a1","2.3.0a2","2.3.0rc0","2.3.1"]},{"source":"osv","ecosystem":"PyPI","package":"jupyterlab","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"3.0.0a0"},{"fixed":"3.0.17"}]}],"versions":["3.0.0","3.0.0a0","3.0.0a10","3.0.0a11","3.0.0a12","3.0.0a13","3.0.0a14","3.0.0a3","3.0.0a4","3.0.0a5","3.0.0a6","3.0.0a7","3.0.0a8","3.0.0a9","3.0.0b1","3.0.0b2","3.0.0b3","3.0.0b4","3.0.0b6","3.0.0b7","3.0.0b8","3.0.0rc0","3.0.0rc1","3.0.0rc10","3.0.0rc11","3.0.0rc12","3.0.0rc13","3.0.0rc14","3.0.0rc15","3.0.0rc2","3.0.0rc3","3.0.0rc4","3.0.0rc5","3.0.0rc6","3.0.0rc7","3.0.0rc8","3.0.0rc9","3.0.1","3.0.10","3.0.11","3.0.12","3.0.13","3.0.14","3.0.15","3.0.16","3.0.2","3.0.3","3.0.4","3.0.5","3.0.6","3.0.7","3.0.8","3.0.9"]},{"source":"osv","ecosystem":"PyPI","package":"jupyterlab","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"3.1.0a0"},{"fixed":"3.1.4"}]}],"versions":["3.1.0","3.1.0a0","3.1.0a1","3.1.0a10","3.1.0a11","3.1.0a12","3.1.0a13","3.1.0a2","3.1.0a3","3.1.0a4","3.1.0a5","3.1.0a6","3.1.0a7","3.1.0a8","3.1.0a9","3.1.0b0","3.1.0b1","3.1.0rc1","3.1.0rc2","3.1.1","3.1.2"]},{"source":"osv","ecosystem":"PyPI","package":"notebook","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"5.7.11"}]}],"versions":["0.0.0","4.0.0","4.0.1","4.0.2","4.0.4","4.0.5","4.0.6","4.1.0","4.2.0","4.2.0b1","4.2.1","4.2.2","4.2.3","4.3.0","4.3.1","4.3.2","4.4.0","4.4.1","5.0.0","5.0.0b1","5.0.0b2","5.0.0rc1","5.0.0rc2","5.1.0","5.1.0rc1","5.1.0rc2","5.1.0rc3","5.2.0","5.2.0rc1","5.2.1","5.2.1rc1","5.2.2","5.3.0","5.3.0rc1","5.3.1","5.4.0","5.4.1","5.5.0","5.5.0rc1","5.6.0","5.6.0rc1","5.7.0","5.7.1","5.7.10","5.7.2","5.7.3","5.7.4","5.7.5","5.7.6","5.7.8","5.7.9"]},{"source":"osv","ecosystem":"PyPI","package":"notebook","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"6.0.0"},{"fixed":"6.4.1"}]}],"versions":["6.0.0","6.0.1","6.0.2","6.0.3","6.1.0","6.1.0rc1","6.1.1","6.1.2","6.1.3","6.1.4","6.1.5","6.1.6","6.2.0","6.3.0","6.4.0","6.4.0a0","6.4.0a1","6.4.0rc0"]},{"source":"osv","ecosystem":"Mageia:8","package":"python-jupyterlab","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.2.10-1.mga8"}]}]},{"source":"osv","ecosystem":"Mageia:8","package":"jupyter-jupyterlab-server","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.1.5-1.mga8"}]}]},{"source":"osv","ecosystem":"PyPI","package":"jupyterlab","ranges":[{"type":"GIT","events":[{"introduced":"0"},{"fixed":"504825938c0abfa2fb8ff8d529308830a5ae42ed"}]},{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.2.21"},{"introduced":"2"},{"fixed":"2.2.10"},{"introduced":"2.3"},{"fixed":"2.3.2"},{"introduced":"3"},{"fixed":"3.0.17"},{"introduced":"3.1"},{"fixed":"3.1.4"}]}],"versions":["0.0.1","0.0.10","0.0.13","0.0.2","0.0.3","0.0.4","0.0.5","0.0.6","0.0.7","0.0.8","0.0.9","0.1.1","0.1.2","0.10.0","0.11.0","0.11.1","0.11.2","0.11.3","0.12.0","0.12.1","0.13.0","0.13.1","0.13.2","0.14.0","0.15.0","0.15.1","0.16.0","0.16.2","0.17.0","0.17.1","0.17.2","0.17.4","0.17.5","0.18.0","0.18.0.dev1","0.18.1","0.19.0","0.2.0","0.20.0","0.20.0rc1","0.20.1","0.20.2","0.20.3","0.20.4","0.21.0","0.21.0rc1","0.21.0rc2","0.21.0rc3","0.21.0rc4","0.21.0rc5","0.22.0","0.22.0rc0","0.22.1","0.23.0","0.23.0rc0","0.23.0rc1","0.23.1","0.23.2","0.24.0","0.24.0rc0","0.24.0rc1","0.24.0rc2","0.24.1","0.25.0","0.25.0rc0","0.25.0rc1","0.25.1","0.25.2","0.25.2rc0","0.26.0","0.26.0rc0","0.26.0rc1","0.26.1","0.26.2","0.26.3","0.26.4","0.26.5","0.27.0","0.27.0rc0","0.27.0rc1","0.27.0rc2","0.27.0rc3","0.27.0rc4","0.27.0rc5","0.27.1","0.27.2","0.28.0","0.28.0rc0","0.28.0rc1","0.28.0rc2","0.28.0rc3","0.28.1","0.28.10","0.28.11","0.28.12","0.28.13","0.28.14","0.28.15","0.28.2","0.28.3","0.28.4","0.28.5","0.28.6","0.28.7","0.28.8","0.29.0","0.29.0rc0","0.29.1","0.29.2","0.3.0","0.30.0","0.30.0rc0","0.30.0rc1","0.30.1","0.30.2","0.30.3","0.30.4","0.30.5","0.30.6","0.31.0","0.31.0rc0","0.31.0rc1","0.31.0rc2","0.31.1","0.31.10","0.31.11","0.31.12","0.31.2","0.31.3","0.31.4","0.31.5","0.31.6","0.31.7","0.31.8","0.31.9","0.32.0","0.32.0rc0","0.32.0rc1","0.32.1","0.33.0","0.33.0rc0","0.33.0rc1","0.33.1","0.33.10","0.33.11","0.33.12","0.33.2","0.33.3","0.33.4","0.33.5","0.33.6","0.33.7","0.33.8","0.33.9","0.34.0","0.34.0rc0","0.34.0rc1","0.34.0rc2","0.34.1","0.34.10","0.34.11","0.34.12","0.34.2","0.34.3","0.34.4","0.34.5","0.34.6","0.34.7","0.34.8","0.34.9","0.35.0","0.35.0rc0","0.35.0rc1","0.35.0rc2","0.35.1","0.35.2","0.35.3","0.35.4","0.35.5","0.35.6","0.4.0","0.4.1","0.5.0","0.6.0","0.7.0","0.8.0","0.9.0","0.9.1","1.0.0","1.0.0a0","1.0.0a1","1.0.0a10","1.0.0a2","1.0.0a3","1.0.0a4","1.0.0a5","1.0.0a6","1.0.0a7","1.0.0a8","1.0.0a9","1.0.0rc0","1.0.0rc1","1.0.1","1.0.10","1.0.2","1.0.3","1.0.4","1.0.5","1.0.6","1.0.7","1.0.9","1.1.0","1.1.0a0","1.1.0a1","1.1.0a2","1.1.0rc0","1.1.1","1.1.2","1.1.3","1.1.4","1.1.5","1.2.0","1.2.0a0","1.2.0a1","1.2.0a2","1.2.0a3","1.2.0rc0","1.2.1","1.2.10","1.2.11","1.2.12","1.2.13","1.2.14","1.2.15","1.2.16","1.2.17","1.2.18","1.2.19","1.2.2","1.2.20","1.2.3","1.2.4","1.2.5","1.2.6","1.2.7","1.2.8","1.2.9","2.0.0","2.0.1","2.0.1rc0","2.0.2","2.1.0","2.1.0a0","2.1.0b0","2.1.0rc0","2.1.1","2.1.2","2.1.3","2.1.4","2.1.5","2.2.0","2.2.0a0","2.2.0a1","2.2.0rc1","2.2.1","2.2.2","2.2.4","2.2.5","2.2.6","2.2.7","2.2.8","2.2.9","2.3.0","2.3.1","3.0.0","3.0.1","3.0.10","3.0.11","3.0.12","3.0.13","3.0.14","3.0.15","3.0.16","3.0.2","3.0.3","3.0.4","3.0.5","3.0.6","3.0.7","3.0.8","3.0.9","3.1.0","3.1.1","3.1.2"]},{"source":"osv","ecosystem":"PyPI","package":"notebook","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"5.7.11"},{"introduced":"6.0.0"},{"fixed":"6.4.1"}]}],"versions":["0.0.0","4.0.0","4.0.1","4.0.2","4.0.4","4.0.5","4.0.6","4.1.0","4.2.0","4.2.0b1","4.2.1","4.2.2","4.2.3","4.3.0","4.3.1","4.3.2","4.4.0","4.4.1","5.0.0","5.0.0b1","5.0.0b2","5.0.0rc1","5.0.0rc2","5.1.0","5.1.0rc1","5.1.0rc2","5.1.0rc3","5.2.0","5.2.0rc1","5.2.1","5.2.1rc1","5.2.2","5.3.0","5.3.0rc1","5.3.1","5.4.0","5.4.1","5.5.0","5.5.0rc1","5.6.0","5.6.0rc1","5.7.0","5.7.1","5.7.10","5.7.2","5.7.3","5.7.4","5.7.5","5.7.6","5.7.8","5.7.9","6.0.0","6.0.1","6.0.2","6.0.3","6.1.0","6.1.0rc1","6.1.1","6.1.2","6.1.3","6.1.4","6.1.5","6.1.6","6.2.0","6.3.0","6.4.0","6.4.0a0","6.4.0a1","6.4.0rc0"]},{"source":"osv","ecosystem":"SUSE:Package Hub 15 SP4","package":"python-jupyterlab","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.2.10-bp154.2.3.1"}]}]},{"source":"osv","ecosystem":"openSUSE:Leap 15.4","package":"python-jupyterlab","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.2.10-bp154.2.3.1"}]}]}],"products":[{"vendor":"jupyter","product":"jupyterlab"},{"vendor":"jupyterlab","product":"jupyterlab"}],"references":[{"url":"https://github.com/jupyterlab/jupyterlab/security/advisories/GHSA-4952-p58q-6crx","tags":["x_refsource_CONFIRM","x_transferred","Third Party Advisory","advisory","web"]},{"url":"https://github.com/jupyterlab/jupyterlab/commit/504825938c0abfa2fb8ff8d529308830a5ae42ed","tags":["x_refsource_MISC","x_transferred","Exploit","Third Party Advisory","advisory","evidence","web","fix"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2021-32797","tags":["web","advisory"]},{"url":"https://github.com/google/security-research/security/advisories/GHSA-c469-p3jp-2vhx","tags":["web"]},{"url":"https://github.com/pypa/advisory-database/tree/main/vulns/jupyterlab/PYSEC-2021-130.yaml","tags":["web"]},{"url":"https://github.com/advisories/GHSA-4952-p58q-6crx","tags":["advisory"]},{"url":"https://advisories.mageia.org/MGASA-2023-0060.html","tags":["advisory"]},{"url":"https://bugs.mageia.org/show_bug.cgi?id=30699","tags":["report"]},{"url":"https://lists.opensuse.org/archives/list/security-announce@lists.opensuse.org/thread/VZGF2ZZFSQOBN7NRPXC3MMQXPLYLS2IH/","tags":["web","advisory"]},{"url":"https://pypi.org/project/notebook","tags":["package"]},{"url":"https://bugzilla.suse.com/1196663","tags":["report"]},{"url":"https://www.suse.com/security/cve/CVE-2021-32797","tags":["web"]}],"sources":{"cve":[{"id":"CVE-2021-32797","title":"JupyterLab: XSS due to lack of sanitization of the action attribute of an html \u003cform\u003e","description":"JupyterLab is a user interface for Project Jupyter which will eventually replace the classic Jupyter Notebook. In affected versions untrusted notebook can execute code on load. In particular JupyterLab doesn’t sanitize the action attribute of html `\u003cform\u003e`. Using this it is possible to trigger the form validation outside of the form itself. This is a remote code execution, but requires user action to open a notebook.","status":"published","published":"2021-08-09T20:45:10Z","modified":"2024-08-03T23:33:56.163Z","cvss":[{"version":"3.1","score":7.4,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:N/A:N","level":"high","assessor":"cna"}],"cwes":["CWE-79"],"updated_at":"2026-11-02T14:33:07.014772Z"}],"euvd":[{"id":"EUVD-2021-0107","description":"JupyterLab is a user interface for Project Jupyter which will eventually replace the classic Jupyter Notebook. In affected versions untrusted notebook can execute code on load. In particular JupyterLab doesn’t sanitize the action attribute of html `\u003cform\u003e`. Using this it is possible to trigger the form validation outside of the form itself. This is a remote code execution, but requires user action to open a notebook.","status":"published","published":"2021-08-09T20:45:10Z","modified":"2024-08-03T23:33:56Z","cvss":[{"version":"3.1","score":7.4,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:N/A:N","level":"high"}],"updated_at":"2026-11-03T03:24:35.30045Z"}],"ghsa":[{"id":"GHSA-4952-p58q-6crx","title":"JupyterLab: XSS due to lack of sanitization of the action attribute of an html \u003cform\u003e","description":"### Impact\n\nUntrusted notebook can execute code on load. This is a remote code execution, but requires user action to open a notebook.\n\n### Patches\n\nPatched in the following versions: 3.1.4, 3.0.17, 2.3.2, 2.2.10, 1.2.21.\n\n### References\n\n[OWASP Page on Restricting Form Submissions](https://cheatsheetseries.owasp.org/cheatsheets/Content_Security_Policy_Cheat_Sheet.html)\n\n### For more information\n\nIf you have any questions or comments about this advisory, or vulnerabilities to report, please email our security list security@ipython.org.\n\nCredit: Guillaume Jeanne from Google\n","status":"published","published":"2021-08-23T19:40:22Z","modified":"2024-11-18T16:26:15Z","cvss":[{"version":"4.0","score":6.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:H/SI:N/SA:N","level":"medium"},{"version":"3.1","score":7.4,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:N/A:N","level":"high"}],"cwes":["CWE-75","CWE-79","CWE-87"],"updated_at":"2026-11-02T14:38:19.029049Z"}],"nvd":[{"id":"CVE-2021-32797","description":"JupyterLab is a user interface for Project Jupyter which will eventually replace the classic Jupyter Notebook. In affected versions untrusted notebook can execute code on load. In particular JupyterLab doesn’t sanitize the action attribute of html `\u003cform\u003e`. Using this it is possible to trigger the form validation outside of the form itself. This is a remote code execution, but requires user action to open a notebook.","status":"published","published":"2021-08-09T21:15:08.14Z","modified":"2026-06-17T03:53:38.983Z","cvss":[{"version":"3.1","score":7.4,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:N/A:N","level":"high","assessor":"secondary"},{"version":"3.1","score":9.6,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H","level":"critical","assessor":"primary"},{"version":"2.0","score":6.8,"vector":"AV:N/AC:M/Au:N/C:P/I:P/A:P","level":"medium","assessor":"primary"}],"cwes":["CWE-79"],"updated_at":"2026-11-02T14:06:56.562207Z"}],"osv":[{"id":"CVE-2021-32797","description":"JupyterLab is a user interface for Project Jupyter which will eventually replace the classic Jupyter Notebook. In affected versions untrusted notebook can execute code on load. In particular JupyterLab doesn’t sanitize the action attribute of html `\u003cform\u003e`. Using this it is possible to trigger the form validation outside of the form itself. This is a remote code execution, but requires user action to open a notebook.","status":"published","published":"2021-08-09T21:15:08.14Z","modified":"2026-11-06T02:45:06.051764801Z","cvss":[{"version":"3.1","score":9.6,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H","level":"critical"}],"updated_at":"2026-11-06T03:04:11.655443Z"},{"id":"GHSA-4952-p58q-6crx","title":"JupyterLab: XSS due to lack of sanitization of the action attribute of an html \u003cform\u003e","description":"### Impact\n\nUntrusted notebook can execute code on load. This is a remote code execution, but requires user action to open a notebook.\n\n### Patches\n\nPatched in the following versions: 3.1.4, 3.0.17, 2.3.2, 2.2.10, 1.2.21.\n\n### References\n\n[OWASP Page on Restricting Form Submissions](https://cheatsheetseries.owasp.org/cheatsheets/Content_Security_Policy_Cheat_Sheet.html)\n\n### For more information\n\nIf you have any questions or comments about this advisory, or vulnerabilities to report, please email our security list security@ipython.org.\n\nCredit: Guillaume Jeanne from Google\n","status":"published","published":"2021-08-23T19:40:22Z","modified":"2026-07-08T06:28:37.707191234Z","cvss":[{"version":"3.1","score":7.4,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:N/A:N","level":"high"},{"version":"4.0","score":6.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:H/SI:N/SA:N","level":"medium"}],"cwes":["CWE-75","CWE-79","CWE-87"],"updated_at":"2026-11-02T15:46:36.782754Z"},{"id":"PYSEC-2026-688","title":"JupyterLab: XSS due to lack of sanitization of the action attribute of an html \u003cform\u003e","description":"### Impact\n\nUntrusted notebook can execute code on load. This is a remote code execution, but requires user action to open a notebook.\n\n### Patches\n\nPatched in the following versions: 3.1.4, 3.0.17, 2.3.2, 2.2.10, 1.2.21.\n\n### References\n\n[OWASP Page on Restricting Form Submissions](https://cheatsheetseries.owasp.org/cheatsheets/Content_Security_Policy_Cheat_Sheet.html)\n\n### For more information\n\nIf you have any questions or comments about this advisory, or vulnerabilities to report, please email our security list security@ipython.org.\n\nCredit: Guillaume Jeanne from Google\n","status":"published","published":"2026-07-02T14:13:10.480332Z","modified":"2026-07-06T08:11:30.66135828Z","cvss":[{"version":"3.1","score":7.4,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:N/A:N","level":"high"},{"version":"4.0","score":6.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:H/SI:N/SA:N","level":"medium"}],"updated_at":"2026-11-02T15:52:58.117212Z"},{"id":"BIT-jupyterlab-2021-32797","title":"JupyterLab: XSS due to lack of sanitization of the action attribute of an html \u003cform\u003e","description":"JupyterLab is a user interface for Project Jupyter which will eventually replace the classic Jupyter Notebook. In affected versions untrusted notebook can execute code on load. In particular JupyterLab doesn’t sanitize the action attribute of html `\u003cform\u003e`. Using this it is possible to trigger the form validation outside of the form itself. This is a remote code execution, but requires user action to open a notebook.","status":"published","published":"2024-03-06T10:54:25.501Z","modified":"2026-09-08T08:48:23.855387161Z","updated_at":"2026-11-02T15:28:31.782692Z"},{"id":"MGASA-2023-0060","title":"Updated python-jupyterlab packages fix security vulnerability","description":"Remote code execution, but requires user action to open a notebook.\n(CVE-2021-32797), and other bug fixes.\n","status":"published","published":"2023-02-27T20:27:16Z","modified":"2026-04-16T04:41:41.130037928Z","updated_at":"2026-11-02T15:49:42.263076Z"},{"id":"openSUSE-SU-2022:10075-1","title":"Security update for python-jupyterlab","description":"This update for python-jupyterlab fixes the following issues:\n\nUpdate to 2.2.10:\n\n* Remove `form` tags' `action` attribute during sanitizing, to prevent an\n  XSS (CVE-2021-32797) (boo#1196663)\n* Header ‘Content-Type’ should not be overwritten\n* Do not use token parameters in websocket urls\n* Properly handle errors in async browser_check\n* Cells can no longer be executed while kernels are terminating or\n  restarting. There is a new status for these events on the Kernel Indicator\n* Add styling for high memory usage warning in status bar with nbresuse\n* Adds support for Python version 3.10\n* Support live editing of SVG with updating rendering\n* Lazy load codemirror theme stylesheets\n* Add feature request template + slight reorg in readme\n* Add link to react example in extension-examples repo\n* Close correct tab with close tab\n* Remove unused css rules\n* Simplified multicursor backspace code\n* Fix recent breaking changes to normalizepath in filebrowser\n* Handle quit_button when launched as an extension\n* Add worker-loader\n* Fix icon sidebar height for third party extensions\n* Scrolls cells into view after deletion\n* Support Node.js 10+\n* Select search text when focusing the search overlay\n* Throttle fetch requests in the setting registry’s data connector\n* Avoid redundant checkpoint calls on loading a notebook \n","status":"published","published":"2022-08-02T10:20:19Z","modified":"2026-02-04T02:13:41.078627Z","updated_at":"2026-11-02T16:58:32.653274Z"},{"id":"PYSEC-2021-130","description":"JupyterLab is a user interface for Project Jupyter which will eventually replace the classic Jupyter Notebook. In affected versions untrusted notebook can execute code on load. In particular JupyterLab doesn’t sanitize the action attribute of html `\u003cform\u003e`. Using this it is possible to trigger the form validation outside of the form itself. This is a remote code execution, but requires user action to open a notebook.","status":"published","published":"2021-08-09T21:15:00Z","modified":"2026-07-06T08:11:30.66135828Z","updated_at":"2026-11-02T15:52:52.682031Z"}]}}
