GitHub Advisoryadvisory · PyPI

GHSA-w8wv-vfpc-hw2w NiceGUI: Upload filename sanitization bypass via backslashes allows path traversal on Windows

MEDIUM Published 2026-04-08 Modified 2026-04-09 Official page ↗
Aliases
CVE-2026-39844
Ecosystem
PyPI
Packages
nicegui
Severity
Moderate
CVSS vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N
Weaknesses
CWE-22
Reviewed
2026-04-08

Affected packages

• PyPI nicegui: < 3.10.0 → fixed in 3.10.0

Description

Summary The upload filename sanitization introduced in GHSA-9ffm-fxg3-xrhh uses `PurePosixPath(filename).name` to strip path components. Since `PurePosixPath` only recognizes forward slashes (`/`) as path separators, an attacker can bypass this sanitization on Windows by using backslashes (`\`) in the upload filename. Applications that construct file paths using `file.name` (a pattern demonstrated in NiceGUI's bundled examples) are vulnerable to arbitrary file write on Windows. Details The sanitization in `nicegui/elements/upload_files.py` uses: ```python filename = PurePosixPath(upload.filename or '').name ``` `PurePosixPath` treats backslashes as literal characters, not path separators: ```python >>> PurePosixPath('..\\..\\secret\\evil.txt').name '..\\..\\secret\\evil.txt' # Not stripped! ``` When this filename is used in a path operation on Windows (e.g., `Path('uploads') / file.name`), Windows `Path` interprets backslashes as directory separators, resolving the path outside the intended directory. Impact On Windows deployments of NiceGUI applications that use `file.name` in path construction: • Arbitrary file write outside the intended upload directory • Potential remote code execution through overwriting application files or placing executables in known locations • Data integrity loss through overwriting existing files Linux and macOS are not affected, as they treat backslashes as literal filename characters.

Related

Alias · CVE (1)

  • CVE-2026-39844 NiceGUI is a Python-based UI framework. vulnerability

Weakness · CWE (1)

  • CWE-22 Improper Limitation of a Pathname to a Restricted Directory weakness

References