nltk PorterStemmer в версиях <= 3.10.2 (исправлено в 3.10.3) содержит отказ в обслуживании из-за неэффективной алгоритмической сложности в PorterStemmer.stem(). Помощник _is_consonant() проходит назад по всей серии конечных символов 'y' при каждом вызове, а _measure() вызывает его для каждой позиции основы, вызывая поведение O(n^2). Один ненадежный токен размером ~20–50 КБ, состоящий из длинной буквы «y», за которой следует соответствующий суффикс (например, «ness»), может закрепить ядро ЦП на время от нескольких секунд до минут, что повлияет на доступность.
Показать оригинальное описание (EN)
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.
Характеристики атаки
Последствия
Строка CVSS v4.0
Тип уязвимости (CWE)
Уязвимые продукты 1
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
Nltk Nltk
cpe:2.3:a:nltk:nltk:*:*:*:*:*:*:*:*
|
— |
3.10.3
|