Skip to content
Heist/ feed
Back to feed
Medium

python-werkzeug — security advisory

Type: advisorySources: OSVAdvisory ID: UBUNTU-CVE-2026-102598

Werkzeug is a comprehensive WSGI web application library. Prior to 3.1.9, the safe_join function used by send_from_directory can allow a NUL: special-device path because safe_join checks the Windows device name without first removing an empty NTFS ADS marker. The trigger is that an application runs on Windows with NTFS and serves a user-specified path ending in a special device name such as NUL:. The attack mechanism is that a requested path ends in a Windows special device name with an empty ADS marker. The impact is that the special device opens successfully and the file read hangs indefinitely. This issue is fixed in version 3.1.9.

Products
python-werkzeug
Affected versions
0.10.4+dfsg1-1ubuntu1, 0.10.4+dfsg1-1ubuntu1.1, 0.10.4+dfsg1-1ubuntu1.2, 0.10.4+dfsg1-1ubuntu1.2+esm1, 0.10.4+dfsg1-1ubuntu1.2+esm2, 0.12.2+dfsg1-2, 0.13+dfsg1-1, 0.14.1+dfsg1-1, 0.14.1+dfsg1-1ubuntu0.1, 0.14.1+dfsg1-1ubuntu0.2, 0.14.1+dfsg1-1ubuntu0.2+esm1, 0.14.1+dfsg1-4, 0.15.6+dfsg1-1, 0.16.0+dfsg1-1, 0.16.1+dfsg1-1ubuntu1, 0.16.1+dfsg1-2, 0.16.1+dfsg1-2ubuntu0.1, 0.16.1+dfsg1-2ubuntu0.2, 1.0.1+dfsg1-2, 2.0.2+dfsg1-1, 2.0.2+dfsg1-1ubuntu0.22.04.1, 2.0.2+dfsg1-1ubuntu0.22.04.2, 2.0.2+dfsg1-1ubuntu0.22.04.3, 2.2.2-3, 3.0.1-1, 3.0.1-2, 3.0.1-3, 3.0.1-3ubuntu0.1, 3.0.1-3ubuntu0.2, 3.1.3-2, 3.1.4-1, 3.1.5-1, 3.1.8-1
Fixed versions
Not specified
CVEs
CVE-2026-102598
Confirmed fixed CVEs
Not specified
Updated in this feed
31 Oct 2026, 02:53 UTC · Revision 1

Source evidence

UBUNTU-CVE-2026-102598

core-osv · Original source

Published 29 Sept 2026, 16:17 UTC

Werkzeug is a comprehensive WSGI web application library. Prior to 3.1.9, the safe_join function used by send_from_directory can allow a NUL: special-device path because safe_join checks the Windows device name without first removing an empty NTFS ADS marker. The trigger is that an application runs on Windows with NTFS and serves a user-specified path ending in a special device name such as NUL:. The attack mechanism is that a requested path ends in a Windows special device name with an empty ADS marker. The impact is that the special device opens successfully and the file read hangs indefinitely. This issue is fixed in version 3.1.9.

osv:UBUNTU-CVE-2026-102598

python-werkzeug

Fixed versions: Not specified

python-werkzeug

Fixed versions: Not specified

python-werkzeug

Fixed versions: Not specified

python-werkzeug

Fixed versions: Not specified

python-werkzeug

Fixed versions: Not specified

python-werkzeug

Fixed versions: Not specified

python-werkzeug

Fixed versions: Not specified

