Duplicate Advisory: Quadratic-time DoS in PorterStemmer via long runs of 'y'
High severity
GitHub Reviewed
Published
Aug 27, 2026
to the GitHub Advisory Database
•
Updated Sep 2, 2026
Withdrawn
This advisory was withdrawn on Sep 2, 2026
Description
Published by the National Vulnerability Database
Aug 27, 2026
Published to the GitHub Advisory Database
Aug 27, 2026
Last updated
Sep 2, 2026
Reviewed
Sep 2, 2026
Withdrawn
Sep 2, 2026
Duplicate Advisory
This advisory has been withdrawn because it is a duplicate of GHSA-ww6m-cw3f-q94g. This link is maintained to preserve external references.
Original Description
nltk PorterStemmer in versions <= 3.10.2 (fixed in 3.10.3) contains an inefficient-algorithmic-complexity denial of service in PorterStemmer.stem(). The _is_consonant() helper walks backward over the entire run of trailing 'y' characters on every call, and _measure() invokes it for each stem position, causing O(n^2) behavior. A single ~20-50 KB untrusted token consisting of a long run of the letter 'y' followed by a matching suffix (e.g., 'ness') can pin a CPU core for seconds to minutes, causing availability impact.
References