Cloudflare · 2. července 2019
Výpadek Cloudflare 2. 7. 2019 — jeden regulární výraz vytížil CPU na 100 %
Nové pravidlo WAF obsahovalo regulární výraz s katastrofálním zpětným navracením (backtracking), který vyšponoval vytížení CPU na 100 % na serverech Cloudflare po celém světě. Provoz spadl až o 82 % a weby globálně vracely chyby 502. Výpadek trval 27 minut a dotkl se zhruba miliardy uživatelů.
- Datum
- 2019-07-02
- Délka výpadku
- 27 min
- Zasažené regiony
- Global
- Závažnost
- critical
- Dopad
- Globálně — jádro proxy, CDN i WAF Cloudflare; uživatelé po celém světě viděli chyby 502
- Provider
- Cloudflare
Časová osa incidentu
- 13:42 UTC Nasazeno nové pravidlo WAF s problematickým regulárním výrazem; CPU začíná stoupat ke 100 %.
- 13:45 UTC Globální nárůst chyb 502; provoz padá až o 82 %.
- 14:00 UTC Identifikována příčina v WAF Managed Rules.
- 14:09 UTC Globální vypnutí WAF obnovuje provoz — konec výpadku.
- července 2019 začaly weby po celém světě, které stojí za Cloudflare, vracet chybu 502 Bad Gateway. Příčinou nebyl útok ani výpadek hardwaru, ale jediný řádek v konfiguraci — regulární výraz v novém bezpečnostním pravidle.
Co se přesně stalo
Cloudflare nasadil nové pravidlo do WAF Managed Rules, které mělo lépe blokovat škodlivý inline JavaScript. Jenže jeden z výrazů obsahoval konstrukci s katastrofálním backtrackingem — regulární výraz, jehož vyhodnocení v krajním případě exponenciálně roste. Na reálném provozu to vyšponovalo vytížení CPU na 100 % na serverech po celém světě, které zpracovávaly HTTP/HTTPS provoz.
Situaci zhoršilo, že ochranný mechanismus proti přetížení CPU regulárními výrazy byl při dřívějším refaktoringu WAF omylem odstraněn. Cloudflare nakonec provoz obnovil globálním vypnutím WAF — 27 minut po začátku.
Jak se před podobným výpadkem chránit
Výpadek je připomínkou, že i interní změna u providera, na kterou nemáte vliv, vás může položit. Bránit se proti chybě uvnitř CDN zevnitř nelze — jedinou pákou je nezávislá záloha.
- Nezávislý monitoring odhalí plošné chyby 502 napříč vašimi weby okamžitě, ne až z reklamací zákazníků.
- Záložní CDN nebo origin umožní odklonit provoz pryč od postižené sítě.
- Připravený a otestovaný failover je rozdíl mezi 27 minutami a hodinami výpadku.
Redundio hlídá dostupnost nezávisle na providerovi a při potvrzeném plošném výpadku překlopí provoz na zálohu automaticky.
Odhad dopadu
Ve špičce klesl provoz Cloudflare o 82 %. Postižena byla zhruba miliarda uživatelů napříč všemi weby za Cloudflare.
Co by udělalo Redundio
Redundio by vaši CDN přepnulo během minut.
Nezávislý monitoring pozná výpadek CDN i tehdy, když status stránka providera ještě svítí zeleně, ověří dvojitou kontrolou, co přesně selhalo, a překlopí DNS na zálohu — bez nočního zásahu.
Chci do pilotuZdroje
Časté otázky
27 minut — od 13:42 UTC do 14:09 UTC, kdy Cloudflare globálně vypnul WAF a provoz se obnovil.
Špatně napsaný regulární výraz v novém pravidle WAF způsobil nadměrné zpětné navracení (backtracking) a vytížil CPU na 100 % na serverech Cloudflare po celém světě. Ochranný mechanismus proti přetížení CPU byl přitom při dřívějším refaktoringu omylem odstraněn.
Provoz Cloudflare klesl ve špičce o 82 % a weby globálně vracely chyby 502. Výpadek se dotkl zhruba miliardy uživatelů.