{"id":"CVE-2022-29238","aliases":["ALPINE-CVE-2022-29238","BIT-jupyter-base-notebook-2022-29238","BIT-jupyter-notebook-2022-29238","DEBIAN-CVE-2022-29238","EUVD-2022-0164","GHSA-v7vq-3x77-87vg","MGASA-2022-0323","PYSEC-2022-212","UBUNTU-CVE-2022-29238","USN-5585-1","openSUSE-SU-2024:12148-1"],"status":"published","title":"Forced Browsing in Jupyter Notebook","description":"Jupyter Notebook is a web-based notebook environment for interactive computing. Prior to version 6.4.12, authenticated requests to the notebook server with `ContentsManager.allow_hidden = False` only prevented listing the contents of hidden directories, not accessing individual hidden files or files in hidden directories (i.e. hidden files were 'hidden' but not 'inaccessible'). This could lead to notebook configurations allowing authenticated access to files that may reasonably be expected to be disallowed. Because fully authenticated requests are required, this is of relatively low impact. But if a server's root directory contains sensitive files whose only protection from the server is being hidden (e.g. `~/.ssh` while serving $HOME), then any authenticated requests could access files if their names are guessable. Such contexts also necessarily have full access to the server and therefore execution permissions, which also generally grants access to all the same files. So this does not generally result in any privilege escalation or increase in information access, only an additional, unintended means by which the files could be accessed. Version 6.4.12 contains a patch for this issue. There are currently no known workarounds.","severity":{"version":"3.1","score":4.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N","level":"medium","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-10","score":0.01163,"percentile":0.67503,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-425"],"published":"2022-06-14T17:55:10Z","modified":"2026-11-03T08:04:07Z","fixes":[{"ecosystem":"PyPI","package":"notebook","fixed_in":["6.4.12"],"sources":["ghsa","osv"]},{"ecosystem":"Alpine:v3.17","package":"jupyter-notebook","fixed_in":["6.4.12-r0"],"sources":["osv"]},{"ecosystem":"Alpine:v3.18","package":"jupyter-notebook","fixed_in":["6.4.12-r0"],"sources":["osv"]},{"ecosystem":"Alpine:v3.19","package":"jupyter-notebook","fixed_in":["6.4.12-r0"],"sources":["osv"]},{"ecosystem":"Alpine:v3.20","package":"jupyter-notebook","fixed_in":["6.4.12-r0"],"sources":["osv"]},{"ecosystem":"Alpine:v3.21","package":"jupyter-notebook","fixed_in":["6.4.12-r0"],"sources":["osv"]},{"ecosystem":"Alpine:v3.22","package":"jupyter-notebook","fixed_in":["6.4.12-r0"],"sources":["osv"]},{"ecosystem":"Alpine:v3.23","package":"jupyter-notebook","fixed_in":["6.4.12-r0"],"sources":["osv"]},{"ecosystem":"Alpine:v3.24","package":"jupyter-notebook","fixed_in":["6.4.12-r0"],"sources":["osv"]},{"ecosystem":"Bitnami","package":"jupyter-base-notebook","fixed_in":["6.4.12"],"sources":["osv"]},{"ecosystem":"Bitnami","package":"jupyter-notebook","fixed_in":["6.4.12"],"sources":["osv"]},{"ecosystem":"Debian:12","package":"jupyter-notebook","fixed_in":["6.4.12-1"],"sources":["osv"]},{"ecosystem":"Debian:13","package":"jupyter-notebook","fixed_in":["6.4.12-1"],"sources":["osv"]},{"ecosystem":"Debian:14","package":"jupyter-notebook","fixed_in":["6.4.12-1"],"sources":["osv"]},{"ecosystem":"Ubuntu:20.04:LTS","package":"jupyter-notebook","fixed_in":["6.0.3-2ubuntu0.1"],"sources":["osv"]},{"ecosystem":"Ubuntu:22.04:LTS","package":"jupyter-notebook","fixed_in":["6.4.8-1ubuntu0.1"],"sources":["osv"]}],"affected":[{"source":"ghsa","ecosystem":"PyPI","package":"notebook","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"6.4.12"}]}]},{"source":"osv","ecosystem":"Alpine:v3.17","package":"jupyter-notebook","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"6.4.12-r0"}]}]},{"source":"osv","ecosystem":"Alpine:v3.18","package":"jupyter-notebook","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"6.4.12-r0"}]}]},{"source":"osv","ecosystem":"Alpine:v3.19","package":"jupyter-notebook","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"6.4.12-r0"}]}]},{"source":"osv","ecosystem":"Alpine:v3.20","package":"jupyter-notebook","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"6.4.12-r0"}]}]},{"source":"osv","ecosystem":"Alpine:v3.21","package":"jupyter-notebook","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"6.4.12-r0"}]}]},{"source":"osv","ecosystem":"Alpine:v3.22","package":"jupyter-notebook","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"6.4.12-r0"}]}]},{"source":"osv","ecosystem":"Alpine:v3.23","package":"jupyter-notebook","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"6.4.12-r0"}]}]},{"source":"osv","ecosystem":"Alpine:v3.24","package":"jupyter-notebook","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"6.4.12-r0"}]}]},{"source":"osv","ecosystem":"Bitnami","package":"jupyter-base-notebook","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"6.4.12"}]}]},{"source":"osv","ecosystem":"Bitnami","package":"jupyter-notebook","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"6.4.12"}]}]},{"source":"osv","ecosystem":"Debian:12","package":"jupyter-notebook","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"6.4.12-1"}]}]},{"source":"osv","ecosystem":"Debian:13","package":"jupyter-notebook","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"6.4.12-1"}]}]},{"source":"osv","ecosystem":"Debian:14","package":"jupyter-notebook","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"6.4.12-1"}]}]},{"source":"osv","ecosystem":"PyPI","package":"notebook","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"6.4.12"}]}],"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.11","5.7.12","5.7.13","5.7.14","5.7.14a0","5.7.15","5.7.16","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.0rc1","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","6.4.1","6.4.10","6.4.11","6.4.2","6.4.3","6.4.4","6.4.5","6.4.6","6.4.7","6.4.8","6.4.9"]},{"source":"osv","ecosystem":"Mageia:8","package":"jupyter-notebook","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"6.4.12-1.mga8"}]}],"bundled":10},{"source":"osv","ecosystem":"Mageia:8","package":"python-send2trash","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.8.0-1.mga8"}]}],"bundled":10},{"source":"osv","ecosystem":"Mageia:8","package":"python-nest-asyncio","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.5.5-1.mga8"}]}],"bundled":10},{"source":"osv","ecosystem":"PyPI","package":"notebook","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"6.4.12"}]}],"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.11","5.7.12","5.7.13","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.0rc1","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","6.4.1","6.4.10","6.4.11","6.4.2","6.4.3","6.4.4","6.4.5","6.4.6","6.4.7","6.4.8","6.4.9","5.7.14a0","5.7.14","5.7.15","5.7.16"]},{"source":"osv","ecosystem":"Ubuntu:20.04:LTS","package":"jupyter-notebook","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"6.0.3-2ubuntu0.1"}]}],"versions":["5.7.8-1","6.0.0-1","6.0.0-2","6.0.2-1","6.0.3-1","6.0.3-2"]},{"source":"osv","ecosystem":"Ubuntu:22.04:LTS","package":"jupyter-notebook","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"6.4.8-1ubuntu0.1"}]}],"versions":["6.2.0-1","6.4.5-2","6.4.5-3","6.4.5-4","6.4.8-1"]},{"source":"osv","ecosystem":"Ubuntu:18.04:LTS","package":"jupyter-notebook","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"5.2.2-1ubuntu0.1"}]}],"versions":["4.2.3-4","5.1.0-2","5.2.1-2","5.2.2-1"],"bundled":8},{"source":"osv","ecosystem":"Ubuntu:20.04:LTS","package":"jupyter-notebook","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"6.0.3-2ubuntu0.1"}]}],"versions":["5.7.8-1","6.0.0-1","6.0.0-2","6.0.2-1","6.0.3-1","6.0.3-2"],"bundled":8},{"source":"osv","ecosystem":"Ubuntu:22.04:LTS","package":"jupyter-notebook","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"6.4.8-1ubuntu0.1"}]}],"versions":["6.2.0-1","6.4.5-2","6.4.5-3","6.4.5-4","6.4.8-1"],"bundled":8}],"products":[{"vendor":"jupyter","product":"notebook"}],"references":[{"url":"https://github.com/jupyter/notebook/security/advisories/GHSA-v7vq-3x77-87vg","tags":["x_refsource_CONFIRM","x_transferred","Third Party Advisory","advisory","web","report"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2022-29238","tags":["web","advisory"]},{"url":"https://github.com/pypa/advisory-database/tree/main/vulns/notebook/PYSEC-2022-212.yaml","tags":["web"]},{"url":"https://github.com/advisories/GHSA-v7vq-3x77-87vg"},{"url":"https://security.alpinelinux.org/vuln/CVE-2022-29238","tags":["advisory"]},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2022/29xxx/CVE-2022-29238.json","tags":["advisory"]},{"url":"https://security-tracker.debian.org/tracker/CVE-2022-29238","tags":["advisory"]},{"url":"https://github.com/jupyter/notebook","tags":["package"]},{"url":"https://advisories.mageia.org/MGASA-2022-0323.html","tags":["advisory"]},{"url":"https://bugs.mageia.org/show_bug.cgi?id=30789","tags":["report"]},{"url":"https://bugs.mageia.org/show_bug.cgi?id=30664","tags":["report"]},{"url":"https://ubuntu.com/security/notices/USN-5585-1","tags":["advisory"]},{"url":"https://github.com/jupyter/notebook/security/advisories/GHSA-m87f-39q9-6f55","tags":["advisory"]},{"url":"https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/thread/ORJX2LF6KMPIHP6B2P6KZIVKMLE3LVJ5/","tags":["web"]},{"url":"https://ubuntu.com/security/CVE-2022-29238","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2022-29238","tags":["report"]},{"url":"https://ubuntu.com/security/CVE-2018-19351","tags":["report"]},{"url":"https://ubuntu.com/security/CVE-2018-21030","tags":["report"]},{"url":"https://ubuntu.com/security/CVE-2019-9644","tags":["report"]},{"url":"https://ubuntu.com/security/CVE-2019-10255","tags":["report"]},{"url":"https://ubuntu.com/security/CVE-2019-10856","tags":["report"]},{"url":"https://ubuntu.com/security/CVE-2020-26215","tags":["report"]},{"url":"https://ubuntu.com/security/CVE-2022-24758","tags":["report"]},{"url":"","tags":["advisory"]},{"url":"https://www.suse.com/security/cve/CVE-2022-29238","tags":["web"]}],"sources":{"cve":[{"id":"CVE-2022-29238","title":"Forced Browsing in Jupyter Notebook","description":"Jupyter Notebook is a web-based notebook environment for interactive computing. Prior to version 6.4.12, authenticated requests to the notebook server with `ContentsManager.allow_hidden = False` only prevented listing the contents of hidden directories, not accessing individual hidden files or files in hidden directories (i.e. hidden files were 'hidden' but not 'inaccessible'). This could lead to notebook configurations allowing authenticated access to files that may reasonably be expected to be disallowed. Because fully authenticated requests are required, this is of relatively low impact. But if a server's root directory contains sensitive files whose only protection from the server is being hidden (e.g. `~/.ssh` while serving $HOME), then any authenticated requests could access files if their names are guessable. Such contexts also necessarily have full access to the server and therefore execution permissions, which also generally grants access to all the same files. So this does not generally result in any privilege escalation or increase in information access, only an additional, unintended means by which the files could be accessed. Version 6.4.12 contains a patch for this issue. There are currently no known workarounds.","status":"published","published":"2022-06-14T17:55:10Z","modified":"2025-04-23T18:16:17.365Z","cvss":[{"version":"3.1","score":4.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N","level":"medium","assessor":"cna"}],"cwes":["CWE-425"],"updated_at":"2026-11-02T14:34:36.578327Z"}],"euvd":[{"id":"EUVD-2022-0164","description":"Jupyter Notebook is a web-based notebook environment for interactive computing. Prior to version 6.4.12, authenticated requests to the notebook server with `ContentsManager.allow_hidden = False` only prevented listing the contents of hidden directories, not accessing individual hidden files or files in hidden directories (i.e. hidden files were 'hidden' but not 'inaccessible'). This could lead to notebook configurations allowing authenticated access to files that may reasonably be expected to be disallowed. Because fully authenticated requests are required, this is of relatively low impact. But if a server's root directory contains sensitive files whose only protection from the server is being hidden (e.g. `~/.ssh` while serving $HOME), then any authenticated requests could access files if their names are guessable. Such contexts also necessarily have full access to the server and therefore execution permissions, which also generally grants access to all the same files. So this does not generally result in any privilege escalation or increase in information access, only an additional, unintended means by which the files could be accessed. Version 6.4.12 contains a patch for this issue. There are currently no known workarounds.","status":"published","published":"2022-06-14T17:55:10Z","modified":"2025-04-23T18:16:17Z","cvss":[{"version":"3.1","score":4.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N","level":"medium"}],"updated_at":"2026-11-02T20:52:09.387599Z"}],"ghsa":[{"id":"GHSA-v7vq-3x77-87vg","title":"Token bruteforcing.","description":"### Impact\n_What kind of vulnerability is it? Who is impacted?_\n\nAuthenticated requests to the notebook server with `ContentsManager.allow_hidden = False` only prevented listing the contents of hidden directories, not accessing individual hidden files or files in hidden directories (i.e. hidden files were 'hidden' but not 'inaccessible'). This could lead to notebook configurations allowing authenticated access to files that may reasonably be expected to be disallowed.\n\nBecause fully authenticated requests are required, this is of relatively low impact. But if a server's root directory contains sensitive files whose only protection from the server is being hidden (e.g. `~/.ssh` while serving $HOME), then any authenticated requests could access files if their names are guessable. Such contexts also necessarily have full access to the server and therefore execution permissions, which also generally grants access to all the same files. So this does not generally result in any privilege escalation or increase in information access, only an additional, unintended _means_ by which the files could be accessed.\n\n### Patches\n_Has the problem been patched? What versions should users upgrade to?_\n\nnotebook 6.4.12\n\n### Workarounds\n_Is there a way for users to fix or remediate the vulnerability without upgrading?_\n\n- Do not run the notebook server in a directory with hidden files, use subdirectories\n- Use a custom ContentsManager with additional checks for `self.is_hidden(path)` prior to completing actions\n\n### References\n_Are there any links users can visit to find out more?_\n\n### For more information\nIf you have any questions or comments about this advisory:\n* Open an issue in [example link to repo](http://example.com)\n* Email us at [example email address](mailto:example@example.com)\n","status":"published","published":"2022-06-16T23:10:10Z","modified":"2023-01-27T05:04:37Z","cvss":[{"version":"3.1","score":4.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N","level":"medium"}],"cwes":["CWE-425"],"updated_at":"2026-11-02T14:36:20.985872Z"}],"nvd":[{"id":"CVE-2022-29238","description":"Jupyter Notebook is a web-based notebook environment for interactive computing. Prior to version 6.4.12, authenticated requests to the notebook server with `ContentsManager.allow_hidden = False` only prevented listing the contents of hidden directories, not accessing individual hidden files or files in hidden directories (i.e. hidden files were 'hidden' but not 'inaccessible'). This could lead to notebook configurations allowing authenticated access to files that may reasonably be expected to be disallowed. Because fully authenticated requests are required, this is of relatively low impact. But if a server's root directory contains sensitive files whose only protection from the server is being hidden (e.g. `~/.ssh` while serving $HOME), then any authenticated requests could access files if their names are guessable. Such contexts also necessarily have full access to the server and therefore execution permissions, which also generally grants access to all the same files. So this does not generally result in any privilege escalation or increase in information access, only an additional, unintended means by which the files could be accessed. Version 6.4.12 contains a patch for this issue. There are currently no known workarounds.","status":"published","published":"2022-06-14T18:15:08.15Z","modified":"2026-06-17T04:39:53.69Z","cvss":[{"version":"3.1","score":4.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N","level":"medium","assessor":"secondary"},{"version":"3.1","score":4.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N","level":"medium","assessor":"primary"},{"version":"2.0","score":4,"vector":"AV:N/AC:L/Au:S/C:P/I:N/A:N","level":"medium","assessor":"primary"}],"cwes":["CWE-425"],"updated_at":"2026-11-02T14:07:22.232533Z"}],"osv":[{"id":"ALPINE-CVE-2022-29238","description":"Jupyter Notebook is a web-based notebook environment for interactive computing. Prior to version 6.4.12, authenticated requests to the notebook server with `ContentsManager.allow_hidden = False` only prevented listing the contents of hidden directories, not accessing individual hidden files or files in hidden directories (i.e. hidden files were 'hidden' but not 'inaccessible'). This could lead to notebook configurations allowing authenticated access to files that may reasonably be expected to be disallowed. Because fully authenticated requests are required, this is of relatively low impact. But if a server's root directory contains sensitive files whose only protection from the server is being hidden (e.g. `~/.ssh` while serving $HOME), then any authenticated requests could access files if their names are guessable. Such contexts also necessarily have full access to the server and therefore execution permissions, which also generally grants access to all the same files. So this does not generally result in any privilege escalation or increase in information access, only an additional, unintended means by which the files could be accessed. Version 6.4.12 contains a patch for this issue. There are currently no known workarounds.","status":"published","published":"2022-06-14T18:15:08.15Z","modified":"2026-11-03T07:30:08.291723714Z","cvss":[{"version":"3.1","score":4.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N","level":"medium"}],"updated_at":"2026-11-03T07:50:38.973973Z"},{"id":"CVE-2022-29238","title":"Forced Browsing in Jupyter Notebook","description":"Jupyter Notebook is a web-based notebook environment for interactive computing. Prior to version 6.4.12, authenticated requests to the notebook server with `ContentsManager.allow_hidden = False` only prevented listing the contents of hidden directories, not accessing individual hidden files or files in hidden directories (i.e. hidden files were 'hidden' but not 'inaccessible'). This could lead to notebook configurations allowing authenticated access to files that may reasonably be expected to be disallowed. Because fully authenticated requests are required, this is of relatively low impact. But if a server's root directory contains sensitive files whose only protection from the server is being hidden (e.g. `~/.ssh` while serving $HOME), then any authenticated requests could access files if their names are guessable. Such contexts also necessarily have full access to the server and therefore execution permissions, which also generally grants access to all the same files. So this does not generally result in any privilege escalation or increase in information access, only an additional, unintended means by which the files could be accessed. Version 6.4.12 contains a patch for this issue. There are currently no known workarounds.","status":"published","published":"2022-06-14T17:55:10Z","modified":"2026-10-28T02:30:21.06090158Z","cvss":[{"version":"3.1","score":4.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N","level":"medium"}],"cwes":["CWE-425"],"updated_at":"2026-11-02T15:44:25.164673Z"},{"id":"DEBIAN-CVE-2022-29238","description":"Jupyter Notebook is a web-based notebook environment for interactive computing. Prior to version 6.4.12, authenticated requests to the notebook server with `ContentsManager.allow_hidden = False` only prevented listing the contents of hidden directories, not accessing individual hidden files or files in hidden directories (i.e. hidden files were 'hidden' but not 'inaccessible'). This could lead to notebook configurations allowing authenticated access to files that may reasonably be expected to be disallowed. Because fully authenticated requests are required, this is of relatively low impact. But if a server's root directory contains sensitive files whose only protection from the server is being hidden (e.g. `~/.ssh` while serving $HOME), then any authenticated requests could access files if their names are guessable. Such contexts also necessarily have full access to the server and therefore execution permissions, which also generally grants access to all the same files. So this does not generally result in any privilege escalation or increase in information access, only an additional, unintended means by which the files could be accessed. Version 6.4.12 contains a patch for this issue. There are currently no known workarounds.","status":"published","published":"2022-06-14T18:15:08.15Z","modified":"2026-11-03T08:04:07.149230172Z","cvss":[{"version":"3.1","score":4.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N","level":"medium"}],"updated_at":"2026-11-03T08:23:07.763774Z"},{"id":"GHSA-v7vq-3x77-87vg","title":"Token bruteforcing.","description":"### Impact\n_What kind of vulnerability is it? Who is impacted?_\n\nAuthenticated requests to the notebook server with `ContentsManager.allow_hidden = False` only prevented listing the contents of hidden directories, not accessing individual hidden files or files in hidden directories (i.e. hidden files were 'hidden' but not 'inaccessible'). This could lead to notebook configurations allowing authenticated access to files that may reasonably be expected to be disallowed.\n\nBecause fully authenticated requests are required, this is of relatively low impact. But if a server's root directory contains sensitive files whose only protection from the server is being hidden (e.g. `~/.ssh` while serving $HOME), then any authenticated requests could access files if their names are guessable. Such contexts also necessarily have full access to the server and therefore execution permissions, which also generally grants access to all the same files. So this does not generally result in any privilege escalation or increase in information access, only an additional, unintended _means_ by which the files could be accessed.\n\n### Patches\n_Has the problem been patched? What versions should users upgrade to?_\n\nnotebook 6.4.12\n\n### Workarounds\n_Is there a way for users to fix or remediate the vulnerability without upgrading?_\n\n- Do not run the notebook server in a directory with hidden files, use subdirectories\n- Use a custom ContentsManager with additional checks for `self.is_hidden(path)` prior to completing actions\n\n### References\n_Are there any links users can visit to find out more?_\n\n### For more information\nIf you have any questions or comments about this advisory:\n* Open an issue in [example link to repo](http://example.com)\n* Email us at [example email address](mailto:example@example.com)\n","status":"published","published":"2022-06-16T23:10:10Z","modified":"2023-12-06T01:02:14.974061Z","cvss":[{"version":"3.1","score":4.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N","level":"medium"}],"cwes":["CWE-425"],"updated_at":"2026-11-02T15:46:56.981655Z"},{"id":"UBUNTU-CVE-2022-29238","description":"Jupyter Notebook is a web-based notebook environment for interactive computing. Prior to version 6.4.12, authenticated requests to the notebook server with `ContentsManager.allow_hidden = False` only prevented listing the contents of hidden directories, not accessing individual hidden files or files in hidden directories (i.e. hidden files were 'hidden' but not 'inaccessible'). This could lead to notebook configurations allowing authenticated access to files that may reasonably be expected to be disallowed. Because fully authenticated requests are required, this is of relatively low impact. But if a server's root directory contains sensitive files whose only protection from the server is being hidden (e.g. `~/.ssh` while serving $HOME), then any authenticated requests could access files if their names are guessable. Such contexts also necessarily have full access to the server and therefore execution permissions, which also generally grants access to all the same files. So this does not generally result in any privilege escalation or increase in information access, only an additional, unintended means by which the files could be accessed. Version 6.4.12 contains a patch for this issue. There are currently no known workarounds.","status":"published","published":"2022-06-14T18:15:00Z","modified":"2026-02-04T04:04:16.635785Z","cvss":[{"version":"3.1","score":4.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N","level":"medium"},{"version":"3.1","score":4.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N","level":"medium"}],"updated_at":"2026-11-02T16:53:53.899276Z"},{"id":"BIT-jupyter-base-notebook-2022-29238","title":"Forced Browsing in Jupyter Notebook","description":"Jupyter Notebook is a web-based notebook environment for interactive computing. Prior to version 6.4.12, authenticated requests to the notebook server with `ContentsManager.allow_hidden = False` only prevented listing the contents of hidden directories, not accessing individual hidden files or files in hidden directories (i.e. hidden files were 'hidden' but not 'inaccessible'). This could lead to notebook configurations allowing authenticated access to files that may reasonably be expected to be disallowed. Because fully authenticated requests are required, this is of relatively low impact. But if a server's root directory contains sensitive files whose only protection from the server is being hidden (e.g. `~/.ssh` while serving $HOME), then any authenticated requests could access files if their names are guessable. Such contexts also necessarily have full access to the server and therefore execution permissions, which also generally grants access to all the same files. So this does not generally result in any privilege escalation or increase in information access, only an additional, unintended means by which the files could be accessed. Version 6.4.12 contains a patch for this issue. There are currently no known workarounds.","status":"published","published":"2024-03-06T10:54:12.861Z","modified":"2026-09-08T08:48:23.727327776Z","updated_at":"2026-11-02T15:28:31.782692Z"},{"id":"BIT-jupyter-notebook-2022-29238","title":"Forced Browsing in Jupyter Notebook","description":"Jupyter Notebook is a web-based notebook environment for interactive computing. Prior to version 6.4.12, authenticated requests to the notebook server with `ContentsManager.allow_hidden = False` only prevented listing the contents of hidden directories, not accessing individual hidden files or files in hidden directories (i.e. hidden files were 'hidden' but not 'inaccessible'). This could lead to notebook configurations allowing authenticated access to files that may reasonably be expected to be disallowed. Because fully authenticated requests are required, this is of relatively low impact. But if a server's root directory contains sensitive files whose only protection from the server is being hidden (e.g. `~/.ssh` while serving $HOME), then any authenticated requests could access files if their names are guessable. Such contexts also necessarily have full access to the server and therefore execution permissions, which also generally grants access to all the same files. So this does not generally result in any privilege escalation or increase in information access, only an additional, unintended means by which the files could be accessed. Version 6.4.12 contains a patch for this issue. There are currently no known workarounds.","status":"published","published":"2024-03-06T10:54:14.099Z","modified":"2026-09-08T08:48:23.804847736Z","updated_at":"2026-11-02T15:28:31.782692Z"},{"id":"MGASA-2022-0323","title":"Updated jupyter-notebook packages fix security vulnerability","description":"It was discovered that Jupyter Notebook incorrectly handled certain\nnotebooks. An attacker could possibly use this issue of lack of Content\nSecurity Policy in Nbconvert to perform cross-site scripting (XSS) attacks\non the notebook server. (CVE-2018-19351)\n\nIt was discovered that Jupyter Notebook incorrectly handled certain SVG\ndocuments. An attacker could possibly use this issue to perform cross-site\nscripting (XSS) attacks. (CVE-2018-21030)\n\nIt was discovered that Jupyter Notebook incorrectly filtered certain URLs\non the login page. An attacker could possibly use this issue to perform\nopen-redirect attack. (CVE-2019-10255)\n\nIt was discovered that Jupyter Notebook had an incomplete fix for\nCVE-2019-10255. An attacker could possibly use this issue to perform\nopen-redirect attack using empty netloc. (CVE-2019-10856)\n\nIt was discovered that Jupyter Notebook incorrectly handled the inclusion\nof remote pages on Jupyter server. An attacker could possibly use this\nissue to perform cross-site script inclusion (XSSI) attacks.\n(CVE-2019-9644)\n\nIt was discovered that Jupyter Notebook incorrectly filtered certain URLs\nto a notebook. An attacker could possibly use this issue to perform\nopen-redirect attack. (CVE-2020-26215)\n\nIt was discovered that Jupyter Notebook server access logs were not\nprotected. An attacker having access to the notebook server could possibly\nuse this issue to get access to steal sensitive information such as\nauth/cookies. (CVE-2022-24758)\n\nIt was discovered that Jupyter Notebook incorrectly configured hidden\nfiles on the server. An authenticated attacker could possibly use this\nissue to see unwanted sensitive hidden files from the server which may\nresult in getting full access to the server. (CVE-2022-29238)\n\nMoment.js: Path traversal  in moment.locale (CVE-2022-24785)\n\nmoment: inefficient parsing algorithim resulting in DoS (CVE-2022-31129)\n","status":"published","published":"2022-09-10T20:26:43Z","modified":"2026-04-16T04:43:57.344577826Z","updated_at":"2026-11-02T15:49:42.263076Z"},{"id":"openSUSE-SU-2024:12148-1","title":"jupyter-notebook-6.4.12-1.1 on GA media","description":"These are all security issues fixed in the jupyter-notebook-6.4.12-1.1 package on the GA media of openSUSE Tumbleweed.","status":"published","published":"2024-06-15T00:00:00Z","modified":"2026-02-04T03:03:45.459377Z","updated_at":"2026-11-02T16:58:35.485255Z"},{"id":"PYSEC-2022-212","description":"Jupyter Notebook is a web-based notebook environment for interactive computing. Prior to version 6.4.12, authenticated requests to the notebook server with `ContentsManager.allow_hidden = False` only prevented listing the contents of hidden directories, not accessing individual hidden files or files in hidden directories (i.e. hidden files were 'hidden' but not 'inaccessible'). This could lead to notebook configurations allowing authenticated access to files that may reasonably be expected to be disallowed. Because fully authenticated requests are required, this is of relatively low impact. But if a server's root directory contains sensitive files whose only protection from the server is being hidden (e.g. `~/.ssh` while serving $HOME), then any authenticated requests could access files if their names are guessable. Such contexts also necessarily have full access to the server and therefore execution permissions, which also generally grants access to all the same files. So this does not generally result in any privilege escalation or increase in information access, only an additional, unintended means by which the files could be accessed. Version 6.4.12 contains a patch for this issue. There are currently no known workarounds.","status":"published","published":"2022-06-14T18:15:00Z","modified":"2025-10-09T08:23:33.049617Z","updated_at":"2026-11-02T15:52:53.449407Z"},{"id":"USN-5585-1","title":"jupyter-notebook vulnerabilities","description":"It was discovered that Jupyter Notebook incorrectly handled certain notebooks.\nAn attacker could possibly use this issue of lack of Content Security Policy\nin Nbconvert to perform cross-site scripting (XSS) attacks on the notebook\nserver. This issue only affected Ubuntu 18.04 LTS. (CVE-2018-19351)\n\nIt was discovered that Jupyter Notebook incorrectly handled certain SVG\ndocuments. An attacker could possibly use this issue to perform cross-site\nscripting (XSS) attacks. This issue only affected Ubuntu 18.04 LTS.\n(CVE-2018-21030)\n\nIt was discovered that Jupyter Notebook incorrectly filtered certain URLs on\nthe login page. An attacker could possibly use this issue to perform\nopen-redirect attack. This issue only affected Ubuntu 18.04 LTS.\n(CVE-2019-10255)\n\nIt was discovered that Jupyter Notebook had an incomplete fix for\nCVE-2019-10255. An attacker could possibly use this issue to perform\nopen-redirect attack using empty netloc. (CVE-2019-10856)\n\nIt was discovered that Jupyter Notebook incorrectly handled the inclusion of\nremote pages on Jupyter server. An attacker could possibly use this issue to\nperform cross-site script inclusion (XSSI) attacks. This issue only affected\nUbuntu 18.04 LTS. (CVE-2019-9644)\n\nIt was discovered that Jupyter Notebook incorrectly filtered certain URLs to a\nnotebook. An attacker could possibly use this issue to perform open-redirect\nattack. This issue only affected Ubuntu 18.04 LTS and Ubuntu 20.04 LTS.\n(CVE-2020-26215)\n\nIt was discovered that Jupyter Notebook server access logs were not protected.\nAn attacker having access to the notebook server could possibly use this issue\nto get access to steal sensitive information such as auth/cookies.\n(CVE-2022-24758)\n\nIt was discovered that Jupyter Notebook incorrectly configured hidden files on\nthe server. An authenticated attacker could possibly use this issue to see\nunwanted sensitive hidden files from the server which may result in getting\nfull access to the server. This issue only affected Ubuntu 20.04 LTS and\nUbuntu 22.04 LTS. (CVE-2022-29238)\n","status":"published","published":"2022-08-30T09:26:17Z","modified":"2026-04-27T16:32:22.163085376Z","updated_at":"2026-11-02T16:58:16.20937Z"}]}}