Complete source record
{
  "id": "6258f129245f68b3609c92a33ca3459d346569d926ff5eaf8ca74f0d537f085b",
  "url": "https://osv.dev/vulnerability/UBUNTU-CVE-2026-102598",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "UBUNTU-CVE-2026-102598",
    "summary": "Werkzeug is a comprehensive WSGI web application library. Prior to 3.1.9, the safe_join function used by send_from_directory can allow a NUL: special-device path because safe_join checks the Windows device name without first removing an empty NTFS ADS marker. The trigger is that an application runs on Windows with NTFS and serves a user-specified path ending in a special device name such as NUL:. The attack mechanism is that a requested path ends in a Windows special device name with an empty ADS marker. The impact is that the special device opens successfully and the file read hangs indefinitely. This issue is fixed in version 3.1.9.",
    "evidence": "osv:UBUNTU-CVE-2026-102598",
    "products": [
      {
        "name": {
          "value": "python-werkzeug",
          "evidence": "/affected/0/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [],
        "affected_versions": [
          {
            "value": "0.10.4+dfsg1-1ubuntu1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "0.10.4+dfsg1-1ubuntu1.1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "0.10.4+dfsg1-1ubuntu1.2",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "0.10.4+dfsg1-1ubuntu1.2+esm1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "0.10.4+dfsg1-1ubuntu1.2+esm2",
            "evidence": "/affected/0/versions"
          }
        ]
      },
      {
        "name": {
          "value": "python-werkzeug",
          "evidence": "/affected/1/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [],
        "affected_versions": [
          {
            "value": "0.12.2+dfsg1-2",
            "evidence": "/affected/1/versions"
          },
          {
            "value": "0.13+dfsg1-1",
            "evidence": "/affected/1/versions"
          },
          {
            "value": "0.14.1+dfsg1-1",
            "evidence": "/affected/1/versions"
          },
          {
            "value": "0.14.1+dfsg1-1ubuntu0.1",
            "evidence": "/affected/1/versions"
          },
          {
            "value": "0.14.1+dfsg1-1ubuntu0.2",
            "evidence": "/affected/1/versions"
          },
          {
            "value": "0.14.1+dfsg1-1ubuntu0.2+esm1",
            "evidence": "/affected/1/versions"
          }
        ]
      },
      {
        "name": {
          "value": "python-werkzeug",
          "evidence": "/affected/2/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [],
        "affected_versions": [
          {
            "value": "0.14.1+dfsg1-4",
            "evidence": "/affected/2/versions"
          },
          {
            "value": "0.15.6+dfsg1-1",
            "evidence": "/affected/2/versions"
          },
          {
            "value": "0.16.0+dfsg1-1",
            "evidence": "/affected/2/versions"
          },
          {
            "value": "0.16.1+dfsg1-1ubuntu1",
            "evidence": "/affected/2/versions"
          },
          {
            "value": "0.16.1+dfsg1-2",
            "evidence": "/affected/2/versions"
          },
          {
            "value": "0.16.1+dfsg1-2ubuntu0.1",
            "evidence": "/affected/2/versions"
          },
          {
            "value": "0.16.1+dfsg1-2ubuntu0.2",
            "evidence": "/affected/2/versions"
          }
        ]
      },
      {
        "name": {
          "value": "python-werkzeug",
          "evidence": "/affected/3/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [],
        "affected_versions": [
          {
            "value": "1.0.1+dfsg1-2",
            "evidence": "/affected/3/versions"
          },
          {
            "value": "2.0.2+dfsg1-1",
            "evidence": "/affected/3/versions"
          },
          {
            "value": "2.0.2+dfsg1-1ubuntu0.22.04.1",
            "evidence": "/affected/3/versions"
          },
          {
            "value": "2.0.2+dfsg1-1ubuntu0.22.04.2",
            "evidence": "/affected/3/versions"
          },
          {
            "value": "2.0.2+dfsg1-1ubuntu0.22.04.3",
            "evidence": "/affected/3/versions"
          }
        ]
      },
      {
        "name": {
          "value": "python-werkzeug",
          "evidence": "/affected/4/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [],
        "affected_versions": [
          {
            "value": "2.2.2-3",
            "evidence": "/affected/4/versions"
          },
          {
            "value": "3.0.1-1",
            "evidence": "/affected/4/versions"
          },
          {
            "value": "3.0.1-2",
            "evidence": "/affected/4/versions"
          },
          {
            "value": "3.0.1-3",
            "evidence": "/affected/4/versions"
          },
          {
            "value": "3.0.1-3ubuntu0.1",
            "evidence": "/affected/4/versions"
          },
          {
            "value": "3.0.1-3ubuntu0.2",
            "evidence": "/affected/4/versions"
          }
        ]
      },
      {
        "name": {
          "value": "python-werkzeug",
          "evidence": "/affected/5/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [],
        "affected_versions": [
          {
            "value": "3.1.5-1",
            "evidence": "/affected/5/versions"
          },
          {
            "value": "3.1.8-1",
            "evidence": "/affected/5/versions"
          }
        ]
      },
      {
        "name": {
          "value": "python-werkzeug",
          "evidence": "/affected/6/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [],
        "affected_versions": [
          {
            "value": "3.1.3-2",
            "evidence": "/affected/6/versions"
          },
          {
            "value": "3.1.4-1",
            "evidence": "/affected/6/versions"
          },
          {
            "value": "3.1.5-1",
            "evidence": "/affected/6/versions"
          }
        ]
      }
    ],
    "severity": "medium",
    "structured": {
      "id": "UBUNTU-CVE-2026-102598",
      "aliases": [
        "UBUNTU-CVE-2026-102598"
      ],
      "metrics": [
        {
          "type": "CVSS_V4",
          "score": "CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N"
        },
        {
          "type": "Ubuntu",
          "score": "medium"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "0"
                }
              ]
            }
          ],
          "package": {
            "name": "python-werkzeug",
            "purl": "pkg:deb/ubuntu/python-werkzeug?arch=source&distro=esm-infra%2Fxenial",
            "ecosystem": "Ubuntu:Pro:16.04:LTS"
          },
          "versions": [
            "0.10.4+dfsg1-1ubuntu1",
            "0.10.4+dfsg1-1ubuntu1.1",
            "0.10.4+dfsg1-1ubuntu1.2",
            "0.10.4+dfsg1-1ubuntu1.2+esm1",
            "0.10.4+dfsg1-1ubuntu1.2+esm2"
          ],
          "database_specific": {
            "source": "https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-102598.json"
          },
          "ecosystem_specific": {
            "binaries": [
              {
                "binary_name": "python-werkzeug",
                "binary_version": "0.10.4+dfsg1-1ubuntu1.2+esm2"
              },
              {
                "binary_name": "python3-werkzeug",
                "binary_version": "0.10.4+dfsg1-1ubuntu1.2+esm2"
              }
            ]
          }
        },
        {
          "ranges": [
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "0"
                }
              ]
            }
          ],
          "package": {
            "name": "python-werkzeug",
            "purl": "pkg:deb/ubuntu/python-werkzeug?arch=source&distro=esm-infra%2Fbionic",
            "ecosystem": "Ubuntu:Pro:18.04:LTS"
          },
          "versions": [
            "0.12.2+dfsg1-2",
            "0.13+dfsg1-1",
            "0.14.1+dfsg1-1",
            "0.14.1+dfsg1-1ubuntu0.1",
            "0.14.1+dfsg1-1ubuntu0.2",
            "0.14.1+dfsg1-1ubuntu0.2+esm1"
          ],
          "database_specific": {
            "source": "https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-102598.json"
          },
          "ecosystem_specific": {
            "binaries": [
              {
                "binary_name": "python-werkzeug",
                "binary_version": "0.14.1+dfsg1-1ubuntu0.2+esm1"
              },
              {
                "binary_name": "python3-werkzeug",
                "binary_version": "0.14.1+dfsg1-1ubuntu0.2+esm1"
              }
            ]
          }
        },
        {
          "ranges": [
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "0"
                }
              ]
            }
          ],
          "package": {
            "name": "python-werkzeug",
            "purl": "pkg:deb/ubuntu/python-werkzeug?arch=source&distro=focal",
            "ecosystem": "Ubuntu:20.04:LTS"
          },
          "versions": [
            "0.14.1+dfsg1-4",
            "0.15.6+dfsg1-1",
            "0.16.0+dfsg1-1",
            "0.16.1+dfsg1-1ubuntu1",
            "0.16.1+dfsg1-2",
            "0.16.1+dfsg1-2ubuntu0.1",
            "0.16.1+dfsg1-2ubuntu0.2"
          ],
          "database_specific": {
            "source": "https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-102598.json"
          },
          "ecosystem_specific": {
            "binaries": [
              {
                "binary_name": "python3-werkzeug",
                "binary_version": "0.16.1+dfsg1-2ubuntu0.2"
              }
            ]
          }
        },
        {
          "ranges": [
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "0"
                }
              ]
            }
          ],
          "package": {
            "name": "python-werkzeug",
            "purl": "pkg:deb/ubuntu/python-werkzeug?arch=source&distro=jammy",
            "ecosystem": "Ubuntu:22.04:LTS"
          },
          "versions": [
            "1.0.1+dfsg1-2",
            "2.0.2+dfsg1-1",
            "2.0.2+dfsg1-1ubuntu0.22.04.1",
            "2.0.2+dfsg1-1ubuntu0.22.04.2",
            "2.0.2+dfsg1-1ubuntu0.22.04.3"
          ],
          "database_specific": {
            "source": "https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-102598.json"
          },
          "ecosystem_specific": {
            "binaries": [
              {
                "binary_name": "python3-werkzeug",
                "binary_version": "2.0.2+dfsg1-1ubuntu0.22.04.3"
              }
            ]
          }
        },
        {
          "ranges": [
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "0"
                }
              ]
            }
          ],
          "package": {
            "name": "python-werkzeug",
            "purl": "pkg:deb/ubuntu/python-werkzeug?arch=source&distro=noble",
            "ecosystem": "Ubuntu:24.04:LTS"
          },
          "versions": [
            "2.2.2-3",
            "3.0.1-1",
            "3.0.1-2",
            "3.0.1-3",
            "3.0.1-3ubuntu0.1",
            "3.0.1-3ubuntu0.2"
          ],
          "database_specific": {
            "source": "https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-102598.json"
          },
          "ecosystem_specific": {
            "binaries": [
              {
                "binary_name": "python3-werkzeug",
                "binary_version": "3.0.1-3ubuntu0.2"
              }
            ]
          }
        },
        {
          "ranges": [
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "0"
                }
              ]
            }
          ],
          "package": {
            "name": "python-werkzeug",
            "purl": "pkg:deb/ubuntu/python-werkzeug?arch=source&distro=stonking",
            "ecosystem": "Ubuntu:26.10"
          },
          "versions": [
            "3.1.5-1",
            "3.1.8-1"
          ],
          "database_specific": {
            "source": "https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-102598.json"
          },
          "ecosystem_specific": {
            "binaries": [
              {
                "binary_name": "python3-werkzeug",
                "binary_version": "3.1.8-1"
              }
            ]
          }
        },
        {
          "ranges": [
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "0"
                }
              ]
            }
          ],
          "package": {
            "name": "python-werkzeug",
            "purl": "pkg:deb/ubuntu/python-werkzeug?arch=source&distro=resolute",
            "ecosystem": "Ubuntu:26.04:LTS"
          },
          "versions": [
            "3.1.3-2",
            "3.1.4-1",
            "3.1.5-1"
          ],
          "database_specific": {
            "source": "https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-102598.json"
          },
          "ecosystem_specific": {
            "binaries": [
              {
                "binary_name": "python3-werkzeug",
                "binary_version": "3.1.5-1"
              }
            ]
          }
        }
      ],
      "modified": "2026-10-17T12:59:43.677206435Z",
      "provider": "osv",
      "upstream": [
        "CVE-2026-102598"
      ],
      "references": [
        "https://ubuntu.com/security/CVE-2026-102598",
        "https://www.cve.org/CVERecord?id=CVE-2026-102598",
        "https://github.com/pallets/werkzeug/commit/8d77320bcdf3a34941ec06dcf16b03c065cd21b6",
        "https://github.com/pallets/werkzeug/pull/3309",
        "https://github.com/pallets/werkzeug/releases/tag/3.1.9",
        "https://github.com/pallets/werkzeug/security/advisories/GHSA-g6x2-hccm-hh4m"
      ]
    },
    "related_cves": [
      {
        "value": "CVE-2026-102598",
        "evidence": "/upstream"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 359737,
  "published_at": "2026-09-29T16:17:00+00:00"
}