PSA-2026-0001: Path traversal in Shiny for Python bookmark restore
Source advisory: GitHub Security Advisory GHSA-47c3-hpmg-7j6p
Common Vulnerabilities and Exposures (CVE) ID: CVE-2026-108258
Common Weakness Enumeration (CWE): CWE-22 (Improper Limitation of a Pathname to a Restricted Directory)
Severity: Medium, with a Common Vulnerability Scoring System (CVSS) v4.0 score of 6.9 (
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N)Affected versions: the shiny package for Python, 1.4.0 through 1.6.3
Fixed version: 1.6.4
Description
A path traversal vulnerability exists in the bookmark-restore handler in Posit Shiny for Python before 1.6.4. Remote attackers can use the _state_id_ query-string parameter to make the server read files from attacker-chosen paths.
On applications that set bookmark_store="server" and use ui.input_file(), attackers can also read file contents. In other configurations, attackers can only probe whether a path exists and is valid.
Resolution
Upgrade to the shiny package version 1.6.4 or later:
Terminal
pip install --upgrade shinyNo configuration workaround fully mitigates this issue on affected versions. If you cannot upgrade immediately, strip the _state_id_ parameter from incoming query strings at a reverse proxy or load balancer.
Credit
Reported by @0xRenSec.