Skip to main content
← All vulnerabilities
CVE-2026-108258PYSEC-2026-4300GHSA-47C3-HPMG-7J6P

Shiny for Python - Path traversal in bookmark restore

Published
Last modified
published
Not listed in CISA KEV
Fix
Fixed in 1.6.4
None on Exploit-DB, Metasploit or GitHub
  • Exploitation: none
  • Automatable: yes
  • Technical impact: partial

Summary

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.

Timeline

  1. CVE published
  2. CISA SSVC assessment

    Exploitation: none · Automatable: yes · Technical impact: partial

  3. Record last updated

Affected versions

  • posit-dev py-shiny

    From 1.4.0 · fixed in 1.6.4

  • shinyPyPI

    From 1.4.0 · fixed in 1.6.4

References 3

GitHub · posit-dev/py-shiny