CVE-2026-108258
Received Received - Intake

Path Traversal in Shiny for Python

Vulnerability report for CVE-2026-108258, including description, CVSS score, EPSS score, affected products, exploitability, helpful resources, and attack-flow context.

Publication date: 2026-10-09

Last updated on: 2026-10-09

Assigner: GitHub, Inc.

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.

CVSS Scores

EPSS Scores

Probability:
Percentile:

Meta Information

Published
2026-10-09
Last Modified
2026-10-09
Generated
2026-10-10
AI Q&A
2026-10-10
EPSS Evaluated
N/A
NVD

Affected Vendors & Products

Showing 1 associated CPE
Vendor Product Version / Range
posit-dev py-shiny >= 1.4.0, < 1.6.4

Helpful Resources

Exploitability

CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-22 The product uses external input to construct a pathname that is intended to identify a file or directory that is located underneath a restricted parent directory, but the product does not properly neutralize special elements within the pathname that can cause the pathname to resolve to a location that is outside of the restricted directory.

Attack-Flow Graph

AI Quick Actions

Instant insights powered by AI
Executive Summary

Shiny for Python versions 1.4.0 to 1.6.4 have a vulnerability where the bookmark restore feature accepts a client-supplied state_id without proper validation. This allows unauthenticated requests to use path traversal or absolute paths to access files outside the intended bookmark directory, including input.json and values.json. The issue is fixed in version 1.6.4.

Detection Guidance

Check Shiny for Python version. If it is between 1.4.0 and 1.6.4, the system is vulnerable. Run: pip show shiny or python -c "import shiny; print(shiny.__version__)"

Impact Analysis

An attacker could read sensitive files on the server, such as input.json or values.json, by crafting malicious state_id values. If the application uses ui.input_file() and has bookmark_store set to server, the attacker could also copy and expose arbitrary files from the system.

Compliance Impact

This vulnerability could lead to unauthorized access to sensitive data, potentially violating GDPR (data protection) and HIPAA (health information privacy) requirements. Exposure of files like input.json or values.json may result in data breaches, triggering compliance violations and legal penalties.

Mitigation Strategies

Upgrade Shiny for Python to version 1.6.4 or later immediately. If upgrading is not possible, disable bookmark functionality or restrict access to the application until patched.

Chat Assistant

Ask questions about this CVE
Hi! I’m here to help you understand CVE-2026-108258. Ask me anything about the vulnerability, its impact, or mitigation strategies.
0/70

EPSS Chart