# Regulární výraz shodil Cloudflare. Na 27 minut.

Published: 2026-09-12

2. července 2019, 13:42 UTC: jedno nové pravidlo pro Cloudflare's Web Application Firewall je spuštěno ve více než 180 městech za zhruba dvě sekundy. Jedná se o XSS pravidlo v simulačním režimu, takže nic neblokuje, ale stále běží na každém požadavku a končí na .\*(?:.\*=.\*). PCRE se vrací zpět, každé jádro CPU obsluhující HTTP dosáhne 100 % a každá stránka proxyovaná přes Cloudflare vrací 502 po dobu 27 minut; provoz klesne o 82 %. Nouzový vypínač se nachází za Cloudflare Access, který se nachází za Cloudflare. Postmortem, z vlastního zápisu Cloudflare: CPU ochrana odstraněná týdny dříve při refaktorování, které mělo ušetřit CPU, postup, který umožnil jakémukoli pravidlu přeskočit staging, engine bez záruky složitosti, 11 příčin a 7 oprav. Verdikt k opravě: SHIP IT.

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

## Co toto video pokrývá

- 13:31–13:42 UTC: PR sloučen, CI zelený (žádný test CPU), Quicksilver tlačí pravidlo do 180+ měst; pravidla WAF přeskočí fáze DOG → PIG → Canary
- 13:45–14:07: první stránka; CPU 100 % celosvětově, provoz −82 %, 502 všude; interní ovládací panel je za Cloudflare Access, který je mimo provoz; některé pověření vypršely; zřídka trénovaný bypass
- 14:07–14:09: globální ukončení WAF; provoz a CPU normální po 27 minutách; 14:52 WAF zpět bez pravidla
- 2. července (15:50 UTC) a 12. července: Cloudflare zveřejňuje poznámku z téhož dne a úplnou analýzu incidentu; CPU ochrana znovu přidána, 3 868 pravidel znovu přečteno, postupné nasazení, přechod na regex engine s lineárním časem

## Přeložený přepis

Přeloženo z původního anglického vyprávění. Dostupné audio a titulky jsou řízeny YouTube.

0:00 Jeden regulární výraz se spustí na každém serveru Cloudflare najednou, a po dalších dvacet sedm minut jsou stránky za ním stránkou 502, což je pro firewall nejpřísnější možné nastavení. 2. července 2019, 13:42 UTC. Cloudflare zveřejňuje do dvou hodin: ne útok, špatné nasazení, provoz klesl o 82 procent. O deset dní později CTO John Graham-Cumming zveřejňuje úplnou analýzu incidentu, včetně regulárního výrazu, a Hacker News mu dává 698 bodů,

0:26 což je pro výpadek ovace ve stoje. Jak se to stane, proč je to možné a kdo je skutečně na vině. Toto je The Daily Diff, analýza incidentu. 13:31. Žádost o stažení se sloučí: jedno nové pravidlo firewallu proti cross-site scriptingu, v simulačním režimu, takže nic neblokuje. 13:37, testy projdou; žádný neměří CPU. 13:42, pravidlo je odesláno do 180 měst za dvě sekundy, protože pravidla WAF přeskočí fáze "pes", "prase" a "kanárek", které mají jiná vydání.

0:54 13:45, první stránka. 13:49, Hacker News má vlákno o stavové stránce, která stále uvádí, že všechny systémy jsou funkční. Pravidlo končí tečka-hvězdička, tečka-hvězdička, rovná se, tečka-hvězdička: cokoliv, pak cokoliv, pak znaménko rovnosti. PCRE hádá chamtivě, selže a vrací se zpět přes všechny ostatní rozdělení. x rovná se x trvá 23 kroků. Dvacet x po rovnítku: 555.

1:15 Dvacet x, žádné znaménko rovnosti: 4 067 kroků k nalezení ničeho. Spusťte to na každý požadavek a každé jádro je na sto procentech, důkladně nedělá nic. Dva strážci to měli zachytit. Limit CPU pro pravidla byl omylem odstraněn týdny dříve, při refaktorování, které mělo způsobit, že WAF bude používat méně CPU. A procedura umožňuje jakémukoli pravidlu přeskočit staging, protože pravidla existují k zastavení živých útoků; tento nebyl nouzový a přesto šel globálně.

1:37 14:00, WAF je identifikován; žádný útok. 14:02, někdo navrhuje globální ukončení: jedna komponenta, vypnuta, celosvětově. Přepínač je za Cloudflare Access. Cloudflare Access je za Cloudflare. Některá pověření vypršela kvůli nepoužívání, takže nejrychlejší síť na internetu stráví pět minut na bypassu, který nikdo netrénoval. 14:07, zabito. 14:09, provoz normální. git blame: nasazení s jednou rychlostí, globální; CPU ochrana refaktorovaná pryč

2:04 náhodou; regex engine bez horního limitu. Ne inženýr, který napsal pravidlo: analýza incidentu uvádí jedenáct příčin a nikoho nejmenuje. Oblast dopadu: 27 minut, 82 procent provozu, 100 procent CPU na každém jádře, v každém městě. Dashboard a API se nacházejí za stejným okrajem, takže zákazníci nemohou ani vypnout to. Hacker News, pod analýzou incidentu: měli jeden problém, použili regulární výraz, teď mají dva. Starý vtip. Stále se kompiluje.

2:28 Verdikt, analýza incidentu: SHIP IT. CPU ochrana je zpět, všech 3 868 pravidel je přečteno ručně, pravidla procházejí stagingem a engine se přesouvá na ten s lineárním časem zárukami, publikovaný Kenem Thompsonem v roce 1968. Pondělí: žádná tečka-hvězdička tečka-hvězdička v ničem, co běží na požadavek, a udržujte nouzový vypínač mimo věc, kterou zabíjí. Pošlete mi incident, o kterém stále nesmíte mluvit, v komentářích, nebo na the daily diff dot dev.

2:53 A to je dnešní diff. Jsem Niko z Axrisi. Sloučit zodpovědně.

## Zdroje

- [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
