Skip to content

Update dependency werkzeug to v3.1.9 [SECURITY] - #591

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/pypi-werkzeug-vulnerability
Open

renovate[bot] wants to merge 1 commit into
mainfrom
renovate/pypi-werkzeug-vulnerability

Conversation

@renovate

@renovate renovate Bot commented Oct 13, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
werkzeug (changelog) 3.1.6 → 3.1.9 age confidence

Warning

Some dependencies could not be looked up. Check the Dependency Dashboard for more information.


Werkzeug safe_join() allows Windows special device names

CVE-2026-102598 / GHSA-g6x2-hccm-hh4m

More information

Details

Werkzeug's safe_join function allows Windows device names as filenames when they have an empty ADS marker on NTFS.

This was previously reported as GHSA-hgf8-39gv-g3f2, but the added filtering failed to account for the fact Windows allows special device names with an empty ADS marker, such as NUL:.

send_from_directory uses safe_join to safely serve files at user-specified paths under a directory. If the application is running on Windows and NTFS, and the requested path ends with a special device name, the file will be opened successfully, but reading will hang indefinitely.

Severity

  • CVSS Score: 6.3 / 10 (Medium)
  • Vector String: 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

References

This data is provided by the GitHub Advisory Database (CC-BY 4.0).


Release Notes

pallets/werkzeug (werkzeug)

v3.1.9

Compare Source

Released 2026-09-27

  • safe_join on Windows does not allow special devices names with empty ADS
    markers on NTFS. :ghsa:g6x2-hccm-hh4m
  • ProfilerMiddleware uses profiling.tracing on Python 3.15.
    :issue:3207
  • uri_to_iri and iri_to_uri preserve empty username, password, and
    port 0. :issue:3189
  • Improve performance of parse_options_header. :pr:3231
  • Improve performance of parse_etags. :pr:3231
  • Improve performance of parse_cookie. :pr:3231
  • get_host also checks that the port is in the valid range. :pr:3236
  • The int URL converter returns a 404 instead of 500 error when the value
    is longer than sys.get_int_max_str_digits(). :issue:3237
  • Improve debugger PIN generation from cgroup data inside Podman.
    :issue:3245
  • Authorization parsing basic auth disallows non-base64 characters.
    :pr:3248
  • application/x-www-form-urlencoded form data is no longer limited to
    max_form_memory_size, only max_content_length. :pr:3251
  • LimitedStream.readinto does not resize the buffer when it reads less
    than the remaining size. :pr:3253
  • Rules with 10 or more converters in a single part assign matched values
    correctly. :pr:3254
  • The invalid Range suffix length -0 is no longer accepted. :pr:3255

v3.1.8

Compare Source

Released 2026-04-02

  • Request.host and get_host return the empty string if the header is
    missing or has invalid characters. :issue:3142

v3.1.7

Compare Source

Released 2026-03-23

  • parse_list_header preserves partially quoted items, discards empty
    items, and returns empty for unclosed quoted values. :pr:3128
  • WWWAuthenticate.to_header does not produce a trailing space when there
    are no parameters. :issue:3127
  • Transfer-Encoding is parsed as a set. :pr:3134
  • Request.host, get_host, and host_is_trusted validate the
    characters of the value. An empty value is no longer allowed. A Unix socket
    server address is ignored. The trusted_list argument to
    host_is_trusted is optional. :pr:3113
  • Fix multipart form parser handling of newline at boundary. :issue:3088
  • Response.make_conditional sets the Accept-Ranges header even if it
    is not a satisfiable range request. :issue:3108
  • merge_slashes merges any number of consecutive slashes. :issue:3121

Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

Deploying selfie with  Cloudflare Pages  Cloudflare Pages

Latest commit: 6c8e69f
Status: ✅  Deploy successful!
Preview URL: https://7a7b8dc7.selfie-4ye.pages.dev
Branch Preview URL: https://renovate-pypi-werkzeug-vulne.selfie-4ye.pages.dev

View logs

@renovate renovate Bot added the py label Oct 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants