TGViewer
Типичный программист Типичный программист @tproger · 78.4K subscribers
Post #14809 7.41K
Cloudflare лёг на 27 минут из-за одной регулярки, и ошибки в коде там не было

2 июля 2019 года edge-серверы Cloudflare упёрлись почти в 100% CPU, и сайты по всему миру перестали открываться.

Шаблон был устроен как (a+)+b: два вложенных квантификатора над одним классом символов. Дайте движку строку, которая почти совпадает, но в конце ломается, и он перебирает все способы разложить её между двумя плюсами. На 20 символах это полмиллиона попыток, на 40 — около 500 миллиардов, и одно ядро занято.

Ревью бессильно: регулярка компилировалась, тесты проходила, на обычном вводе работала. Это известный класс дыр, CWE-1333. Помогает выбор движка: re2, regexp в Go и regex в Rust собирают шаблон в детерминированный автомат и работают линейно, но обратные ссылки вроде \1 они не умеют.

В разборе на dev.to: как регулярка превращается в автомат и чего регуляркой не выразить.

#безопасность
  • ⚡ 13
  • ❤ 10
  • 👍 4
  • 👏 2
  • 🌚 2
  • 👌 1
  • 🐳 1
  • 🍌 1
  • 🙉 1
  • 🦄 1
  • 😘 1
More from @tproger
  1. Sep 20, 2026Мы вернулись из Суздаля с новым взглядом на магазин у дома Были на tech-туре MAGNIT TECH «…
  2. Sep 19, 2026Вопрос на разогрев: что из этого появилось раньше — ICQ, MySpace или Nokia 3310? Если заду…
  3. Sep 19, 2026Почему тип указателя не гарантирует безопасность памяти Указатель сохраняет тип, даже когд…
  4. Sep 19, 2026В Суздаль за DevOps Недавно мы съездили на «Без предела: Исходный код ритейла» от MAGNIT T…
  5. Sep 18, 2026Как Cloudflare освободила 100 ТБ памяти в DNS-кеше 1.1.1.1 Big Pineapple за сервисом 1.1.1…
  6. Sep 18, 2026От исходного кода до процессора: разберись, как работает программа 💻 Стартует практически…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →