Vulnerability Database · PyPI · Package report

werkzeug: vulnerability history, versions and safety

werkzeug is a package in the PyPI ecosystem. Vulert records 30 vulnerabilities for it across 116 releases, from Oct 2017 to Oct 2026. Each vulnerability names the versions it affects, the fixed version to move to, and a workaround where no fix has been published.

i
30 vulnerabilities recorded H4 M9 L1 U16
i
0 with no fix published

Every vulnerability has a patched version to move to.

i
12 in the last 12 months

Most recent disclosure 15 Oct 2026.

See the disclosure history →
i
0 malicious-package vulnerabilities

No published version shipped hostile code.

Vulert verdict on werkzeug 3.1.9 i

Updated on 23 Oct 2026

Action needed: 3.1.9 has 2 known vulnerabilities, but every one of them has a fix. Upgrade to the version listed below and you are clear.

Package health score 68/100
  • Security Unfixed issues
  • Maintenance Sustainable
  • Popularity Key ecosystem project
  • Community Moderate

What to do: Upgrade to the version that resolves each vulnerability below. Fix it, then keep watch: this version is affected today, and the next one may be too — Vulert alerts you when a new vulnerability lands. Monitor it with Vulert →

  • Current release 3.1.9 — affected i
  • Vulnerabilities on record 30 over 8 years · 12 in the last year i
  • Latest disclosure 15 Oct 2026 i
  • Highest CVSS 7.5 i
  • With no published fix 0 i
  • Depended on by 19,839 packages i
  • Stars 6,880 i
  • OpenSSF scorecard 6/10 i
  • Last release this month i
  • Licence BSD-3-Clause i

Version list, release dates, licence and dependants published by PyPI, refreshed 22 Oct 2026. Licence information is not legal advice.

Concerned about your application's security?

Vulert continues monitoring your dependencies and alerts you when new vulnerabilities are disclosed. No installation and no source-code access required.

01 Versions

Which versions are affected

Every version Vulert tracks for werkzeug, newest first, with the vulnerabilities recorded against each one. A version showing none has no vulnerability in the Vulert database — open it for the full picture on that release.

i
Version Released Vulert vulnerabilities Licence Fix published Details
3.1.9 27 Sep 2026 U2 BSD-3-Clause Yes Details →
3.1.8 02 Apr 2026 M1 U1 BSD-3-Clause Yes Details →
3.1.7 24 Mar 2026 M1 U1 BSD-3-Clause Yes Details →
3.1.6 19 Feb 2026 M1 U1 BSD-3-Clause Yes Details →
3.1.5 08 Jan 2026 M2 U2 BSD-3-Clause Yes Details →
3.1.4 29 Nov 2025 M3 U3 BSD-3-Clause Yes Details →
3.1.3 08 Nov 2024 M4 U4 non-standard Yes Details →
3.1.2 04 Nov 2024 M4 U4 non-standard Yes Details →
3.1.1 01 Nov 2024 M4 U4 non-standard Yes Details →
3.1.0 31 Oct 2024 M4 U4 non-standard Yes Details →
3.0.6 25 Oct 2024 M4 U4 non-standard Yes Details →
3.0.5 25 Oct 2024 M6 U6 non-standard Yes Details →
3.0.4 21 Aug 2024 M6 U6 non-standard Yes Details →
3.0.3 05 May 2024 M6 U6 non-standard Yes Details →
3.0.2 01 Apr 2024 H1 M6 U7 non-standard Yes Details →
2.3.8 08 Nov 2023 H1 M6 U7 non-standard Yes Details →
3.0.1 24 Oct 2023 H1 M6 U7 non-standard Yes Details →
3.0.0 30 Sep 2023 H1 M7 U8 non-standard Yes Details →
2.3.7 14 Aug 2023 H1 M6 U8 non-standard Yes Details →
2.3.6 08 Jun 2023 H1 M6 U8 BSD-3-Clause Yes Details →
2.3.5 07 Jun 2023 H1 M6 U8 BSD-3-Clause Yes Details →
2.3.4 08 May 2023 H1 M6 U8 BSD-3-Clause Yes Details →
2.3.3 01 May 2023 H1 M6 U8 BSD-3-Clause Yes Details →
2.3.2 28 Apr 2023 H1 M6 U8 BSD-3-Clause Yes Details →
2.3.1 27 Apr 2023 H1 M6 U8 BSD-3-Clause Yes Details →
2.3.0 25 Apr 2023 H1 M6 U8 BSD-3-Clause Yes Details →
2.2.3 14 Feb 2023 H1 M6 U8 BSD-3-Clause Yes Details →
2.2.2 08 Aug 2022 H2 M6 L1 U10 BSD-3-Clause Yes Details →
2.2.1 27 Jul 2022 H2 M6 L1 U10 BSD-3-Clause Yes Details →
2.2.0 23 Jul 2022 H2 M6 L1 U10 BSD-3-Clause Yes Details →
2.2.0a1 08 Jul 2022 H2 M6 L1 U10 BSD-3-Clause Yes Details →
2.1.2 28 Apr 2022 H2 M6 L1 U10 BSD-3-Clause Yes Details →
2.1.1 01 Apr 2022 H2 M6 L1 U10 BSD-3-Clause Yes Details →
2.1.0 28 Mar 2022 H2 M6 L1 U11 BSD-3-Clause Yes Details →
2.0.3 07 Feb 2022 H2 M6 L1 U11 BSD-3-Clause Yes Details →
2.0.2 06 Oct 2021 H2 M6 L1 U11 BSD-3-Clause Yes Details →
2.0.1 17 May 2021 H2 M6 L1 U11 BSD-3-Clause Yes Details →
2.0.0 11 May 2021 H2 M6 L1 U11 BSD-3-Clause Yes Details →
2.0.0rc5 03 May 2021 H2 M6 L1 U11 BSD-3-Clause Yes Details →
2.0.0rc4 16 Apr 2021 H2 M6 L1 U11 BSD-3-Clause Yes Details →
2.0.0rc3 17 Mar 2021 H2 M6 L1 U11 BSD-3-Clause Yes Details →
2.0.0rc2 03 Mar 2021 H2 M6 L1 U11 BSD-3-Clause Yes Details →
2.0.0rc1 08 Feb 2021 H2 M6 L1 U11 BSD-3-Clause Yes Details →
1.0.1 31 Mar 2020 H2 M6 L1 U10 BSD-3-Clause Yes Details →
1.0.0 06 Feb 2020 H2 M6 L1 U10 BSD-3-Clause Yes Details →
1.0.0rc1 31 Jan 2020 H2 M6 L1 U10 BSD-3-Clause Yes Details →
0.16.1 27 Jan 2020 H2 M6 L1 U10 BSD-3-Clause Yes Details →
0.16.0 19 Sep 2019 H2 M6 L1 U10 BSD-3-Clause Yes Details →
0.15.6 04 Sep 2019 H2 M6 L1 U10 BSD-3-Clause Yes Details →
0.15.5 17 Jul 2019 H2 M6 L1 U10 BSD-3-Clause Yes Details →
0.15.4 15 May 2019 H3 M6 L1 U11 BSD-3-Clause Yes Details →
0.15.3 14 May 2019 H3 M6 L1 U11 BSD-3-Clause Yes Details →
0.15.2 02 Apr 2019 H4 M6 L1 U13 BSD-3-Clause Yes Details →
0.15.1 21 Mar 2019 H4 M6 L1 U13 BSD-3-Clause Yes Details →
0.15.0 19 Mar 2019 H4 M6 L1 U13 BSD-3-Clause Yes Details →
0.14.1 31 Dec 2017 H4 M6 L1 U13 non-standard Yes Details →
0.14.0 31 Dec 2017 H4 M6 L1 U9 non-standard Yes Details →
0.13.0 07 Dec 2017 H4 M6 L1 U9 non-standard Yes Details →
0.12.2 16 May 2017 H4 M6 L1 U13 non-standard Yes Details →
0.12.1 15 Mar 2017 H4 M6 L1 U13 non-standard Yes Details →
0.12.0 10 Mar 2017 H4 M6 L1 U9 non-standard Yes Details →
0.11.15 30 Dec 2016 H4 M6 L1 U13 non-standard Yes Details →
0.11.14 30 Dec 2016 H4 M6 L1 U13 non-standard Yes Details →
0.11.13 26 Dec 2016 H4 M6 L1 U13 non-standard Yes Details →
0.11.12 26 Dec 2016 H4 M6 L1 U13 non-standard Yes Details →
0.11.11 31 Aug 2016 H4 M6 L1 U13 non-standard Yes Details →
0.11.10 24 May 2016 H4 M7 L1 U14 non-standard Yes Details →
0.11.9 24 Apr 2016 H4 M7 L1 U14 non-standard Yes Details →
0.11.8 15 Apr 2016 H4 M7 L1 U14 non-standard Yes Details →
0.11.7 14 Apr 2016 H4 M7 L1 U14 non-standard Yes Details →
0.11.6 14 Apr 2016 H4 M7 L1 U14 non-standard Yes Details →
0.11.5 22 Mar 2016 H4 M8 L1 U15 non-standard Yes Details →
0.11.4 14 Feb 2016 H4 M8 L1 U15 non-standard Yes Details →
0.11.3 19 Dec 2015 H4 M8 L1 U15 non-standard Yes Details →
0.11.2 12 Nov 2015 H4 M8 L1 U15 non-standard Yes Details →
0.11.1 10 Nov 2015 H4 M8 L1 U15 non-standard Yes Details →
0.11.0 08 Nov 2015 H4 M8 L1 U11 non-standard Yes Details →
0.10.4 26 Mar 2015 H4 M8 L1 U15 non-standard Yes Details →
0.10.2 26 Mar 2015 H4 M8 L1 U15 non-standard Yes Details →
0.10.1 03 Feb 2015 H4 M8 L1 U15 non-standard Yes Details →
0.10.0 29 Jan 2015 H4 M8 L1 U11 non-standard Yes Details →
0.9.6 07 Jun 2014 H4 M8 L1 U15 non-standard Yes Details →
0.9.5 06 Jun 2014 H4 M8 L1 U15 non-standard Yes Details →
0.9.4 25 Aug 2013 H4 M8 L1 U15 non-standard Yes Details →
0.9.3 25 Jul 2013 H4 M8 L1 U15 non-standard Yes Details →
0.9.2 18 Jul 2013 H4 M8 L1 U15 non-standard Yes Details →
0.9.1 14 Jun 2013 H4 M8 L1 U15 non-standard Yes Details →
0.9.0 13 Jun 2013 H4 M8 L1 U11 non-standard Yes Details →
0.8.3 05 Feb 2012 H4 M8 L1 U15 non-standard Yes Details →
0.8.2 16 Dec 2011 H4 M8 L1 U15 non-standard Yes Details →
0.8.1 30 Sep 2011 H4 M8 L1 U15 non-standard Yes Details →
0.7.2 30 Sep 2011 H4 M8 L1 U15 non-standard Yes Details →
0.8.0 29 Sep 2011 H4 M8 L1 U11 non-standard Yes Details →
0.7.1 26 Jul 2011 H4 M8 L1 U15 non-standard Yes Details →
0.7.0 24 Jul 2011 H4 M8 L1 U11 non-standard Yes Details →
0.6.2 23 Apr 2010 H4 M8 L1 U15 non-standard Yes Details →
0.6.1 13 Apr 2010 H4 M8 L1 U15 non-standard Yes Details →
0.6.0 19 Feb 2010 H4 M8 L1 U11 non-standard Yes Details →
0.5.1 09 Jul 2009 H4 M8 L1 U15 non-standard Yes Details →
0.5.0 25 Apr 2009 H4 M8 L1 U11 non-standard Yes Details →
0.4.1 11 Jan 2009 H4 M8 L1 U15 — Yes Details →
0.4.0 23 Nov 2008 H4 M8 L1 U11 — Yes Details →
0.3.1 24 Jun 2008 H4 M8 L1 U15 — Yes Details →
0.3.0 14 Jun 2008 H4 M8 L1 U11 — Yes Details →
0.2.0 13 Feb 2008 H4 M8 L1 U11 — Yes Details →
0.1.0 09 Dec 2007 H4 M8 L1 U11 — Yes Details →
0.1-py2.4 — H4 M8 L1 U11 — Yes Details →
0.1-py2.5 — H4 M8 L1 U11 — Yes Details →
0.2-py2.4 — H4 M8 L1 U11 — Yes Details →
0.2-py2.5 — H4 M8 L1 U11 — Yes Details →
0.3-py2.3 — H4 M8 L1 U11 — Yes Details →
0.3-py2.4 — H4 M8 L1 U11 — Yes Details →
0.3-py2.5 — H4 M8 L1 U11 — Yes Details →
0.3.1-py2.3 — H4 M8 L1 U11 — Yes Details →
0.3.1-py2.4 — H4 M8 L1 U11 — Yes Details →
0.3.1-py2.5 — H4 M8 L1 U11 — Yes Details →

All 116 versions Vulert tracks for this package. Severity counts are the vulnerabilities recorded against that exact release.

02 Disclosure history

How often vulnerabilities are recorded

  • 2017 1
  • 2019 3
  • 2020 1
  • 2021 1
  • 2022 3
  • 2023 6
  • 2024 3
  • 2025 1
  • 2026 11

Counted by the year Vulert recorded each vulnerability — the same date the table below shows as disclosed. 12 of the 30 were recorded in the last 12 months.

03 Vulnerabilities

Recorded vulnerabilities for werkzeug

The 5 most severe of 30 vulnerabilities recorded for this package

Search all 30 in the database →

Vulnerability wrong, a fix missing, or a package we should cover? Report it and we will fix the record. Report Vulnerability Provide Feedback

Updated: 23/Oct/2026 · Vulnerabilities in our DB: 524315

Subscribe to Vulert on Telegram
Daily digest of new CVEs, critical and high severity, affected packages and fixes — plus a weekly roundup.
Join the channel →

Questions

About werkzeug

Is werkzeug safe to use?

Vulert records 30 vulnerabilities for werkzeug in PyPI: 0 critical, 4 high, 9 medium and 1 low, plus 16 not yet rated. Every one of them has a published fix, so the practical answer is to run a supported release and keep it patched.

