html.parser молча уходит в O(n²)
Заголовок issue на GitHub — «Another worst case quadratic complexity in HTMLParser». Не первая такая находка в этом парсере — уже показательно.
CVE-2026-15308: скармливаешь html.parser.HTMLParser данные кусками через feed() (как все стриминговые обёртки), а внутри висит незакрытый тег или комментарий — и парсер на каждый чанк заново пересканирует весь буфер и заново его склеивает. Оба действия квадратичные. Пара мегабайт кривого HTML — и CPU в потолке без единой строчки в логе.
9 июля Serhiy Storchaka закрыл баг: буфер теперь список чанков, join и разбор — только когда данных накопилось достаточно. Патч ушёл в ветки 3.10–3.15.
Если где-то html.parser получает сеть или файл кусками — это ровно тот случай, который не поймать юнит-тестом на короткой строке.
🔗 mail.python.org, github.com, github.com

August 5, 2026 21