PSA-2026-0001: Path traversal in Shiny for Python bookmark restore

Security
Posit Security Advisory (PSA) for a path traversal vulnerability in the bookmark-restore handler in Posit Shiny for Python
Published

September 14, 2026

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.

Note

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 shiny

No 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.

Back to top