← Zpět na Cloudflare

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

  1. 13:42 UTC Nasazeno nové pravidlo WAF s problematickým regulárním výrazem; CPU začíná stoupat ke 100 %.
  2. 13:45 UTC Globální nárůst chyb 502; provoz padá až o 82 %.
  3. 14:00 UTC Identifikována příčina v WAF Managed Rules.
  4. 14:09 UTC Globální vypnutí WAF obnovuje provoz — konec výpadku.
  1. č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 pilotu

Č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ů.