# Регулярен израз свали Cloudflare. За 27 минути.

Published: 2026-09-12

2 юли 2019 г., 13:42 UTC: едно ново правило за защитната стена за уеб приложения на Cloudflare започва работа в над 180 града за около две секунди. Това е XSS правило в симулиран режим, така че не блокира нищо, но все пак се изпълнява при всяка заявка и завършва с .\*(?:.\*=.\*). PCRE прави обратно проследяване, всяко ядро на процесора, обслужващо HTTP, достига 100 %, и всеки проксиран от Cloudflare сайт връща 502 за 27 минути; трафикът спада с 82 %. Прекъсвачът се намира зад Cloudflare Access, който се намира зад Cloudflare. Посмъртен анализ, от собствения документ на Cloudflare: защитата на процесора, премахната седмици по-рано при рефакториране, предназначено да спести процесорно време, процедурата, която позволява на всяко правило да пропуска етапа на стейджинг, механизмът без гаранция за сложност, 11-те причини и 7-те корекции. Присъда за корекцията: SHIP IT.

Canonical: https://thedailydiff.dev/bg/video/2026-09-12-cloudflare-regex/

## Какво обхваща този видеоклип

- 13:31–13:42 UTC: PR слят, CI зелен (без CPU тест), Quicksilver избутва правилото към над 180 града; правилата на WAF пропускат етапите DOG → PIG → Canary
- 13:45–14:07: първа страница; CPU 100 % по целия свят, трафик −82 %, 502 навсякъде; вътрешният контролен панел е зад Cloudflare Access, който е неактивен; някои идентификационни данни са изтекли; рядко трениран байпас
- 14:07–14:09: глобално прекратяване на WAF; трафикът и CPU нормални след 27 минути; 14:52 WAF обратно без правилото
- 2 юли (15:50 UTC) и 12 юли: Cloudflare публикува бележката от същия ден и пълния посмъртен анализ; защитата на процесора е възстановена, 3 868 правила са препрочетени, поетапни разгръщания, преминаване към двигател за регулярни изрази с линейно време

## Преведен препис

Преведено от оригиналния английски разказ. Наличните аудио и субтитри се контролират от YouTube.

0:00 Един регулярен израз започва работа на всеки Cloudflare сървър едновременно, и през следващите двадесет и седем минути сайтовете зад него са страница с код 502, което за защитна стена е най-строгата възможна настройка. 2 юли 2019 г., 13:42 UTC. Cloudflare публикува до два часа: не е атака, лошо разгръщане, трафикът е намалял с 82 процента. Десет дни по-късно техническият директор Джон Греъм-Къминг публикува пълния посмъртен анализ, включително регулярен израз, и Hacker News му дава 698 точки,

0:26 което за прекъсване е бурни аплодисменти. Как се случва, защо е възможно и кой всъщност е виновен. Това е The Daily Diff, посмъртен анализ. 13:31. Заявка за изтегляне е слята: едно ново правило за защитна стена срещу междусайтови скриптове, в симулиран режим, така че не блокира нищо. 13:37, тестовете преминават; нито един не измерва процесора. 13:42, правилото се разгръща в 180 града за две секунди, защото правилата на WAF пропускат етапите куче, прасе и канарче, през които преминават другите версии.

0:54 13:45, първата страница. 13:49, Hacker News има тема за страницата със състоянието, която все още казва, че всички системи работят. Правилото завършва с точка-звезда, точка-звезда, равно, точка-звезда: всичко, след това всичко, след това знак за равенство. PCRE прави алчни предположения, проваля се и обратно проследява всички останали разделяния. x равно на x отнема 23 стъпки. Двадесет x-а след равното: 555.

1:15 Двадесет x-а, без знак за равенство: 4 067 стъпки, за да не намери нищо. Изпълнете това при всяка заявка и всяко ядро е на сто процента, като не прави нищо, изцяло. Двама охранители трябваше да го хванат. Лимитът на процесора за правилата беше премахнат по погрешка седмици по-рано, при рефакториране, предназначено да накара WAF да използва по-малко процесор. И процедурата позволява на всяко правило да пропуска стейджинг, защото правилата съществуват, за да спират живи атаки; тази не беше спешна и все пак стана глобална.

1:37 14:00, WAF е идентифициран; без атака. 14:02, някой предлага глобалното прекратяване: един компонент, изключен, по целия свят. Превключвателят е зад Cloudflare Access. Cloudflare Access е зад Cloudflare. Някои идентификационни данни са изтекли от неизползване, така че най-бързата мрежа в интернет прекарва пет минути в байпас, който никой не е тренирал. 14:07, убиване. 14:09, трафик нормален. git blame: разгръщане с една скорост, глобално; защитен процесор, рефактуриран по

2:04 случайност; двигател за регулярен израз без горна граница. Не инженерът, който е написал правилото: посмъртният анализ изброява единадесет причини и не назовава никого. Радиус на взрива: 27 минути, 82 процента от трафика, 100 процента процесор на всяко ядро, във всеки град. Таблото за управление и API се намират зад същия край, така че клиентите дори не могат да го изключат, Hacker News, под посмъртния анализ: имаха един проблем, използваха регулярен израз, сега имат два. Стара шега. Все още се компилира.

2:28 Присъда, посмъртно: ship it. Защитата на процесора е върната, всички 3 868 правила се четат на ръка, правилата преминават през стейджинг и двигателят преминава към такъв с линейно време гаранции, публикувани от Кен Томпсън през 1968 г. Понеделник: без точка-звезда точка-звезда във всичко, което се изпълнява на заявка, и дръжте превключвателя за убиване извън това, което убива. Изпратете ми инцидента, за който все още не ви е позволено да говорите, в коментарите или на daily diff dot dev.

2:53 И това е разликата за днес. Аз съм Нико от Axrisi. Обединявайте отговорно.

## Източници

- [John Graham-Cumming, "Details of the Cloudflare outage on July 2, 2019" (Jul 12, 2019)](https://blog.cloudflare.com/details-of-the-cloudflare-outage-on-july-2-2019/) — blog.cloudflare.com
- [Matthew Prince, "Cloudflare outage caused by bad software deploy (updated)" (Jul 2, 2019)](https://blog.cloudflare.com/cloudflare-outage/) — blog.cloudflare.com
- [Matthew Prince on X, Jul 2, 2019, 14:22 UTC](https://x.com/eastdakota/status/1146061591143538688) — x.com
- [Matthew Prince on X, Jul 2, 2019, 14:36 UTC ("No evidence yet attack related")](https://x.com/eastdakota/status/1146065231270907907) — x.com
- [Hacker News, Jul 2, 2019, 13:49 UTC — "Cloudflare Network Performance Issues" (631 points)](https://news.ycombinator.com/item?id=20334924) — news.ycombinator.com
- [Hacker News, Jul 2, 2019 — "Cloudflare outage caused by bad software deploy" (348 points)](https://news.ycombinator.com/item?id=20336332) — news.ycombinator.com
- [Hacker News, Jul 12, 2019 — "Details of the Cloudflare outage on July 2, 2019" (698 points)](https://news.ycombinator.com/item?id=20421538) — news.ycombinator.com
- [TechCrunch, Jul 2, 2019](https://techcrunch.com/2019/07/02/a-cloudflare-outage-is-impacting-sites-everywhere/) — techcrunch.com