What is werkzeug's Vulert package health score?

Vulert scores werkzeug 68/100, which reads as usable, but worth attention. The score weighs the vulnerability record (40), maintenance and release cadence (25), adoption from dependents and stars (20) and community signals such as the OpenSSF scorecard and forks (15).

Is the latest version of werkzeug affected?

Yes. 3.1.9, the version you would install today, has 2 known vulnerabilities, and every one of them has a published fix. Upgrade to the version listed for each.

Which version of werkzeug should I use?

3.1.9 is the version Vulert recommends for the affected releases. The version table above lists every release with the vulnerabilities recorded against it, so you can confirm the range you actually run.

How many vulnerabilities does werkzeug have?

30 vulnerabilities are recorded for werkzeug in the PyPI ecosystem: 0 critical, 4 high, 9 medium and 1 low, plus 16 not yet rated. The ledger on this page lists the same counts next to the date of the most recent disclosure.

How often are new werkzeug vulnerabilities disclosed?

12 vulnerabilities were recorded for werkzeug in the last 12 months, and the oldest entry in this database dates to 23 Oct 2017. Recency matters more than a lifetime total: it shows how actively new issues are being disclosed for the package you are considering.

Which versions of werkzeug are affected?

Each vulnerability on this page lists the affected version range and the fixed version to move to. Open the vulnerability for the version you actually run — fixes are specific to a release line, not to the package as a whole.

How do I monitor werkzeug for upcoming vulnerabilities?

Upload the manifest or SBOM for your application at vulert.com/scanner and Vulert keeps checking the werkzeug version you actually run against new disclosures, then alerts you when one affects it. There is no installation and no source-code access required.