Skip to content
Heist/ feed
Back to feed
Medium

NiceGUI has a Path Traversal in NiceGUI Upload Filename on Windows via Backslash Bypass of PurePosixPath Sanitization

Type: advisorySources: OSV

NiceGUI is a Python-based UI framework. Prior to 3.10.0, 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. This vulnerability is fixed in 3.10.0.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-39844
Confirmed fixed CVEs
Not specified
Updated in this feed
8 Nov 2026, 02:19 UTC · Revision 1

Source evidence

NiceGUI has a Path Traversal in NiceGUI Upload Filename on Windows via Backslash Bypass of PurePosixPath Sanitization

core-osv · Original source

Published 8 Apr 2026, 20:13 UTC

NiceGUI is a Python-based UI framework. Prior to 3.10.0, 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. This vulnerability is fixed in 3.10.0.

osv:CVE-2026-39844
Complete source record
{
  "id": "de88cdd0e37f406db381d777494402e3a9b2dd068b27b6d5f18f34392b8c5124",
  "url": "https://osv.dev/vulnerability/CVE-2026-39844",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "NiceGUI has a Path Traversal in NiceGUI Upload Filename on Windows via Backslash Bypass of PurePosixPath Sanitization",
    "summary": "NiceGUI is a Python-based UI framework. Prior to 3.10.0, 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. This vulnerability is fixed in 3.10.0.",
    "evidence": "osv:CVE-2026-39844",
    "products": [],
    "severity": "medium",
    "structured": {
      "id": "CVE-2026-39844",
      "aliases": [
        "CVE-2026-39844",
        "GHSA-w8wv-vfpc-hw2w",
        "PYSEC-2026-2234"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/zauberzeug/nicegui",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "d38a702e3af2da5b0708f689be8d71413fc77056"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "3.10.0"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "d38a702e3af2da5b0708f689be8d71413fc77056"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "d38a702e3af2da5b0708f689be8d71413fc77056"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "v3.10.0"
                  },
                  {
                    "cpe": "cpe:2.3:a:zauberzeug:nicegui:*:*:*:*:*:*:*:*",
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "3.10.0"
                      }
                    ],
                    "source": "CPE_RANGE"
                  }
                ]
              }
            }
          ],
          "versions": [
            "v3.9.0",
            "v3.8.0",
            "v3.7.1",
            "v3.7.0",
            "v3.6.1",
            "v3.6.0",
            "v3.5.0",
            "v3.4.1",
            "v3.4.0",
            "v3.3.1",
            "v3.3.0",
            "v3.2.0",
            "v3.1.0",
            "v3.0.4",
            "v3.0.3",
            "v3.0.2",
            "v3.0.1",
            "v3.0.0",
            "v2.24.2",
            "v2.24.1",
            "v2.24.0",
            "v2.23.3",
            "v2.23.2",
            "v2.23.1",
            "v2.23.0",
            "v2.22.1",
            "v2.22.0",
            "v2.21.0",
            "v2.20.0",
            "v2.19.0",
            "v2.18.0",
            "v2.17.0",
            "v2.16.1",
            "v2.16.0",
            "v2.15.0",
            "v2.14.1",
            "v2.14.0",
            "v2.13.0",
            "v2.12.1",
            "v2.12.0",
            "v2.11.1",
            "v2.11.0",
            "v2.10.1",
            "v2.10.0",
            "v2.9.1",
            "v2.9.0",
            "v2.8.1",
            "v2.8.0",
            "v2.7.0",
            "v2.5.0",
            "v2.4.0",
            "v2.3.0",
            "v2.2.0",
            "v2.1.0",
            "v2.0.1",
            "v2.0.0",
            "v1.4.37",
            "v1.4.36",
            "v1.4.35",
            "v1.4.34",
            "v1.4.33",
            "v1.4.32",
            "v1.4.31",
            "v1.4.30",
            "v1.4.29",
            "v1.4.28",
            "v1.4.27",
            "v1.4.26",
            "v1.4.25",
            "v1.4.24",
            "v1.4.23",
            "v1.4.22",
            "v1.4.21",
            "v1.4.20",
            "v1.4.19",
            "v1.4.18",
            "v1.4.17",
            "v1.4.16",
            "v1.4.15",
            "v1.4.14",
            "v1.4.13",
            "v1.4.12",
            "v1.4.11",
            "v1.4.10",
            "v1.4.9",
            "v1.4.8",
            "v1.4.7",
            "v1.4.6",
            "v1.4.5",
            "v1.4.4",
            "v1.4.3",
            "v1.4.2",
            "v1.4.1",
            "v1.4.0",
            "v1.3.16",
            "v1.3.15",
            "v1.3.14",
            "v1.3.13",
            "v1.3.12",
            "v1.3.11",
            "v1.3.10",
            "v1.3.9",
            "v1.3.8",
            "v1.3.7",
            "v1.3.6",
            "v1.3.5",
            "v1.3.4",
            "v1.3.2",
            "v1.3.1",
            "v1.3.0",
            "v1.2.6",
            "v1.2.5",
            "v1.2.4",
            "v1.2.3",
            "v1.2.2",
            "v1.1.11",
            "v1.1.10",
            "v1.1.9",
            "v1.1.8",
            "v1.1.7",
            "v1.1.6",
            "v1.1.5",
            "v1.1.4",
            "v1.1.3",
            "v1.1.2",
            "v1.1.1",
            "v1.1.0",
            "v1.0.10",
            "v1.0.9",
            "v0.9.26",
            "v1.0.8",
            "v1.0.7",
            "v1.0.6",
            "v1.0.5",
            "v1.0.4",
            "v1.0.3",
            "v1.0.2",
            "v1.0.1",
            "v1.0.0",
            "v0.9.25",
            "v0.9.24",
            "v0.9.22",
            "v0.9.21",
            "v0.9.20",
            "v0.9.19",
            "v0.9.18",
            "v0.9.17",
            "v0.9.16",
            "v0.9.15",
            "v0.9.14",
            "v0.9.13",
            "v0.9.12",
            "v0.9.11",
            "v0.9.10",
            "v0.9.9",
            "v0.9.8",
            "v0.9.7",
            "v0.9.6",
            "v0.9.5",
            "v0.9.4",
            "v0.9.3",
            "v0.9.2",
            "v0.9.1",
            "v0.9.0",
            "v0.8.16",
            "v0.8.15",
            "v0.8.14",
            "v0.8.13",
            "v0.8.12",
            "v0.8.11",
            "v0.8.10",
            "v0.8.9",
            "v0.8.8",
            "v0.8.4",
            "v0.8.3",
            "v0.8.2",
            "v0.8.1",
            "v0.8.0",
            "v0.7.28",
            "v0.7.27",
            "v0.7.26",
            "v0.7.25",
            "v0.7.24",
            "v0.7.23",
            "v0.7.22",
            "v0.7.21",
            "v0.7.20",
            "v0.7.19",
            "v0.7.18",
            "v0.7.17",
            "v0.7.16",
            "v0.7.15",
            "v0.7.14",
            "v0.7.13",
            "v0.7.12",
            "v0.7.11",
            "v0.7.10",
            "v0.7.9",
            "v0.7.8",
            "v0.7.7",
            "v0.7.6",
            "v0.7.5",
            "v0.7.4",
            "v0.7.3",
            "v0.7.2",
            "v0.7.1",
            "v0.7.0",
            "v0.6.13",
            "v0.6.12",
            "v0.6.11",
            "v0.6.10",
            "v0.6.9",
            "v0.6.8",
            "v0.6.7",
            "v0.6.6",
            "v0.6.5",
            "v0.6.4",
            "v0.6.3",
            "v0.6.2",
            "v0.6.1",
            "v0.6.0",
            "v0.5.9",
            "v0.5.8",
            "v0.5.7",
            "v0.5.6",
            "v0.5.5",
            "v0.5.4",
            "v0.5.2",
            "v0.5.1",
            "v0.5.0",
            "v0.4.15",
            "v0.4.14",
            "v0.4.13",
            "v0.4.12",
            "v0.4.11",
            "v0.4.10",
            "v0.4.9",
            "v0.4.8",
            "v0.4.7",
            "v0.4.6",
            "v0.4.5",
            "v0.4.4",
            "v0.4.3",
            "v0.4.2",
            "v0.4.1",
            "v0.4.0",
            "v0.3.9",
            "v0.3.8",
            "v0.3.7",
            "v0.3.6",
            "v0.3.5",
            "v0.3.4",
            "v0.3.3",
            "v0.3.2",
            "v0.2.15",
            "v0.2.14",
            "v0.2.13",
            "v0.2.12",
            "v0.2.4",
            "v0.2.10",
            "v0.2.9",
            "v0.2.8",
            "v0.2.7",
            "v0.2.6",
            "v0.2.5",
            "v0.2.3",
            "v0.2.2",
            "v0.2.1",
            "v0.2.0",
            "v0.1.2"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-39844.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:53.018632805Z",
      "provider": "osv",
      "references": [
        "https://github.com/zauberzeug/nicegui/releases/tag/v3.10.0",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/39xxx/CVE-2026-39844.json",
        "https://github.com/zauberzeug/nicegui/security/advisories/GHSA-w8wv-vfpc-hw2w",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-39844",
        "https://github.com/zauberzeug/nicegui/commit/d38a702e3af2da5b0708f689be8d71413fc77056"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-22"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/39xxx/CVE-2026-39844.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-39844",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 521722,
  "published_at": "2026-04-08T20:13:31.935+00:00"
}