
Как одна кривая регулярка может «положить» ваш сервер: разбираем уязвимость ReDoS
enamored_poc 11 минут назад Как одна кривая регулярка может «положить» ваш сервер: разбираем уязвимость ReDoS Средний 9 мин 283 Python * Информационная безопасность * Программирование * Обзор Как одна кривая регулярка...
GPT-5.6 31 Temmuz 2026'da yayınlanacak mı?
Вот важная новость с фронта ИИ: enamored_poc 11 минут назад Как одна кривая регулярка может «положить» ваш сервер: разбираем уязвимость ReDoS Средний 9 мин 283 Python * Информационная безопасность * Программирование * Обзор Как одна кривая регулярка может «положить» ваш сервер: разбираем уязвимость ReDoSАлерты кричат о 100% загрузке CPU, API лежит, сыплются таймауты и 502 ошибки. Но графики сети абсолютно спокойны. Вы смотрите логи и видите, что перед падением пришел всего один странный POST-запрос с email чуть длиннее обычного.
Никаких инъекций, просто пара лишних символов. И этого хватило, чтобы наглухо парализовать бэкенд. (TL;DR)Это классический ReDoS (Regular Expression Denial of Service).
Технические детали
В отличие от сетевого DDoS, здесь бьют не по ширине канала, а по алгоритмической сложности. Суть кроется в движках регулярных выражений (включая стандартный модуль re в Python), которые используют механизм бэктрекинга (поиска с возвратом). Если регулярка содержит логические изъяны — например, вложенные квантификаторы (a+)+ — специально подобранная строка заставляет парсер зайти в тупик.
Он начинает возвращаться назад и перебирать все возможные комбинации символов. Сложность вычислений растет экспоненциально: каждый лишний символ во входной строке удваивает время работы. В итоге строка длиной всего в 30–40 символов заставит процессор уйти в вычисления на десятилетия.
Регулярные выражения — мощнейший инструмент, но алгоритмические ошибки в них обходятся очень дорого. Если вы хотите понимать логику работы парсера под капотом и научиться сразу писать оптимальные, безопасные паттерны — приглашаю на мой авторский БЕСПЛАТНЫЙ курс «Python: Регулярные выражения (RegEx) с нуля». Далее мы препарируем эту уязвимость под капотом Python, напишем эксплойт для зависания собственного процессора и разберем, как защитить свой код от подобных катастроф.
Отраслевые последствия
Под капотом Python: Как работает модуль reВ мире регулярных выражений бал правят два основных архитектурных подхода: DFA (детерминированные конечные автоматы) и NFA (недетерминированные конечные автоматы). DFA работает предсказуемо и быстро. Он проходит по строке строго один раз слева направо, всегда точно зная, в каком состоянии находится.
Ему требуется ровно столько шагов, сколько символов в тексте, поэтому он гарантирует выполнение за линейное время . Однако из-за своей прямолинейности DFA ограничен в возможностях и не поддерживает многие продвинутые функции. Встроенный в Python модуль re (как и движки регулярных выражений в Perl, Java, JavaScript и PHP) использует NFA-движок.
Почему разработчики выбрали именно его? NFA дает огромную гибкость. Именно благодаря ему работают такие мощные конструкции, как «жадные» и «ленивые» квантификаторы, заглядывания (lookarounds) и, что самое главное, обратные ссылки (backreferences).
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





