CVE-2026-108258 Shiny for Python - Path traversal in bookmark restore
An unauthenticated attacker can exploit path traversal in Shiny for Python to read or expose arbitrary server files via bookmark restore.
- Exploited in the wild
- Not known
- Login needed
- Not needed
- Attackable
- Over the internet
- Victim action needed
- Not needed
- Fix
- Available
What is CVE-2026-108258?
CVE-2026-108258 is a medium-severity path traversal vulnerability in posit-dev py-shiny, published on 9 Oct 2026. An attacker can exploit it over the internet without logging in, with no action from the victim.
Official description
Shiny for Python is a framework for building interactive web applications in Python. From 1.4.0 until 1.6.4, bookmark restore accepts a client-supplied state_id and joins it into the server-side shiny_bookmarks directory without validating that it is a single safe path segment. An unauthenticated request can use parent-directory segments or an absolute path to make the server open input.json and values.json outside the bookmark store, even when bookmark_store is set to disable. In applications configured with bookmark_store set to server and using ui.input_file(), the restore handler can additionally copy and expose an attacker-selected file from an attacker-selected directory. This issue is fixed in version 1.6.4.
Weakness: CWE-22
Which versions are affected by CVE-2026-108258?
3 open source packages ship an affected version, including shiny.
| Package | Affected | Fixed in |
|---|---|---|
shiny PyPI | From 1.4.0 | 1.6.4 |
shiny PyPI | From 1.4.0 | 1.6.4 |
shiny PyPI | From 1.4.0 | 1.6.4 |
How do I fix CVE-2026-108258?
Upgrade shiny to 1.6.4 or later.
Upgrade, and resolve every user-supplied path against an allowed base folder before opening it. More about Path traversal.
Is CVE-2026-108258 being exploited?
There is no known exploitation of CVE-2026-108258 in the wild and no public exploit code.
Sources
Also known as GHSA-47c3-hpmg-7j6p, PYSEC-2026-4300.